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

传奇修改脚本后启动报错老兵181行与QFunction2341行修复

热度:
先别重装服务端,也别整包替换Envir。你这种“昨天改了一点、第二次启动才报”基本是改坏语法、编码变乱、或者M2缓存了旧脚本后重新加载新错误。两个文件分开处理,按下面顺序做能少走弯路。

一、先备份再动
把D:\MirServer\Mir200\Envir\Market_Def\老兵\传送员_土城-3.txt复制成传送员_土城-3_bak.txt;把D:\MirServer\Mir200\Envir\Market_Def\QFunction-0.txt复制成QFunction-0_bak.txt。改崩了随时回滚。别用系统记事本直接改,装个Notepad++,行号、编码、不可见字符都能看。

二、看老兵/传送员_土城-3.txt第181行
用Notepad++打开,Ctrl+G输入181跳过去,再看177到185行整段。报错带“�\”说明很可能编码或隐藏字符出问题,但行号报错也可能是上一处结构没闭合导致181被引擎误判。重点查这几项:
1.第181行及附近有没有“�”“?”之类乱码,有就删掉整行重新手打,不从网页、QQ、Word复制粘贴。
2.传送类命令格式:地图号、坐标必须是数字,用半角逗号空格分隔,例如MAPMOVE3320350或MOV3320350,看引擎习惯;不要把“320,350”写成中文逗号,不要写“320.350”“320350”混格式。土城地图号按你版本确认,很多服土城是3,但不代表所有端都是3。
3.[@标签]是否独立成行,前面别留空格和Tab;GOTO@xxx、CALL路径@xxx的目标标签必须存在,大小写一致。比如按钮写GOTO@送沙巴克,文件里只有[@送沙城],就会加载异常。
4.#IF、#ACT、#SAY、#ELSEACT、#ENDIF是否配对。NPC常见错是把#IF条件写完直接#SAY,漏#ACT;或者加了子菜单不写#ENDIF。条件块没闭合时,引擎往往跳到后面某行才报,不一定真错在181,要看181上面最近一个[@菜单]开始的全部内容。
5.GIVE/CHECKITEM/TAKE物品名要和StdItems数据库一致;给“元宝”“礼包”用编号还是名字,按你引擎来,别把中文括号、注释符号写进命令本体。
6.若181本身看着正常,向上翻到最近一个[@main]或[@传送菜单],把整个子菜单复制到新建空白ANSI文件里逐行删,删到不报错再定位。

三、看QFunction-0.txt第2341行
QFunction是全局功能脚本,登录、捡物、打怪、穿装备、用物品都可能走这里。2341行报错先按同样方式Ctrl+G跳转,看2335到2345行。常见问题:
1.昨天改传送员时不小心把NPC内容粘进QFunction,或者复制一段带GOTO/CALL的代码进来,标签在QFunction里不存在。
2.公共触发段如[@OnLogin]、[@使用物品]、[@打怪触发]里写了引擎不认识的命令;GOM、GEE、Hero、LEG引擎命令不一样,老命令新引擎不认、新命令老引擎不认都会报行号。按你当前引擎命令手册改,不混用。
3.变量写法错误:个人变量、全局变量、字符串变量前缀写错,未声明就MOV/ADD,或者把字符串当数字比较。
4.条件缺#ACT、#IF后直接执行、#ENDIF不配对;CALL外部QuestDiary路径写错,例如CALL[..\QuestDiary\某某\某某.txt]@标签,反斜杠、文件名、标签名错一个就加载失败。
5.若2341附近原本没动过,但昨天改别处后第二次启动才报,可能是编码改变导致全文件行号偏移,或者M2第一次用旧缓存、第二次读新文件才暴露。此时不要只盯2341,转ANSI后重新看,必要时用“;”把2330到2360逐段注释重载,缩到具体一行。

四、编码和不可见字符(你这个乱码最像)
两个文件都用Notepad++处理:菜单“编码”看当前格式。传统Mir2/GOM/GEE多数用ANSI(简体环境即GBK);若显示UTF-8、UTF-8BOM、Unicode,转“编码→转为ANSI编码”后保存。若必须用其他编码按你引擎要求来,但老M2基本ANSI最稳。
再点“视图→显示符号→显示所有字符”,把行尾^M、异常Tab、全角空格删掉;换行符用Windows格式CRLF,不用UnixLF。从别处复制来的脚本先粘到纯文本再转ANSI,别直接覆盖。

五、改完怎么让服务端重新读
小改动优先热重载,不一定要全服重启:
M2控制台“控制→重新加载→NPC脚本/Market”可重载老兵传送员;“控制→重新加载→QFunction”重载QFunction-0;没有单独QFunction就重载功能脚本或所有脚本。重载后游戏小退重登,点土城老兵看还报不报。
如果改到登录触发、QM、核心变量、Merchant注册,热重载不生效就全关:先关游戏客户端,M2点停止,DBServer/登录器/网关一起关;删或移走Mir200\Log下ScriptError、M2Server日志便于看新错,部分引擎有ScriptCache.dat也清掉;再启动DBServer→M2→网关→登录器。第二次启动还报,就看新日志行号是否已经变化。

六、没备份的快速回滚办法
老兵传送员:同引擎同版本找一份干净Market_Def\老兵\传送员_土城-3.txt,只把你昨天要加的传送点按它原有格式重新加,不把旧文件整体覆盖回去,避免把其他功能弄丢。
QFunction-0:不要从别的版本整份替换,只替换你确认的子段;若不知道改坏哪段,用文本对比工具把_bak和当前文件比,只恢复有改动的标签块。实在没有bak,按M2报错行号逐段注释,注释用你引擎支持的;或//,确认不报再逐步放开。

七、判断是不是“假行号”
M2有时写第181行,实际错在第179行条件没闭合;写第2341行,实际是上面一个CALL把错误带到2341。处理原则:报错行本身、上一标签块、本文件最靠近报错的#IF/#ACT/#CALL三者都查。若181行是空行或纯中文说明,基本就是上行结构问题;若2341行内容很短却报语法错误,优先查它上面最近一个[@触发]是否缺#ENDIF。

wuduy.com相关标题名和链接:
传奇修改后启动服务器脚本错误两处具体报错排查及解决 http://www.wuduy.com/html/jishuwenzhang/chuanqi/171291.html
传奇脚本修改后启动服务器报错两大脚本错误修正方法 http://www.wuduy.com/html/jishuwenzhang/chuanqi/175664.html
传奇脚本错误排查指南(土城传送员及QFunction报错解决) http://www.wuduy.com/html/jishuwenzhang/chuanqi/165627.html
传奇脚本修改后启动报错两行错误排查与解决 http://www.wuduy.com/html/jishuwenzhang/chuanqi/162447.html
传奇服务端脚本修改后游戏内无变化排查与修复 http://www.wuduy.com/html/jishuwenzhang/chuanqi/191373.html
传奇架设遇到脚本错误如何解决:M2日志定位与NPC触发报错修复全流程 http://www.wuduz.com/html/chuanqi/jishuwenzhang/135942.html
[顶部]