一、路径与文件基础检查
1.路径分隔符与大小写
不同引擎对路径格式要求严格。GOM、GEE、996引擎通常要求使用正斜杠/且区分大小写;HERO引擎部分版本仅支持反斜杠\。若路径中包含中文或空格,极易导致解析失败。
2.文件物理存在性
#call指令是硬链接,文件不存在则直接静默失败。需手动进入服务器目录Mir200\Envir\QuestDiary逐级核对文件夹和文件名,确认目标.txt文件真实存在。
3.标签名匹配
被调用脚本内必须存在严格对应的标签段。例如调用@MAIN,脚本内必须是[@MAIN],多一个空格或少一个括号都会导致跳转无效。
二、脚本语法格式修正(分引擎)
1.GOM/GEE/996引擎(主流)
•外部调用:#CALL[\功能系统\奖励.txt]@发放
-注意:路径以QuestDiary为根目录,开头用\,标签前加@。若使用Script目录,格式为#CALL[Script\奖励.txt]。
2.HERO/BLUE引擎(老版本)
•外部调用:#CALL\功能系统\奖励.txt@发放
-内部跳转:#CALL@内部标签
•差异:老引擎常省略中括号[],且路径分隔符必须为\。
3.常见错误写法对比
错误写法问题修正
#CALL[奖励.txt]缺少标签名#CALL[奖励.txt]@MAIN
#CALL[\功能\奖励]缺少文件后缀#CALL[\功能\奖励.txt]@MAIN
#CALL[奖励.txt][@MAIN]标签格式错误#CALL[奖励.txt]@MAIN
三、编码格式与重载流程
1.强制ANSI编码
脚本文件(.txt)必须保存为ANSI编码。若使用UTF-8或带BOM的格式,引擎读取时会出现乱码或直接报错,导致#call无法解析。
2.正确的重载姿势
修改脚本后,必须在M2Server→管理→脚本管理中执行“重载NPC脚本”或“重载全部脚本”。仅刷新网页或重启游戏客户端无效。
四、高级排查:日志与变量冲突
1.查看引擎日志
打开MirServer\Log\目录下的ScriptError.log或M2控制台日志。若看到Filenotfound或Labelnotfound报错,直接按日志提示的路径修正。
2.变量与逻辑拦截
检查#call语句上方的#IF条件是否过于严苛(如检测不存在的变量),导致#ACT未能触发。可在#call前加一行SENDMSG6测试点确认是否执行到该行。
3.循环调用死锁
避免在QManage.txt或QFunction.txt中通过#call形成A→B→A的无限循环,部分引擎会强制中断此类逻辑。
五、特殊引擎差异说明
•GOM引擎:若路径正确仍无效,尝试在路径前加Script前缀,如#CALL[Script\文件.txt]。
•GEE引擎:支持相对路径,如#CALL[..\QuestDiary\文件.txt]@MAIN。
•BLUE引擎:对标签名大小写极其敏感,@Main和@MAIN被视为两个不同标签。
若以上步骤仍无法解决,请提供具体的#call代码行及引擎版本,以便进一步定位是语法兼容还是目录权限问题。
1.路径分隔符与大小写
不同引擎对路径格式要求严格。GOM、GEE、996引擎通常要求使用正斜杠/且区分大小写;HERO引擎部分版本仅支持反斜杠\。若路径中包含中文或空格,极易导致解析失败。
2.文件物理存在性
#call指令是硬链接,文件不存在则直接静默失败。需手动进入服务器目录Mir200\Envir\QuestDiary逐级核对文件夹和文件名,确认目标.txt文件真实存在。
3.标签名匹配
被调用脚本内必须存在严格对应的标签段。例如调用@MAIN,脚本内必须是[@MAIN],多一个空格或少一个括号都会导致跳转无效。
二、脚本语法格式修正(分引擎)
1.GOM/GEE/996引擎(主流)
•外部调用:#CALL[\功能系统\奖励.txt]@发放
-注意:路径以QuestDiary为根目录,开头用\,标签前加@。若使用Script目录,格式为#CALL[Script\奖励.txt]。
2.HERO/BLUE引擎(老版本)
•外部调用:#CALL\功能系统\奖励.txt@发放
-内部跳转:#CALL@内部标签
•差异:老引擎常省略中括号[],且路径分隔符必须为\。
3.常见错误写法对比
错误写法问题修正
#CALL[奖励.txt]缺少标签名#CALL[奖励.txt]@MAIN
#CALL[\功能\奖励]缺少文件后缀#CALL[\功能\奖励.txt]@MAIN
#CALL[奖励.txt][@MAIN]标签格式错误#CALL[奖励.txt]@MAIN
三、编码格式与重载流程
1.强制ANSI编码
脚本文件(.txt)必须保存为ANSI编码。若使用UTF-8或带BOM的格式,引擎读取时会出现乱码或直接报错,导致#call无法解析。
2.正确的重载姿势
修改脚本后,必须在M2Server→管理→脚本管理中执行“重载NPC脚本”或“重载全部脚本”。仅刷新网页或重启游戏客户端无效。
四、高级排查:日志与变量冲突
1.查看引擎日志
打开MirServer\Log\目录下的ScriptError.log或M2控制台日志。若看到Filenotfound或Labelnotfound报错,直接按日志提示的路径修正。
2.变量与逻辑拦截
检查#call语句上方的#IF条件是否过于严苛(如检测不存在的变量),导致#ACT未能触发。可在#call前加一行SENDMSG6测试点确认是否执行到该行。
3.循环调用死锁
避免在QManage.txt或QFunction.txt中通过#call形成A→B→A的无限循环,部分引擎会强制中断此类逻辑。
五、特殊引擎差异说明
•GOM引擎:若路径正确仍无效,尝试在路径前加Script前缀,如#CALL[Script\文件.txt]。
•GEE引擎:支持相对路径,如#CALL[..\QuestDiary\文件.txt]@MAIN。
•BLUE引擎:对标签名大小写极其敏感,@Main和@MAIN被视为两个不同标签。
若以上步骤仍无法解决,请提供具体的#call代码行及引擎版本,以便进一步定位是语法兼容还是目录权限问题。

