传奇脚本报错现场处置:服务端NPC与挂机脚本排错手册

来源: 作者: 点击:
先分清报错在哪一层:M2弹窗红字是服务端脚本问题,登录器弹“当前页面脚本错误”是客户端/登录器环境,按键精灵报错是挂机前端问题。三层处理完全不一样,别混着改。

一、服务端脚本报错(M2红字 / NPC点不开 / 标签跳转失败)
1. 看M2控制台红色日志
格式一般是:
[Error] Script file 'QManage.txt' line 105: Syntax error
记下文件名和行号,去 Mir200\Envir 下找对应文件,用Notepad++打开跳到那一行。

2. 常见语法坑
• [@Login]、[@main] 标签名拼错或少了冒号换行

• #IF 没闭合,缺 #ACT / #ELSE / 结束标记

- 全角空格、中文引号、特殊符号混进脚本
• 发物品名和 StdItems.DB 不一致,日志会报“找不到物品”

• 变量没初始化:登录段引用了没SET过的积分/次数变量

• #CALL 路径写错,文件实际在 Market_Def\功能\ 但脚本写错层级

3. 编码与缓存
• 所有脚本文件统一存 ANSI/GBK,别用带BOM的UTF-8

• 改完删 Mir200\Log\ScriptCache.dat,重载NPC或重启M2

• 一次只改一处,改完重启看报错数是否减少,别批量乱改

4. 引擎不兼容
GOM的 MapMove 在Hero里要写 ChangeMap;GEE自定义变量在Blue不认;翎风变量系统和Hero的P/G/A不通用。先确认M2主程序是GOM/GEE/Hero/Blue哪一系,再按对应引擎命令手册改命令,别跨引擎硬抄。

5. 插件与路径
• 插件类“命令未识别”:进M2插件管理看dll是否加载,杀软删了的加白恢复

• 服务端路径别放中文/空格,放 D:\Mir2Server 这种纯英文目录

• C盘Program Files下权限不足,改完不生效,换盘或给目录完全控制权限

二、登录器弹“脚本发生错误”
1. 把服务端和登录器挪到纯英文无空格路径,重新用配置器生成登录器
2. 注册VBScript/JScript组件,管理员身份运行配置器
3. 关杀软、加白名单,检查DLL是否被拦
4. 客户端Data/Envir脚本和服务端版本对齐,两端不一致会解析失败
5. 账号进 Administrators 组,注册表 Legend of Mir 键值有权限写

三、按键精灵挂机脚本报错/空跑/闪退
1. 窗口绑定失败
• 单开一个游戏窗口,不改窗口标题

• 关掉多余客户端进程,避免句柄冲突

• 按键精灵用管理员身份运行,开窗口抓取权限

2. 找图找色失效
• 用抓抓工具重新取色,加颜色容差

• 分辨率固定、系统缩放调100%、画质恢复默认

- 别开DWM合成器拦截,关游戏模式

3. 运行到一半停
• 关键操作前加 SetForegroundWindow 保焦点

• 连续点击/循环里加 Delay 300~800,别零延时连发

• For/If 首尾必须闭合,缺 Return 或 Next 会编译失败

4. 调试方法
• 关键步骤插 TracePrint 输出变量和步骤名,看调试窗口停在哪

• 单步调试正常但直接跑崩,就是延时和焦点问题

• 先还原未改过的原版脚本,确认环境没问题再逐步加功能

四、通用排错顺序(照做能解决80%)
1. 备份原脚本,只在测试服改
2. 看M2红字,记文件+行号
3. 注释法:把QFunction-0.txt按段用;注释一半,重启定位区段
4. 修语法→存ANSI→删缓存→重载NPC
5. 复现触发,看日志是否还报
6. 引擎/网关/插件版本成套,不混搭

五、几个容易忽略的点
• 登录就报错的,优先查 QuestDiary\Login.txt 和 QManage.txt 的[@Login]段

• 地图触发看 MapQuest.txt 指向的脚本是否存在

- 装备显示??是DB编码问题,特效不触发是客户端补丁没对上
• 端口10048冲突用 netstat -ano 查占用杀掉

• 时间格式报错把系统改24小时制,或清掉Setup.txt里异常时间参数

改脚本别靠猜,日志给的行号就是答案。先定位再动手,改一处测一次,比整包替换文件稳得多。