传奇服务端改了脚本游戏里没变化排查

来源: 作者: 点击:
先确认你改的是哪类脚本,再按对应方式让服务端重新读盘。传奇引擎启动时会把脚本读进内存,运行中改硬盘文件,内存里的旧逻辑不会自己变。

一、NPC 对话 / 功能脚本(Market_Def、QuestDiary)
改了 NPC 说的话、菜单、发物品、接任务没反应:
• GOM/GEE:M2 → 控制/脚本管理 → 重新加载 → 重新加载所有 NPC / 重新加载 Merchant / 重新加载 QuestDiary

- HERO:M2 → 脚本管理 → 重新加载所有脚本
• 老 LEG:很多版本不支持热重载,直接关 M2 重启

重载完让玩家小退到角色界面再进,别站原地点 NPC,有时候对话缓存没清。

二、刷怪 MonGen.txt
改了怪物名、坐标、数量、时间,进图没新怪:
• M2 → 重新加载 → MonGen / 怪物刷新

• 或者重启 M2

注意:已经刷出来的怪不会消失,要等旧怪死掉或刷新周期到了才看得到变化。怪物名必须和 Monster.DB 里一致,写“祖玛卫士”但库里是“ZuMaWeiShi”,引擎当没这怪,一行都不刷。

三、掉落 MonItems
改了爆率进图杀怪还是不掉:
• 重新加载 MonItems / 物品掉落

• 杀的怪必须是新刷新出来的,刚才还活着的旧怪用老掉落表

• 文件名叫“祖玛卫士.txt”,数据库里怪物名不对就匹配不上

- M2 里“爆率控制 / 全局爆率倍数”如果是 0,你写 1/100 也当 0 处理

四、地图 MapInfo.txt
改了 PK 模式、回城点、是否允许行会、是否掉装备:
• 重新加载 MapInfo

- 已进图的人要重新进地图才生效
• 地图号写错、地图文件 100.map 不存在,配置再对也白搭

五、登录/全局触发 QManage、QFunction、MapQuest
改了上线送东西、死亡触发、攻击触发没反应:
这类脚本很多引擎不会热重载,或者只重载一部分。最稳是重启 M2。QFunction 改了不生效,先去看 M2 日志有没有“Script Error / Syntax error / Unknown command”。有报错,引擎可能整段跳过,游戏里当然没变化。

六、文件改错地方
常见低级错:
• 改了桌面上备份的“杂货商.txt”,服务端读的是 Mir200\Envir\Market_Def\杂货商.txt

• QuestDiary 里写了新功能,但 NPC 的 Market_Def 文件里没 #CALL 过去

- 文件名大小写/空格:“成长任务.txt” 和 “成长任务 .txt” 不是同一个
• 改了子目录里的文件,但主菜单没引用

看文件修改时间,确认你编辑器保存的那份,就是服务端目录里的那份。

七、编码和隐藏字符
用记事本另存成 UTF-8 带 BOM,老引擎第一行会被 BOM 头搞坏,[@main] 不认,NPC 点开空白或关对话框。
处理:
• Notepad++ / VSCode 打开

• 编码转 ANSI 或 UTF-8 无 BOM(看你引擎,老 LEG 多 ANSI,新 GEE/HERO 多 UTF-8 无 BOM)

- 全角逗号、全角冒号、全角空格、Tab 和空格混用,都会让脚本解析异常
• 文件属性别是“只读”,整个 Mir200 目录也别只读,不然保存了其实没写进去

八、语法错了但没看日志
脚本有错时表现就是“没变化”:
• #IF 后面没条件

• #ACT 写了引擎不认识的命令(ADDGAMEGOLD 塞进 GOM、GameGold 塞进 LEG)

• [@main] 拼成 [@Main] 但引擎大小写敏感

• #CALL 路径写错:CALL[任务\发奖.txt] @reward 实际路径是 QuestDiary\任务\发奖.txt

• 末尾多全角空格、多花括号

M2 控制台红色字、Mir200\Log\Script.log / Error.log 会写“第几行、哪个文件、什么错”。没报错≠生效,可能是被跳过。

九、触发条件根本没满足
脚本加载成功了,但你测试方式不对:
• 写“等级≥35 才发奖”,你 30 级去点,当然没东西

• 写“CHECK [000] 1 才能领”,你没做过前置任务

• 写“非安全区生效”,你站土城药店门口试,不触发

• 写“杀死祖玛教主后触发”,你杀的是小白

先放一个最简单测试:

[@main]
#ACT
#SAY
脚本已加载

能说出“脚本已加载”,说明 NPC 和文件链路通了;还说没变化,就是没重载或改错文件。

十、微端 / 客户端补丁问题
服务端脚本对了,但玩家看到的东西不变:
• NPC 形象没变:客户端 Data/UI 补丁没更新,不是脚本问题

- 任务栏/按钮不显示:客户端 UI 没这功能,服务端发了客户端也不画
• 装备属性没变:StdItems.DB 没改,只改了脚本发装备,发出来还是老属性

这种“游戏里没变化”不是脚本没加载,是客户端资源/数据库没配合。

十一、缓存和进程没退干净
改完重启还不行:
• M2Server.exe 关了但又有第二个 M2 在跑

• 启动器点了好几次,两个网关

• 改的是 A 服务端,起的是 B 服务端

• 有 ScriptCache.dat 的老引擎,删掉缓存再起

• 杀软把 Mir200 目录锁了,文件保存被拦截

十二、最快排错顺序
1. 看 M2 日志有没有 Script Error
2. 看文件修改时间,确认改的就是服务端那份
3. 改 NPC:重载所有 NPC → 玩家小退重进
4. 改 MonGen:重载刷怪 → 等旧怪刷新
5. 改 MapInfo:重载地图 → 重新进图
6. 改 QManage/QFunction:直接重启 M2
7. 放一句 #SAY 测试文本,能出来说明加载链通
8. 还不行就换记事本编码、查 #CALL 路径、查命令名是否对应当前引擎

十三、各引擎一句话
• LEG:能重启就重启,热重载不可信

• GOM/GEE:M2 控制里重载 NPC / MonGen / MapInfo,QFunction 和 QManage 改了重启最稳

- HERO:脚本管理里重载,lua 插件改了有时要重载插件甚至重启
• 翎风/3K/M3:看自带文档,命令集不一样,别把 GOM 脚本硬抄过去

改脚本没变化,90% 不是引擎坏了,是“改错文件 / 没重载 / 编码坏了 / 日志里已经报错你没看 / 触发条件没满足”。先放一句测试话,再重载,再看日志,比瞎重启一百次有用。