一、路径与语法:最常见的三大硬伤
CALL指令对格式极其敏感,绝大多数“跳转不了”源于路径或符号错误。
1.路径分隔符混淆
◦错误:Windows习惯使用反斜杠\,但在GOM、GEE等主流引擎中,脚本路径必须使用正斜杠/。
-修正:将#CALL[\Quest\奖励.txt]@MAIN改为#CALL[/Quest/奖励.txt]@MAIN。HERO引擎部分版本可用.代替目录,如#CALL[.\奖励.txt]。
2.标签名缺失或错误
◦#CALL必须指定目标文件中的具体标签段(如@MAIN)。若只写文件名,引擎不知跳转到何处。
-修正:确保指令格式为#CALL[/路径/文件.txt]@标签名。检查标签名是否拼写错误,例如脚本内是[@MAIN],调用时写了@main(大小写需完全一致)。
3.文件编码与空格
◦被调用的外部.txt脚本若保存为UTF-8编码,或文件路径包含空格,会导致引擎无法识别。
-修正:用记事本打开脚本文件,另存为时选择ANSI编码。路径和文件名避免使用空格,可用下划线连接。
二、引擎差异:GOM/GEE与HERO的特殊规则
不同引擎的#CALL逻辑差异巨大,套用模板会导致直接失效。
引擎类型调用格式示例关键区别
GOM/GEE#CALL[Script/任务.txt]@开始路径通常以Script/开头,支持相对路径,标签需加[]。
HERO#CALL[.\QuestDiary\任务.txt]@开始路径支持.\表示当前目录,部分版本可用/或\。
BLUE#CALL\QuestDiary\任务.txt部分老版本不支持带参数跳转,需直接调用文件入口。
GEE引擎特有格式:部分版本要求“脚本名+标签名”格式,如#CALL任务.txt[@开始],若写成#CALL[任务.txt]@开始会无法跳转。
三、文件与权限:路径不存在与脚本死循环
1.绝对路径与相对路径
◦开发时若使用了绝对路径(如D:\MirServer\...),迁移服务器后路径变化会导致#CALL失效。
◦修正:统一改为相对路径。默认根目录为Mir200\Envir\QuestDiary。例如,文件在QuestDiary\NPC\功能.txt,调用路径写/NPC/功能.txt。
2.脚本死循环拦截
◦若脚本中存在#CALL与GOTO互相嵌套,或循环次数超过M2限制,M2会报“脚本死循环”并强制终止执行,表现为跳转失败。
◦修正:检查!Setup.txt中的ScriptGotoCountLimit参数,或在循环中加入DelayGoto延时,避免无限循环。
四、实战修复:从报错日志到验证步骤
1.查看M2报错日志
◦打开M2Server→查看→脚本错误日志。若看到FileNotFound或Cannotfindlabel,直接按日志提示的路径修正文件或标签名。
2.分段验证法
◦Step1:先在同一脚本内测试#CALL[@内部标签](如支持),确认基础指令有效。
◦Step2:调用一个最简单的测试文件(如test.txt),内容仅一行[@TEST]#SAY测试成功。
◦Step3:逐步将路径改为目标路径,每次修改后使用M2的重新加载脚本功能测试。
3.HERO引擎变量冲突
◦若#CALL不执行且无报错,检查脚本顶部是否定义了与系统冲突的自定义变量。HERO引擎部分版本对自定义变量支持较差,建议改用N系列数字变量(如N1、N2)。
最后确认:修改脚本后,必须完全重启M2Server或执行@reloadscript重载脚本,仅小退游戏无法刷新引擎缓存。
CALL指令对格式极其敏感,绝大多数“跳转不了”源于路径或符号错误。
1.路径分隔符混淆
◦错误:Windows习惯使用反斜杠\,但在GOM、GEE等主流引擎中,脚本路径必须使用正斜杠/。
-修正:将#CALL[\Quest\奖励.txt]@MAIN改为#CALL[/Quest/奖励.txt]@MAIN。HERO引擎部分版本可用.代替目录,如#CALL[.\奖励.txt]。
2.标签名缺失或错误
◦#CALL必须指定目标文件中的具体标签段(如@MAIN)。若只写文件名,引擎不知跳转到何处。
-修正:确保指令格式为#CALL[/路径/文件.txt]@标签名。检查标签名是否拼写错误,例如脚本内是[@MAIN],调用时写了@main(大小写需完全一致)。
3.文件编码与空格
◦被调用的外部.txt脚本若保存为UTF-8编码,或文件路径包含空格,会导致引擎无法识别。
-修正:用记事本打开脚本文件,另存为时选择ANSI编码。路径和文件名避免使用空格,可用下划线连接。
二、引擎差异:GOM/GEE与HERO的特殊规则
不同引擎的#CALL逻辑差异巨大,套用模板会导致直接失效。
引擎类型调用格式示例关键区别
GOM/GEE#CALL[Script/任务.txt]@开始路径通常以Script/开头,支持相对路径,标签需加[]。
HERO#CALL[.\QuestDiary\任务.txt]@开始路径支持.\表示当前目录,部分版本可用/或\。
BLUE#CALL\QuestDiary\任务.txt部分老版本不支持带参数跳转,需直接调用文件入口。
GEE引擎特有格式:部分版本要求“脚本名+标签名”格式,如#CALL任务.txt[@开始],若写成#CALL[任务.txt]@开始会无法跳转。
三、文件与权限:路径不存在与脚本死循环
1.绝对路径与相对路径
◦开发时若使用了绝对路径(如D:\MirServer\...),迁移服务器后路径变化会导致#CALL失效。
◦修正:统一改为相对路径。默认根目录为Mir200\Envir\QuestDiary。例如,文件在QuestDiary\NPC\功能.txt,调用路径写/NPC/功能.txt。
2.脚本死循环拦截
◦若脚本中存在#CALL与GOTO互相嵌套,或循环次数超过M2限制,M2会报“脚本死循环”并强制终止执行,表现为跳转失败。
◦修正:检查!Setup.txt中的ScriptGotoCountLimit参数,或在循环中加入DelayGoto延时,避免无限循环。
四、实战修复:从报错日志到验证步骤
1.查看M2报错日志
◦打开M2Server→查看→脚本错误日志。若看到FileNotFound或Cannotfindlabel,直接按日志提示的路径修正文件或标签名。
2.分段验证法
◦Step1:先在同一脚本内测试#CALL[@内部标签](如支持),确认基础指令有效。
◦Step2:调用一个最简单的测试文件(如test.txt),内容仅一行[@TEST]#SAY测试成功。
◦Step3:逐步将路径改为目标路径,每次修改后使用M2的重新加载脚本功能测试。
3.HERO引擎变量冲突
◦若#CALL不执行且无报错,检查脚本顶部是否定义了与系统冲突的自定义变量。HERO引擎部分版本对自定义变量支持较差,建议改用N系列数字变量(如N1、N2)。
最后确认:修改脚本后,必须完全重启M2Server或执行@reloadscript重载脚本,仅小退游戏无法刷新引擎缓存。

