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

传奇行会战地图脚本参数设置与服务端脚本报错排查修复

热度:
行会战地图脚本报错不要先改参数,先开服务端Log目录下的ScriptError.log,日志里会写“Envir\QuestDiary\行会战\xxx.txtline32:未知命令/参数错误”,带着行号去改文件,比盲改快十倍。

一、行会战地图脚本挂在哪几个文件
MapInfo.txt:地图编号、名称、是否允许行会战、最大人数、死亡掉落规则。行会战地图必须在这里有独立编号,比如1001沙巴克战场,脚本里MapMove1001才能跳进去,编号写错直接“地图不存在”。
Envir\MapQuest_def\1001\GuildWarRule.txt:战场规则主体,胜负条件、刷新旗子NPC、击杀加分、结束发奖都在这里。
Envir\QuestDiary\行会战\xxx.txt:触发行会战的NPC对话脚本,土城行会管理员点“发起行会战”走的就是这条。
Mir200\Envir\Item.txt和Monster.txt:奖励物品名、旗子怪物ID必须和这两个表对上,写错ID就“无法找到物品”。

二、行会战脚本里最容易写错的参数
GUILDWAR发起行会ID对手行会ID地图ID时长(秒):四个参数缺一个就报“参数数量错误”,例如GUILDWAR1001100210011800,时长单位是秒不是分钟,写30就是30秒结束。
WARSTART=19:00必须用英文半角冒号,写中文冒号或19:00地图不开启;起始时间大于结束时间同样不触发。
MaxPlayer=50写0或负数全员进不去;MinGuildMember测试期设1,正式再调回2或5。
RespawnTime=10复活秒数,写-5复活失效;RespawnPoint必须指向MapInfo里存在的合法坐标,没定义就随机飘。
WinCondition=KillCount时必须配套WinKillCount=50,只写条件不写数值,满足击杀也不判胜。
MapMove1001320280三个参数缺一不可,只写MapMove1001320报MoveFail。
CHECKGUILDWAR1在GOM是参战判定,GEE引擎写成@CHECKGUILDWAR1,引擎混用必报CommandNotFound。

三、服务端报错的对应修法
启动弹窗ScriptSyntaxErrorline15:打开对应txt跳到15行,少等号(GuildWarDuration1800→加=)、拼错词(MonRefleshTime→MonRefreshTime)、行尾多空格,记事本“显示所有字符”能看见尾部空格。
运行时刷ERRORInvalidparameter/Unknowncommand'TeleportToBoss':命令拼错或当前引擎不支持,对照所用引擎(M2Server.exe属性看版本)命令手册改,GOM的#Act在GEE是#ACTION,RandomMove在GOM是RandMove。[办citation:9]
进入战场黑屏卡死:MapInfo里该地图MAXPLAYERS设太高,或脚本里有#GOTO死循环,全局搜#GOTO看是否跳回自己;坐标超出地图尺寸也会把角色卡出边界,F11或MapEditor查合法坐标再改。
旗帜刷出来击杀不加分:@KillNpc1001写成@KillMob1001,NPC和怪物函数混用;或者VARGUILDGuildScore10没在文件头定义就用ADDGuildScore110,变量未初始化直接失效。
结束不发奖:REWARDID里的物品名和Item.txt不一致(“行会战勋章”写成“行会勋章”),或@WAREND段没写GIVE指令,补上跳转和物品名。
改完不生效:M2控制台没reload,行会战类敲reloadguildwar,QuestDiary改了敲reloadquest,或者重启M2Server;每次改前把原文件复制成GuildWarRule_backup.txt,崩了能秒回滚。

四、编码与路径两个隐形坑
脚本文件必须ANSI/GBK保存,用UTF-8带BOM存的中文会变乱码,引擎解析到中文行直接断。
MapQuest_def下的子目录名必须是地图编号数字(1001不是war1001),GuildWarRule.txt文件名固定,改名成WarRule.txt服务端不认。
QuestDiary里自建文件夹默认不加载,脚本得放Envir\QuestDiary\行会战\这种标准路径,CALL调用的子脚本路径写相对名就行。

五、定位套路
备份原文件→开ScriptError.log看行号→只改报错那一行→M2reload对应模块→建两个小号行会(MinGuildMember设1)实测进图、击杀旗子、到时结算。还不行就把GuildWarRule.txt后半段删掉只留@ENTER和变量定义,能进图再加回胜负段,一段段贴回去,哪段贴进去崩就是哪段错。
[顶部]