当反复出现“第XX行脚本错误”却找不到原因时,往往是:
幽灵符号:不可见的空格/换行符
变量污染:跨脚本变量冲突(如<STR(S攻击)>被意外修改)
引擎差异:LEG/翎风/GOM对函数支持不同
🛠️高效定位法(附实操截图)
第一步:精准日志追踪
在Mir200\Envir\MapQuest_Def\QManage.txt首行插入:
AutoRunNPCFIRST1
AutoRunNPCDAY1
添加调试命令(实时记录变量值):
SENDMSG6"[脚本监控]当前攻击力:<STR(S攻击)>"
SAVETOLOG"D:\Logs\变量追踪.txt"//路径自行修改
第二步:可视化工具排查
工具名称作用使用技巧
Notepad++显示隐藏字符视图→显示符号→显示空格
M2脚本调试器实时检测函数返回值右键点击报错行→单步跟踪
LogViewer过滤错误日志搜索关键词:ERRFail
📌示例:在Notepad++中2840行发现黄色空格→删除后立即解决
🚫高危错误避坑清单
--❌死亡陷阱:变量未初始化直接运算
SetNewItemValue40=<STR(S防御)>+3--当S$防御为空时崩溃
--✅安全写法:先赋默认值
MOVS$防御0
SetNewItemValue40=<STR(S防御)>
--❌致命语法:混淆中英文符号
SetNewItemValue4,0+3--中文逗号引发解析失败
--✅纠正:全角符号转半角
SetNewItemValue40+3
💥引擎崩溃急救方案
情景:修改脚本后M2闪退,无法启动
删除临时文件
清空Mir200\GuildBase\和Log\文件夹
还原最后修改
将Envir文件夹替换为修改前备份
检查关键配置
核对!Setup.txt中ScriptPath=路径是否正确
确认DBServer中物品数据库无重复ID
终极重置(适用于翎风引擎)
执行命令:ReloadAdmin→ReloadNpc→ReloadMonItems
🌐引擎兼容性对照表
函数LEG引擎GOM引擎翎风引擎应对方案
SetNewItemValue✓✓✓参数统一用英文逗号分隔
CHECKVAR✗✓✓LEG引擎改用CHECK[]
INC✓✓✗翎风需改用MOV+CALC
幽灵符号:不可见的空格/换行符
变量污染:跨脚本变量冲突(如<STR(S攻击)>被意外修改)
引擎差异:LEG/翎风/GOM对函数支持不同
🛠️高效定位法(附实操截图)
第一步:精准日志追踪
在Mir200\Envir\MapQuest_Def\QManage.txt首行插入:
AutoRunNPCFIRST1
AutoRunNPCDAY1
添加调试命令(实时记录变量值):
SENDMSG6"[脚本监控]当前攻击力:<STR(S攻击)>"
SAVETOLOG"D:\Logs\变量追踪.txt"//路径自行修改
第二步:可视化工具排查
工具名称作用使用技巧
Notepad++显示隐藏字符视图→显示符号→显示空格
M2脚本调试器实时检测函数返回值右键点击报错行→单步跟踪
LogViewer过滤错误日志搜索关键词:ERRFail
📌示例:在Notepad++中2840行发现黄色空格→删除后立即解决
🚫高危错误避坑清单
--❌死亡陷阱:变量未初始化直接运算
SetNewItemValue40=<STR(S防御)>+3--当S$防御为空时崩溃
--✅安全写法:先赋默认值
MOVS$防御0
SetNewItemValue40=<STR(S防御)>
--❌致命语法:混淆中英文符号
SetNewItemValue4,0+3--中文逗号引发解析失败
--✅纠正:全角符号转半角
SetNewItemValue40+3
💥引擎崩溃急救方案
情景:修改脚本后M2闪退,无法启动
删除临时文件
清空Mir200\GuildBase\和Log\文件夹
还原最后修改
将Envir文件夹替换为修改前备份
检查关键配置
核对!Setup.txt中ScriptPath=路径是否正确
确认DBServer中物品数据库无重复ID
终极重置(适用于翎风引擎)
执行命令:ReloadAdmin→ReloadNpc→ReloadMonItems
🌐引擎兼容性对照表
函数LEG引擎GOM引擎翎风引擎应对方案
SetNewItemValue✓✓✓参数统一用英文逗号分隔
CHECKVAR✗✓✓LEG引擎改用CHECK[]
INC✓✓✗翎风需改用MOV+CALC

