先确认你改的文件是不是引擎实际读取的那个。很多情况不是脚本写错,而是改了备份目录、改了同名副本、或者改了客户端文本但服务端Enviro路径下另有一份。进Mirserver\Mir200\Envir,NPC对话看Market_Def和Merchant.txt对应项,任务脚本看QuestDiary,功能触发看MapQuest_def里的QFunction.txt、QManage.txt,地图事件看MapInfo.txt、MapEvent相关配置。若用引擎控制器,确认服务端根目录指向的Mir200就是你编辑的目录,不然后台一直读旧文件。
改完别只按Ctrl+S看界面变了就进游戏。到文件属性看修改时间是否更新,看文件是否只读。整个Mirserver目录若被解压工具或系统标成只读,保存会假成功,右键取消只读后再改;单个脚本文件也取消只读。Windows记事本、Notepad++都行,但传奇M2多数版本只认ANSI/GBK,用UTF-8尤其带BOM保存,中文标签、提示语、条件判断都会解析异常,表现为改了跟没改一样或M2报脚本错误。处理办法用记事本打开,另存为,编码选ANSI覆盖原文件;若原来就是UTF-8,必须另存而不是只改编辑器编码设置,避免BOM残留。
NPC对话类先热重载,不必直接重启整服。M2Server打开后点控制、重新加载,按引擎版本选NPC脚本、所有NPC、Market相关项;只改某个NPC就重载NPC脚本,新增NPC或改了Merchant.txt坐标名称就重载所有NPC。部分引擎游戏内GM命令可重载,例如@loadnpc、@reloadqfunction一类,具体在M2选项、游戏命令、调试命令里查,不同引擎名字不完全一样。重载后玩家小退重登再点NPC,不小退有时会继续读进图时缓存的旧对话。
QFunction、QManage、登录触发、死亡触发、爆率钩子这类功能脚本,很多版本热重载不彻底。改了[@Login]、物品使用、攻击触发、击杀触发、定时脚本,优先在M2重新加载里选QFunction或相关功能脚本;若仍没变化直接重启M2Server。重启顺序按你控制器来,常见是DBServer、LoginSrv、M2Server、各个网关;完全关干净再起,看M2控制台启动日志有没有Script error、line xxx、file not found。只点重新加载不重启,核心脚本经常不生效。
看M2实时日志比盲改快。触发NPC或功能时若没反应,翻M2控制台;若有红色报错,记录文件名和行号,直接打开对应行。常见问题:#IF没有#ACT/#ELSE/#ENDIF闭合,[@Main]标签缺冒号或换行异常,CALL路径写错,GIVE、TAKE、MOV、SET等命令拼错大小写,引号只写一半导致后面全被当字符串,多层#if嵌套没按引擎支持层数写。QManage报line 105就只看105附近,不要全文重抄;改一处存ANSI重载一次,避免同时改十处分不清哪行坏。
路径和文件名要严对。Market_Def下NPC脚本通常按“NPC名-地图号.txt”或子目录存放,具体看Merchant.txt里该NPC配置的脚本路径;名字、地图号、扩展名不一致,M2会找不到文件。QuestDiary子目录要在!Setup或引擎脚本主目录配置里挂上,QFunctionDir指向不对就全不触发。Windows目录不区分大小写,但部分引擎配置、脚本CALL、标签引用区分,QuestDiary不要写成questdiary,MapQuest_def不要简写错。相对路径从当前脚本目录算,绝对路径从Envir算,CALL其它任务脚本写全相对位置。
缓存问题分服务端和客户端。服务端若目录里有Log\ScriptCache.dat或等价脚本缓存,改核心脚本无效时关M2删缓存文件再起;部分引擎没有这个文件就不删,避免误删其它log。客户端弹旧对话、旧活动、旧NPC文本,清登录器缓存目录,常见是安装目录下的Cache、Temp、ScriptCache、配置缓存;清完重开登录器,必要时重下对应补丁。只改服务端、不改客户端补丁时,若功能涉及按钮、UI、公告网页,客户端不更新也会像没生效。
杀软和安全软件会拦脚本写入或把Mir200下dll、txt隔离。改完没变化先看杀软隔离区,把整个Mirserver加白;特别是QFunction.txt、QManage.txt、Market_Def、QuestDiary被隔离后,M2可能读旧内存或读不到新内容。服务器用云主机还要看是否改了A端、实际跑B端,挂载盘符、控制器工作目录、M2读取目录三者不一致最容易出现“本地改了、游戏不变”。
按类型给快捷对照:NPC对话文字不变,查Market_Def文件名、Merchant条目、M2重载NPC、编码ANSI;点击NPC无功能,查标签[@Main]、[@xxx]是否被Merchant调用、#IF条件、GIVE/TAKE命令、M2报错行;登录送东西不变,查QManage[@Login]、重启M2、看启动日志;打怪爆率/击杀触发不变,查QFunction、OnKillMonster类钩子、物品名和怪物名全角半角、重启并清ScriptCache;地图进入没触发,查MapInfo地图参数、MapEvent坐标范围、标签是否在对应脚本定义;客户端看到旧活动,清登录器Cache并确认补丁版本。
最后保留修改习惯:每次改前复制原文件存bak,只改一个功能点就重载测试;用Notepad++看编码状态栏,转ANSI用“另存为”不用单纯转换;M2启动后先不进游戏,看控制台是否零脚本错误再让玩家上。若改完完全无报错但无变化, ninety percent是路径改错、未重载对应模块、或编码被存成UTF-8三类,按上面顺序查最省时间。
145z.com相关参考:
传奇服务端脚本修改后游戏内无变化的排查与解决方法 http://www.145z.com/html/rexuechuanqi/jishujiaocheng/168822.html
传奇架设脚本错误排查与修复方法 http://games.145z.com/html/rexuechuanqi/jishujiaocheng/200542.html
传奇脚本第181行与2341行报错的深度诊断与修复方案 http://www.145z.com/html/rexuechuanqi/jishujiaocheng/176211.html
传奇服务端改脚本游戏没变化:M2重载编码路径缓存全排查
来源:
作者:
点击:

