错误提示“CHANGEGLORY + 9000000”出现在元宝充值使者-3.txt第1359行,核心问题在于CHANGEGLORY指令仅支持整型数值且存在上限限制。多数引擎对荣耀值(Glory)字段的数据库存储类型为Integer(最大值2147483647),但部分支付回调直接传入9000000以上数值,导致溢出或类型不匹配,引发脚本中断。
检查充值脚本数值格式。打开D:MirServerMir200EnvirMarket_Def元宝充值使者-3.txt,定位到第1359行附近,确认是否写为:
ACT
CHANGEGLORY + 9000000
若充值金额由支付平台动态传入(如),需在执行前校验数值范围。添加判断语句限制单次最大值,例如:
IF
SMALL 2000000
ACT
CHANGEGLORY +
否则跳过或提示“充值金额超出单次上限”。
确认荣耀值字段实际用途。部分引擎将Glory字段用于称号或排行榜,而非等同于元宝。若目的是发放充值货币,应使用CHANGEGOLD(金币)或自定义变量(如HONORPOINT)。检查角色数据库表(如TBL_HERO)中对应字段名,确保脚本操作的是正确列。若用荣耀值代替元宝,需同步修改客户端显示逻辑,否则玩家无法看到到账。
验证支付回调数据传递。支付平台通知服务端时,参数是否完整传入脚本。在脚本开头添加日志记录:
ACT
SENDMSG 7 "充值参数: "
查看D:MirServerLog目录下当日日志,确认是否为预期数字。若为空或非数字(如订单号),说明回调地址配置错误,未正确解析金额字段。
修复数据库字段类型限制。使用DBC2000工具打开HeroDB,找到TBL_HERO表,检查Glory字段属性。若为Integer类型,右键修改为Largeint(64位整数)可支持更大数值。修改后重启DBSrv200和M2,否则新设置不生效。
替代方案:改用物品或变量发放。若荣耀值机制不稳定,可改为给予绑定元宝道具。例如:
ACT
GIVE 元宝袋 90
并在元宝袋的ItemInfo中设置双击触发CHANGEGOLD + 100000。此方式绕过Glory字段限制,且便于追踪发放记录。
最后,清理异常角色状态。对已因该错误卡住的角色,在QFunction-0.txt中添加临时修复命令:
[@FixGlory]
IF CHECKITEM 元宝充值凭证
ACT
CHANGEGLORY + 9000000
DELITEM 元宝充值凭证 1
通过GM命令@FixGlory手动补发,避免重复执行原错误脚本。
传奇脚本CHANGEGLORY指令报错及荣誉点充值无法领取解决方法
来源:
作者:
点击:

