传奇脚本CHANGEGLORY报错与充值领取修复

来源: 作者: 点击:
报错原因:数值溢出与命令不兼容

错误提示 CHANGEGLORY + 9000000 位于 元宝充值使者-3.txt 第1359行,核心问题在于数值超出引擎上限或命令语法错误。

1. 数值溢出:CHANGEGLORY 命令用于增加人物荣誉点(Glory),但多数引擎(尤其是老版本)将荣誉点定义为短整型(ShortInt),最大值仅为 32767。脚本中一次性增加 9000000 点,严重超出变量存储上限,导致引擎报错或直接归零。
2. 命令不兼容:部分引擎(如GOM、GEE)不支持 CHANGEGLORY + N 的加法语法,仅支持 CHANGEGLORY N(直接设置)或使用 GAMEGOLD 命令增加元宝。
3. 逻辑错误:你用“支付平台荣誉点”兑换“元宝”,但脚本却试图给人物加“荣誉点”,属于变量赋值逻辑错误。

修复方案:修改脚本代码

第一步:备份文件
修改前,务必备份 D:\MirServer\Mir200\Envir\Market_Def\元宝充值使者-3.txt 文件。

第二步:修正脚本内容
用文本编辑器(如Notepad++)打开报错文件,定位到第1359行附近。找到类似以下代码段:
#ACT
CHANGEGLORY + 9000000


方案A:改为元宝增加(推荐)
如果你的本意是充值后领取元宝,应将命令改为 GAMEGOLD(通用命令):
#ACT
GAMEGOLD + 9000000


方案B:修正为直接赋值(如果必须用荣誉点)
如果引擎支持 CHANGEGLORY 但仅不支持加法,改为直接赋值(注意:此命令可能直接覆盖当前值):
#ACT
CHANGEGLORY = 9000000


方案C:分段累加(兼容性最强)
若必须增加大额荣誉点且引擎不支持一次性大额加法,使用循环脚本(以GOM引擎为例):
#ACT
MOV N1 900
While N1 > 0
CHANGEGLORY + 10000
DEC N1 1
EndWhile


第三步:重启服务端
修改保存后,必须完全关闭 M2Server.exe(游戏引擎),再重新启动,修改才会生效。

支付平台对接排查

你提到“用支付平台荣誉点设置的充值金额领不出来”,除了脚本命令错误,还需检查以下环节:

1. 变量读取错误:支付平台通常将金额写入 QuestDiary 文件夹下的文本文件或 G/A 变量。脚本应使用 CALCVAR 或 MOV 命令从文件中读取数值,而非直接写死 + 9000000。
2. 条件检测缺失:在 #ACT(执行段)之前,应有 #IF 条件检测玩家在支付平台是否有未领取的记录。若缺少检测,脚本会无条件执行,导致数据混乱。
3. 引擎版本过低:部分老引擎不支持长整型运算。建议更新引擎至较新版本(如GOM引擎的2021年后的版本),以支持大额数值运算。

验证与回退

修改后,在M2引擎的“查看-列表信息-游戏命令”中搜索 CHANGEGLORY,确认该命令在当前引擎中的正确语法。若修改后仍报错,恢复备份文件,并检查M2启动时的“脚本错误”提示,逐行排查语法错误。