一、脚本错误提示来源与日志定位
当游戏内弹出“脚本错误”或M2引擎报错时,首要任务是锁定错误文件与行号。不要盲目修改,先查看M2控制台(M2Server.exe)弹出的错误日志。日志通常会直接显示类似 [脚本错误] NPC:QFunction 行:58 命令:CHECKITEMW 的信息。其中“NPC:”后是脚本文件名(如QFunction-0.txt),“行:”后是具体出错行数。若M2未显示,需进入M2菜单“查看→日志信息”或检查 Mir200\Log\ 目录下的日志文件。
二、装备脚本常见错误类型与修正
装备脚本错误主要集中在属性配置、触发逻辑及文件关联上。
1. 数据库与脚本属性不匹配
装备数据存于 StdItems.DB(数据库)和 ItemScript.txt(脚本)两处,需确保ID一致。
- 基础属性失效:检查 StdItems.DB 中该装备的“攻击、防御、需要等级”等字段是否填写正确(如“4-7”不能写成“4-”)。
- 脚本属性异常:若脚本中使用了 CHECKITEM(检查物品)但参数错误(如物品名带空格或不存在),或 UPGRADEITEM(升级物品)参数顺序颠倒,均会报错。需严格对照引擎命令手册核对参数个数与顺序。
2. 触发脚本逻辑与结构错误
装备的穿戴、取下、鉴定脚本通常写在 QFunction-0.txt 中,通过 [@TakeOnX](穿戴)和 [@TakeOffX](取下)标签触发(X为装备位置编号)。
- 死循环:在触发段(如穿戴后 #ACT)内直接使用 GOTO 跳转回原标签,可能导致引擎报“脚本死循环”。应使用 BREAK 或调整逻辑。
- 标签缺失:若脚本中使用了 #CALL 调用外部文件,但目标文件或标签(如 @GiveItem)不存在,会直接报错。检查路径和标签名。
3. 文件编码与格式问题
这是最隐蔽的常见错误。传奇引擎(尤其是老版本)通常要求脚本文件编码为 ANSI。
- 乱码报错:若用记事本保存为UTF-8格式,中文注释或变量可能导致引擎解析失败。用记事本打开脚本,点击“文件→另存为”,将编码选为“ANSI”后覆盖保存。
- 符号错误:#SAY 对话框中的换行符 \ 缺失或多余,以及 < 和 > 标签不配对,都会导致脚本加载失败。
三、修正流程与重载步骤
1. 备份:修改前备份 StdItems.DB 和 Envir 目录下的相关脚本文件。
2. 定位:根据M2报错日志找到具体文件(如 Market_Def\ 下的NPC脚本或 QFunction-0.txt)和行号。
3. 修正:使用纯文本编辑器(如Notepad++)修正语法错误。重点检查命令拼写、变量初始化(使用前需 MOV 赋值)及条件判断逻辑(#IF 条件是否永远无法成立)。
4. 重载:修改后,在M2菜单选择“重新加载→重读NPC脚本”或“重读QFunction脚本”。若修改了数据库(StdItems.DB),通常需要重启M2引擎才能生效。
四、特殊问题:客户端补丁与脚本冲突
有时服务端脚本无误,但客户端显示“未知属性”或报错,可能是补丁问题。
- 补丁缺失:自定义装备的图片或特效补丁(.wil/.wzl文件)未正确放入客户端 Data 目录,导致读取错乱。
- 版本不匹配:客户端版本过低,无法解析服务端脚本中的新命令(如某些扩展功能)。建议使用与服务端要求匹配的纯净客户端(如十周年或特定版)作为基底。
总结:修正脚本错误的关键是“看日志→找文件→查语法→改编码”。对于装备脚本,务必同步检查数据库基础属性与脚本触发逻辑,避免因一个标点符号或空格导致整体失效。

