【M2引擎报错必看】传奇脚本调试秘籍:5分钟揪出隐藏错误+防崩指南

来源: 作者: 点击:
当反复出现 “第XX行脚本错误” 却找不到原因时,往往是:
幽灵符号:不可见的空格/换行符

变量污染:跨脚本变量冲突(如<STR(S攻击)>被意外修改)

引擎差异:LEG/翎风/GOM对函数支持不同

🛠️ 高效定位法(附实操截图)
第一步:精准日志追踪

在 Mir200\Envir\MapQuest_Def\QManage.txt 首行插入:
AutoRun NPC FIRST 1

AutoRun NPC DAY 1


添加调试命令(实时记录变量值):
SENDMSG 6 "[脚本监控] 当前攻击力:<STR(S攻击)>"
SAVETOLOG "D:\Logs\变量追踪.txt" //路径自行修改

第二步:可视化工具排查

工具名称 作用 使用技巧

Notepad++ 显示隐藏字符 视图 → 显示符号 → 显示空格
M2脚本调试器 实时检测函数返回值 右键点击报错行 → 单步跟踪
LogViewer 过滤错误日志 搜索关键词:ERR Fail

📌 示例:在Notepad++中2840行发现 黄色空格 → 删除后立即解决

🚫 高危错误避坑清单

-- ❌ 死亡陷阱:变量未初始化直接运算
SetNewItemValue 4 0 = <STR(S防御)>+3 -- 当S$防御为空时崩溃
-- ✅ 安全写法:先赋默认值
MOV S$防御 0
SetNewItemValue 4 0 = <STR(S防御)>

-- ❌ 致命语法:混淆中英文符号
SetNewItemValue 4,0 + 3 -- 中文逗号引发解析失败
-- ✅ 纠正:全角符号转半角
SetNewItemValue 4, 0 + 3

💥 引擎崩溃急救方案

情景:修改脚本后M2闪退,无法启动
删除临时文件

清空 Mir200\GuildBase\ 和 Log\ 文件夹
还原最后修改

将 Envir 文件夹替换为 修改前备份
检查关键配置

核对 !Setup.txt 中 ScriptPath= 路径是否正确

确认 DBServer 中物品数据库无重复ID
终极重置(适用于翎风引擎)

执行命令: ReloadAdmin → ReloadNpc → ReloadMonItems

🌐 引擎兼容性对照表
函数 LEG引擎 GOM引擎 翎风引擎 应对方案

SetNewItemValue ✓ ✓ ✓ 参数统一用英文逗号分隔
CHECKVAR ✗ ✓ ✓ LEG引擎改用 CHECK [ ]
INC ✓ ✓ ✗ 翎风需改用 MOV + CALC