先别删服务端、别重装。QQ礼包类报错90%都在日志里写着,改对应行就行。
一、先抓日志,不要瞎猜
开M2Server(GameSrv),看底部日志或进Mir200\Log\ScriptError.log。
日志里一般长这样:
Envir\QuestDiary\QQ礼包.txt第18行:未知命令/缺少#ENDIF/标签未找到/参数错误
记住三样东西:哪个文件、第几行、什么错。没日志就开脚本调试(!Setup.txt或MirServer.ini里ScriptDebug=1),重启再看Log\ScriptLog.txt。
二、QQ礼包脚本最常死的几个点
1.编码错了
用记事本/Notepad++打开QFunction-0.txt、QManage.txt、QuestDiary\QQ礼包.txt。
只要存成UTF-8带BOM、Unicode,中文一解析就炸。
改法:记事本“另存为”→编码选ANSI;Notepad++选“转为ANSI编码”再保存。
2.命令拼错
GIVE写成GIV,SENDMSG写成SENDMS,MOV写成MVO,#IF/#ACT少写,goto漏@。
正确例子:
[@main]
IF
CHECKLEVELEX>10
ACT
GIVE裁决之杖1
SENDMSG6领取成功
ELSEACT
SENDMSG7等级不足
命令必须和当前引擎(GOM/GEE/Hero/翎风等)说明书对得上,跨引擎抄脚本必炸。
3.标签跳转找不到
[@main]里写#CALL[..\QuestDiary\QQ礼包\领取.txt]@领取
但领取.txt里根本没有[@领取],就会“未找到子程序”。
检查:被调用文件存在、文件夹名大小写一致、标签名完全一样(@QQLibao和@Qqlibao不是一回事)。
4.物品名/物品ID不对
GIVE屠龙1,但StdItems.DB/Items.txt里叫“屠龙刀”,或者ID超出数据库范围。
改法:去物品库复制准确名称/Idx,别手打中文。
5.条件没闭合
IF后面没条件,或者#IF…#ACT…后面该#ELSEACT没写,玩家没道具时脚本直接断。
礼包脚本至少写:有道具发奖、没道具提示、已领取拦截,三层分支。
6.变量没声明/被冲掉
用A变量/HUMAN变量存“已领过”,但QManage.txt登录时又被MOV清成0,玩家永远能领。
改法:一次性礼包用永久个人变量;每日礼包用“日期+账号”名单或机器人每日重置。
7.插件没加载
礼包系统用了CHECKTEXTLIST、CheckQQBind、GIVEITEM高级命令,但PlugList.txt没挂对应dll。
表现:启动报“未知命令/插件未加载”。
改法:确认引擎版本→装同版本插件→M2插件管理里勾上→重启。
三、NPC点开没反应,但不是红错
查Merchant.txt:NPC地图、坐标、脚本路径对不对。
查Market_Def\XXX.txt:有没有[@main]入口。
查按钮:<领取/@getgift>这种,跳转标签@getgift必须在脚本里存在。
玩家点NPC没字出来=脚本没加载或[@main]没了;有字但一点就“脚本错误”=领戎支炸了。
四、通用修法(照做能救回大部分)
1.备一份原文件再改,别直接覆盖。
2.看日志→打开报错文件→跳到行号→只改那几行。
3.所有标点英文半角,行尾别留空格,[@标签]独占一行。
4.编码转ANSI。
5.礼物名去物品库复制。
6.#CALL路径用相对路径,别堆中文空格。
7.改完别只点“重载”,关掉DBServer/LoginGate/M2Server全进程,按顺序重启。
8.还不行就用二分法:把QQ礼包.txt内容大段加;注释,只留[@main]+一行SENDMSG6测试已启动,能出消息说明入口没事,再一段段放开。
五、没动过脚本一启动就报
大概率是服务端解压不完整、杀软把txt/dll删了、或者你下了A引擎却塞了B引擎的礼包包。
处理:
•关杀软,重新解压原包
•核对引擎类型(GOM/GEE/Hero/3K/翎风)
•从同版本原包把QuestDiary\QQ礼包、QFunction-0.txt、QManage.txt抽出来替换
•别把“QQ登录/礼包码/渠道礼包”不同版脚本混塞进一个端
六、最小可跑模板(伪代码,按自己引擎改命令)
[@main]
欢迎领取QQ礼包!
<领取/@get_qq_gift>
[@get_qq_gift]
IF
CHECKVARHUMANQQGift1
ACT
SENDMSG7你已经领过
BREAK
IF
CHECKLEVELEX>1
ACT
MOVHUMANQQGift1
SAVEVARHUMANQQGift
GIVE金币100000
GIVE随机装备箱1
SENDMSG6QQ礼包领取成功
ELSEACT
SENDMSG7等级不足
七、还救不了就按这个顺序丢锅
先日志→再编码→再命令→再物品库→再插件→再NPC挂载→最后换同版本原版脚本。
别一上来改引擎、别删HeroDB、别把整个Envir覆盖成别的端,不然礼包修好、任务全废。
一、先抓日志,不要瞎猜
开M2Server(GameSrv),看底部日志或进Mir200\Log\ScriptError.log。
日志里一般长这样:
Envir\QuestDiary\QQ礼包.txt第18行:未知命令/缺少#ENDIF/标签未找到/参数错误
记住三样东西:哪个文件、第几行、什么错。没日志就开脚本调试(!Setup.txt或MirServer.ini里ScriptDebug=1),重启再看Log\ScriptLog.txt。
二、QQ礼包脚本最常死的几个点
1.编码错了
用记事本/Notepad++打开QFunction-0.txt、QManage.txt、QuestDiary\QQ礼包.txt。
只要存成UTF-8带BOM、Unicode,中文一解析就炸。
改法:记事本“另存为”→编码选ANSI;Notepad++选“转为ANSI编码”再保存。
2.命令拼错
GIVE写成GIV,SENDMSG写成SENDMS,MOV写成MVO,#IF/#ACT少写,goto漏@。
正确例子:
[@main]
IF
CHECKLEVELEX>10
ACT
GIVE裁决之杖1
SENDMSG6领取成功
ELSEACT
SENDMSG7等级不足
命令必须和当前引擎(GOM/GEE/Hero/翎风等)说明书对得上,跨引擎抄脚本必炸。
3.标签跳转找不到
[@main]里写#CALL[..\QuestDiary\QQ礼包\领取.txt]@领取
但领取.txt里根本没有[@领取],就会“未找到子程序”。
检查:被调用文件存在、文件夹名大小写一致、标签名完全一样(@QQLibao和@Qqlibao不是一回事)。
4.物品名/物品ID不对
GIVE屠龙1,但StdItems.DB/Items.txt里叫“屠龙刀”,或者ID超出数据库范围。
改法:去物品库复制准确名称/Idx,别手打中文。
5.条件没闭合
IF后面没条件,或者#IF…#ACT…后面该#ELSEACT没写,玩家没道具时脚本直接断。
礼包脚本至少写:有道具发奖、没道具提示、已领取拦截,三层分支。
6.变量没声明/被冲掉
用A变量/HUMAN变量存“已领过”,但QManage.txt登录时又被MOV清成0,玩家永远能领。
改法:一次性礼包用永久个人变量;每日礼包用“日期+账号”名单或机器人每日重置。
7.插件没加载
礼包系统用了CHECKTEXTLIST、CheckQQBind、GIVEITEM高级命令,但PlugList.txt没挂对应dll。
表现:启动报“未知命令/插件未加载”。
改法:确认引擎版本→装同版本插件→M2插件管理里勾上→重启。
三、NPC点开没反应,但不是红错
查Merchant.txt:NPC地图、坐标、脚本路径对不对。
查Market_Def\XXX.txt:有没有[@main]入口。
查按钮:<领取/@getgift>这种,跳转标签@getgift必须在脚本里存在。
玩家点NPC没字出来=脚本没加载或[@main]没了;有字但一点就“脚本错误”=领戎支炸了。
四、通用修法(照做能救回大部分)
1.备一份原文件再改,别直接覆盖。
2.看日志→打开报错文件→跳到行号→只改那几行。
3.所有标点英文半角,行尾别留空格,[@标签]独占一行。
4.编码转ANSI。
5.礼物名去物品库复制。
6.#CALL路径用相对路径,别堆中文空格。
7.改完别只点“重载”,关掉DBServer/LoginGate/M2Server全进程,按顺序重启。
8.还不行就用二分法:把QQ礼包.txt内容大段加;注释,只留[@main]+一行SENDMSG6测试已启动,能出消息说明入口没事,再一段段放开。
五、没动过脚本一启动就报
大概率是服务端解压不完整、杀软把txt/dll删了、或者你下了A引擎却塞了B引擎的礼包包。
处理:
•关杀软,重新解压原包
•核对引擎类型(GOM/GEE/Hero/3K/翎风)
•从同版本原包把QuestDiary\QQ礼包、QFunction-0.txt、QManage.txt抽出来替换
•别把“QQ登录/礼包码/渠道礼包”不同版脚本混塞进一个端
六、最小可跑模板(伪代码,按自己引擎改命令)
[@main]
欢迎领取QQ礼包!
<领取/@get_qq_gift>
[@get_qq_gift]
IF
CHECKVARHUMANQQGift1
ACT
SENDMSG7你已经领过
BREAK
IF
CHECKLEVELEX>1
ACT
MOVHUMANQQGift1
SAVEVARHUMANQQGift
GIVE金币100000
GIVE随机装备箱1
SENDMSG6QQ礼包领取成功
ELSEACT
SENDMSG7等级不足
七、还救不了就按这个顺序丢锅
先日志→再编码→再命令→再物品库→再插件→再NPC挂载→最后换同版本原版脚本。
别一上来改引擎、别删HeroDB、别把整个Envir覆盖成别的端,不然礼包修好、任务全废。

