当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇M2脚本发生错误时的定位与修正处理流程

热度:
传奇服务端弹出“脚本发生错误”或M2控制台刷红字,不要点掉重开游戏,先读日志里的文件名、行号、错误描述,再回对应文件改。Hero、GOM、GEE、Blue引擎路径大同小异,处理顺序一致。

一、先读日志锁文件行号
M2启动或玩家触发功能时报错,日志位置分三处:
•Hero引擎:MirServer\Mir200\Log\ScriptError.log,同时M2控制台也会滚红字

•GOM引擎:直接看M2Server底部“日志”面板或控制台

-GEE引擎:MirServer\GeeLog\Script.log
报错格式通常是Scriptfile'QuestDiary\QFunction-0.txt'line56:Syntaxerror或Market_Def\屠龙商人-3.txt第18行语法错误。记三样东西:文件路径、Line行号、后面跟着的Command/Syntax/Field描述。用Notepad++打开那个文件,Ctrl+G跳行,别全局搜。

二、按错误描述对号入座
1.Syntaxerror/缺少')'/Invalidcommand
九成是半角全角混用。#IF、#ACT、GIVE、CHECKITEM这些必须英文半角,中文逗号句号括号引号全部替换成英文。参数缺漏也归这类,比如CHECKGAMEGOLD100少了比较符应写CHECKGAMEGOLD<100,GIVE屠龙没写数量,括号()[]不成对。
2.未知命令/命令未定义
脚本用了当前引擎不认的指令。把GOM新脚本丢进Hero老引擎、或反过来都会这样,比如ThroughHum与AllowThrough跨引擎不通用。对照所用引擎的命令手册改写法,或升级引擎版本;插件提供的命令(大背包、自动拾取)要确认PlugList.txt里DLL已加载且没被杀软隔离。
3.标签未找到/Labelnotfound
GOTO@back、#CALL[任务.txt]@奖励指向的[@back][@奖励]在目标文件里不存在,或者标签名大小写、空格不对。补标签或改跳转名,标签必须顶格写、[@xxx]格式、前面不能有空格制表符。
4.Field'xxx'notfound
不是txt脚本错,是StdItems.DB或角色库缺字段,常伴随装备触发脚本一起崩。用DBC2000给数据库补对应字段(Integer默认0),不是改txt能解决的。
5.编码乱码导致整文件加载失败
记事本另存成UTF-8或UTF-8BOM后,中文变乱码、命令断行。Notepad++转ANSI(GBK)覆盖保存;若引擎明确要UTF-8无BOM才选那个。顺手开“显示所有字符”,删掉行首行尾从网页复制来的不可见控制符。
6.#IF后没#ACT/结构断层
#IF必须跟条件,下一行起#ACT或#ELSEACT/#SAY,中间夹普通文本、注释错位、连续两个#IF都会让解析器中断。按“#IF→条件→#ACT→执行”重排段落。

三、NPC与任务脚本专属检查点
•NPC脚本在Mir200\Envir\Market_Def\,文件名要和MapQuest_def里调用的完全一致,带空格都不行。

•任务脚本在Envir\QuestDiary\,QFunction-0.txt管穿戴/使用/死亡触发,QManage.txt管登录/升级/转生,入口标签[@Main][@Login]不能拼错。

-脚本里GIVE的物品名、地图编号,必须能在StdItems.DB、MapInfo.txt查到,名字多一个空格就识别不到。

四、改完怎么重载才生效
•只改了txt脚本:M2菜单“管理→脚本管理→重载NPC脚本”或“重读QF/QManage”,Hero/GOM热重载就行;GEE点“重新加载所有脚本”。

-改了StdItems.DB/数据库:必须关M2→存盘→重开M2,热重载读不到DB变动。
•改了客户端外观(StdItems.def):客户端补丁同步换,不然服务端对、客户端显示问号。

-反复莫名报错:关M2,删Mir200\Log下ScriptError.log历史、删Cache文件夹,重启让引擎重读。

五、没有行号时的笨办法
日志被清或只提示“脚本错误”不带头:把疑似文件分段用;注释(传奇脚本单行注释是;,不是//),每次留一段取消注释,重启M2看哪段一放开就红,缩小到具体十几行再逐行对半角、标签、命令拼写。

按“日志行号→文件跳转→半角/编码/标签/命令四件套→按类型重载”走,大部分脚本发生错误都不用动版本和引擎,改txt就能消红。
[顶部]