传奇脚本荣誉点充值错误排查与修复方案

来源: 作者: 点击:
一、错误代码根源解析

脚本报错“CHANGEGLORY + 9000000”,表明M2引擎不支持单次增加900万荣誉点的操作,核心是变量越界或格式错误。

错误直接原因
1. 数值溢出:早期引擎对CHANGEGLORY命令支持的最大值有限制(常见为±21亿),单次900万虽未超限,但可能触发其他检测。
2. 参数格式错误:CHANGEGLORY命令的正确格式为CHANGEGLORY 控制符(+/-) 数值。报错行写为CHANGEGLORY + 9000000,中间缺少空格或符号错误均会引发解析失败。

二、逐行调试与修复步骤

第一步:定位并打开问题脚本文件
根据报错路径 D:\MirServer\Mir200\Envir\Market_Def\元宝充值使者-3.txt,用记事本或代码编辑器打开,找到第1359行。

第二步:修正命令格式(两种可能)
检查1359行附近代码,常见错误写法及修正如下:

错误写法1(符号与数值间无空格)
# 原错误代码
CHANGEGLORY +9000000
# 修正为(+/-与数值间必须有空格)
CHANGEGLORY + 9000000


错误写法2(多参数或格式混乱)
# 原错误代码
CHANGEGLORY+ 9000000
# 修正为
CHANGEGLORY + 9000000


第三步:处理数值过大问题
若格式正确仍报错,需将大数值拆分为多次累加。
# 原单行命令(可能引发溢出)
CHANGEGLORY + 9000000
# 拆分为多行执行(每次100万,分9次)
# 在1359行附近替换为:
#Begin
CHANGEGLORY + 1000000
CHANGEGLORY + 1000000
CHANGEGLORY + 1000000
CHANGEGLORY + 1000000
CHANGEGLORY + 1000000
CHANGEGLORY + 1000000
CHANGEGLORY + 1000000
CHANGEGLORY + 1000000
CHANGEGLORY + 1000000
#End


三、支付平台与脚本的对接验证

充值荣誉点(GLORY)需与支付平台回调参数匹配,常见问题如下:

1. 变量不匹配
支付平台回调时传递的参数名(如@GainGlory)与脚本中接收的变量名(如<GainGlory>)必须一致。检查脚本顶部是否有接收代码:
# 脚本中应有类似接收语句
#If
CHECK [XXX] 1
#Act
MOV N$荣誉点数 <GainGlory>
# 然后使用 N$荣誉点数 变量进行操作


2. 数据类型错误
若支付平台传递的是字符串,而脚本直接用于CHANGEGLORY命令,会报错。需用MOV命令转为数字变量:
# 正确写法
MOV N$充值点数 <$STR(GainGlory)>
CHANGEGLORY + <$STR(N$充值点数)>


四、完整脚本段修正示例

假设原1359行附近脚本如下(常见错误混杂):
#If
CHECK [充值成功] 1
#Act
CHANGEGLORY+ <$STR(GainGlory)>
SENDMSG 0 玩家<$USERNAME>充值成功!

修正后应为:
#If
CHECK [充值成功] 1
#Act
MOV N$荣誉点数 <$STR(GainGlory)>
# 加入数值上限判断(单次不超过200万)
#If
LARGE N$荣誉点数 2000000
#Act
MOV N$单次增加 2000000
DEC N$荣誉点数 2000000
CHANGEGLORY + <$STR(N$单次增加)>
# 可循环或分次,此处简单示例
CHANGEGLORY + <$STR(N$荣誉点数)>
#ElseAct
CHANGEGLORY + <$STR(N$荣誉点数)>
#EndIf
SENDMSG 0 玩家<$USERNAME>充值成功!
CLEAR [充值成功]


五、测试与重载流程

1. 备份原脚本:修改前务必备份元宝充值使者-3.txt。
2. 修正并保存:按上述方案修正1359行及附近代码,保存文件。
3. 重载NPC:在游戏服务器中,打开M2Server → 查看 → 列表信息 → NPC管理,找到“元宝充值使者”,点击“重载NPC”。
4. 测试充值:使用支付平台测试小额(如1000点)充值,确认荣誉点正常到账且无报错后,再测试大额。

若仍报错,检查M2引擎控制台是否有其他相关错误提示,并确认CHANGEGLORY命令在引擎帮助文档中的准确格式。部分老引擎可能需要更新至支持该命令的版本。