行会战/行会占领地图在HERO引擎里不是单靠一个“参数文件”搞定,而是MapInfo.txt+SabukW.txt+Merchant.txt+Market_Def+QuestDiary/QFunction一起起作用。报“脚本错误”时,先别改一大片,先抓M2红字里的文件名+行号+命令名。
一、行会战/攻城地图该配的地方
1.MapInfo.txt
沙巴克/行会战地图一般带模式标记,例如:
3比奇000
350沙巴克皇宫FIGHT300
015沙巴克000
HERO里皇宫地图常用FIGHT3(行会战斗/占领模式)。地图号必须和客户端Map目录里的.map存在,也和NPC所在地图号一致。
写错地图号→进图黑屏/卡加载;模式没写FIGHT3→占领判定不触发。
2.SabukW.txt
HERO攻沙核心配置:
[Settings]
CastleName=沙巴克
WarTime=20:00-22:00
DefenseFee=1000000
还有城门怪物名、皇宫地图号、占领倒计时、攻城奖励等。
攻城不开启:先看这里时间格式对不对、CastleName和MapInfo里城堡名对不对、M2里“沙巴克设置”有没有点保存并重启。
3.Merchant.txt加报名/传送NPC
格式:
地图号XYNPC名字皮肤功能标志喊话间隔移动范围
例:
3330330沙巴克报名官0000
NPC脚本放Market_Def\沙巴克报名官-3.txt(名字里最好带地图号,避免加载混乱)。
4.行会身份判定命令
HERO常用:
ISGUILDMASTER——是否行会会长
HaveGuild——是否已有行会
CHECKGUILDVAR——行会变量
GETCASTLEOWNER0H1——取沙巴克占领行会名到变量H1
IsCastleMaster——是否城主行会成员
MOVETOMAP3503030——传皇宫
错误写法:mapmovexxxxxxxx(命令名拼错)、MOVETOMAP后坐标少一个、GOTO@xxx但目标文件里没[@xxx]。
二、行会战传送NPC最小可用例子
Market_Def\行会战传送员-3.txt:
[@main]
SAY
行会战传送:\
1.进入行会战地图\
2.离开\
<进入行会战/@jinru><关闭/@exit>
[@jinru]
IF
HaveGuild
ACT
MOVETOMAP601010
SENDMSG6已传送至行会战地图
ELSEACT
SENDMSG5你还没有行会,无法进入
[@exit]
ACT
break
要点:
•#IF/#ACT/#ELSEACT/break半角
•标签[@jinru]顶格,前面别留空格/Tab
•地图号60必须在MapInfo.txt和Map目录里真有
•改完M2点“重新加载NPC”,别每次都重启
三、服务端脚本错误通用排法
M2红字像这样才有用:
ScriptError:Market_Def\行会战传送员-3.txtLine12
Unknowncommand:mapmove
先看这三样:
1.编码
HERO老端用ANSI/GBK。记事本存成UTF-8会带BOM,第一行命令直接废。
Notepad++→编码→转为ANSI→保存。
2.半角符号
中文逗号、中文冒号、中文引号、全角空格都会炸。
IF/#ACT后面条件里写:
CHECKGUILDVAR参战状态1
别写:
CHECKGUILDVAR参战状态:1
3.结构不闭合
IF
ACT
...
ELSEACT
...
break
菜单段结束要break;条件分支结束该#ENDIF的别漏。
GOTO@领取时,目标文件必须有[@领取],跨文件用:
CALL[..\QuestDiary\行会战.txt]@领取
4.命令不是所有引擎都有
HERO用ISGUILDMASTER、GETCASTLEOWNER、MOVETOMAP
GOM用另一套;GEE又有差异。
把GOM脚本塞进HERO端,就会满屏Unknowncommand。
5.文件路径乱放
•NPC对话/商人:Market_Def
•任务/全局触发:QuestDiary
•杀死怪物:DeadMonster/MonItems
•地图进入事件:MapQuest/QFunction
放错目录=NPC不显示或触发没反应。
6.引用文件不存在
脚本里写:
AddTextList.\QuestDiary\开启行会名称.txt
结果QuestDiary下没这文件,就会读空或报错。
先建空文件再引用,或改成已存在路径。
7.行会战专属坑
•地图模式不是FIGHT3,占领皇宫不计数
•SabukW.txt城堡名和MapInfo不一致
•攻城时间写20:00-22:00但M2时区/系统时间不对
•城门怪物在MonsterDB里Appr值和SabukW对不上,门打不烂
•皇宫占领倒计时太短(1秒),刚进就被判赢
•胜利奖励脚本放QFunction-0.txt里,但标签名不是引擎自动调用的@沙巴克攻城结束
-用ISGuildMember%H1这种变量没先GETCASTLEOWNER取出来,永远不成立
四、改行会战脚本的安全流程
1.备Mir200\Envir整个目录
2.只改一个文件
3.M2看红字:哪文件哪行
4.Notepad++打开,看那行命令拼错没、参数够不够、标签在不在
5.转ANSI
6.M2→控制→重新加载NPC/重新加载脚本
7.小退重登测试,不行再回滚.bak
五、常见红字对照
•Unknowncommand:mapmove→命令拼错,应是MOVETOMAP
•Labelnotfound:@kaiqi→文件里没[@kaiqi]
•Scriptfilenotfound→CALL路径写错
-Line1syntaxerror→UTF-8BOM/第一行有隐藏字符
•Variablenotdefined→用了H1/G1但没声明也没SAVEVAR/LOADVAR
•Mapnotfound→MOVETOMAP的地图号MapInfo里没有
•Guildvarerror→行会变量没用SETGUILDVAR/CHECKGUILDVAR配套
六、行会占领地图参数思路(不是HERO原生“键值”那么写)
网上有些文章写GuildWar_EnterLevel=35、GuildWar_TimeLimit=1800、WinCondition=1,这类多是教学伪配置。HERO实际是:
-地图规则放MapInfo.txt(模式、安全区、是否回城)
•攻城规则放SabukW.txt(时间、城堡名、城门、奖励)
、行会判断放NPC/QuestDiary脚本(ISGUILDMASTER、GETCASTLEOWNER、CHECKGUILDVAR)
•胜负触发放QFunction-0.txt(攻城结束自动标签)
别把“教学参数名”直接塞进HERO文本文件,引擎不认就等于没配置。
七、最简自测顺序
建两个行会A/B→A会长点报名NPC→到攻城时间进沙巴克→破门进皇宫→占皇宫过倒计时→M2日志出“X行会占领沙巴克”→城主行会成员找奖励NPC能领→非城主被拒。
哪一步断,就查那一层:
报名断=Merchant/NPC脚本
破门断=SabukW城门怪物/MapInfo
占领不生效=地图模式不是FIGHT3/皇宫地图号错
结束没奖励=QFunction-0标签名不对/GETCASTLEOWNER没写/变量没存
NPC点开空白=编码UTF-8/文件名没带地图号/MerChant.txt坐标错
行会战脚本别抄花活,先跑通“会长报名—进图—占皇宫—结束发奖”四条,再加击杀积分、旗帜、复活点、行会资金、攻城商店。脚本错误90%都是半角、编码、标签名、地图号、命令名这五件事,不是引擎坏了。
一、行会战/攻城地图该配的地方
1.MapInfo.txt
沙巴克/行会战地图一般带模式标记,例如:
3比奇000
350沙巴克皇宫FIGHT300
015沙巴克000
HERO里皇宫地图常用FIGHT3(行会战斗/占领模式)。地图号必须和客户端Map目录里的.map存在,也和NPC所在地图号一致。
写错地图号→进图黑屏/卡加载;模式没写FIGHT3→占领判定不触发。
2.SabukW.txt
HERO攻沙核心配置:
[Settings]
CastleName=沙巴克
WarTime=20:00-22:00
DefenseFee=1000000
还有城门怪物名、皇宫地图号、占领倒计时、攻城奖励等。
攻城不开启:先看这里时间格式对不对、CastleName和MapInfo里城堡名对不对、M2里“沙巴克设置”有没有点保存并重启。
3.Merchant.txt加报名/传送NPC
格式:
地图号XYNPC名字皮肤功能标志喊话间隔移动范围
例:
3330330沙巴克报名官0000
NPC脚本放Market_Def\沙巴克报名官-3.txt(名字里最好带地图号,避免加载混乱)。
4.行会身份判定命令
HERO常用:
ISGUILDMASTER——是否行会会长
HaveGuild——是否已有行会
CHECKGUILDVAR——行会变量
GETCASTLEOWNER0H1——取沙巴克占领行会名到变量H1
IsCastleMaster——是否城主行会成员
MOVETOMAP3503030——传皇宫
错误写法:mapmovexxxxxxxx(命令名拼错)、MOVETOMAP后坐标少一个、GOTO@xxx但目标文件里没[@xxx]。
二、行会战传送NPC最小可用例子
Market_Def\行会战传送员-3.txt:
[@main]
SAY
行会战传送:\
1.进入行会战地图\
2.离开\
<进入行会战/@jinru><关闭/@exit>
[@jinru]
IF
HaveGuild
ACT
MOVETOMAP601010
SENDMSG6已传送至行会战地图
ELSEACT
SENDMSG5你还没有行会,无法进入
[@exit]
ACT
break
要点:
•#IF/#ACT/#ELSEACT/break半角
•标签[@jinru]顶格,前面别留空格/Tab
•地图号60必须在MapInfo.txt和Map目录里真有
•改完M2点“重新加载NPC”,别每次都重启
三、服务端脚本错误通用排法
M2红字像这样才有用:
ScriptError:Market_Def\行会战传送员-3.txtLine12
Unknowncommand:mapmove
先看这三样:
1.编码
HERO老端用ANSI/GBK。记事本存成UTF-8会带BOM,第一行命令直接废。
Notepad++→编码→转为ANSI→保存。
2.半角符号
中文逗号、中文冒号、中文引号、全角空格都会炸。
IF/#ACT后面条件里写:
CHECKGUILDVAR参战状态1
别写:
CHECKGUILDVAR参战状态:1
3.结构不闭合
IF
ACT
...
ELSEACT
...
break
菜单段结束要break;条件分支结束该#ENDIF的别漏。
GOTO@领取时,目标文件必须有[@领取],跨文件用:
CALL[..\QuestDiary\行会战.txt]@领取
4.命令不是所有引擎都有
HERO用ISGUILDMASTER、GETCASTLEOWNER、MOVETOMAP
GOM用另一套;GEE又有差异。
把GOM脚本塞进HERO端,就会满屏Unknowncommand。
5.文件路径乱放
•NPC对话/商人:Market_Def
•任务/全局触发:QuestDiary
•杀死怪物:DeadMonster/MonItems
•地图进入事件:MapQuest/QFunction
放错目录=NPC不显示或触发没反应。
6.引用文件不存在
脚本里写:
AddTextList.\QuestDiary\开启行会名称.txt
结果QuestDiary下没这文件,就会读空或报错。
先建空文件再引用,或改成已存在路径。
7.行会战专属坑
•地图模式不是FIGHT3,占领皇宫不计数
•SabukW.txt城堡名和MapInfo不一致
•攻城时间写20:00-22:00但M2时区/系统时间不对
•城门怪物在MonsterDB里Appr值和SabukW对不上,门打不烂
•皇宫占领倒计时太短(1秒),刚进就被判赢
•胜利奖励脚本放QFunction-0.txt里,但标签名不是引擎自动调用的@沙巴克攻城结束
-用ISGuildMember%H1这种变量没先GETCASTLEOWNER取出来,永远不成立
四、改行会战脚本的安全流程
1.备Mir200\Envir整个目录
2.只改一个文件
3.M2看红字:哪文件哪行
4.Notepad++打开,看那行命令拼错没、参数够不够、标签在不在
5.转ANSI
6.M2→控制→重新加载NPC/重新加载脚本
7.小退重登测试,不行再回滚.bak
五、常见红字对照
•Unknowncommand:mapmove→命令拼错,应是MOVETOMAP
•Labelnotfound:@kaiqi→文件里没[@kaiqi]
•Scriptfilenotfound→CALL路径写错
-Line1syntaxerror→UTF-8BOM/第一行有隐藏字符
•Variablenotdefined→用了H1/G1但没声明也没SAVEVAR/LOADVAR
•Mapnotfound→MOVETOMAP的地图号MapInfo里没有
•Guildvarerror→行会变量没用SETGUILDVAR/CHECKGUILDVAR配套
六、行会占领地图参数思路(不是HERO原生“键值”那么写)
网上有些文章写GuildWar_EnterLevel=35、GuildWar_TimeLimit=1800、WinCondition=1,这类多是教学伪配置。HERO实际是:
-地图规则放MapInfo.txt(模式、安全区、是否回城)
•攻城规则放SabukW.txt(时间、城堡名、城门、奖励)
、行会判断放NPC/QuestDiary脚本(ISGUILDMASTER、GETCASTLEOWNER、CHECKGUILDVAR)
•胜负触发放QFunction-0.txt(攻城结束自动标签)
别把“教学参数名”直接塞进HERO文本文件,引擎不认就等于没配置。
七、最简自测顺序
建两个行会A/B→A会长点报名NPC→到攻城时间进沙巴克→破门进皇宫→占皇宫过倒计时→M2日志出“X行会占领沙巴克”→城主行会成员找奖励NPC能领→非城主被拒。
哪一步断,就查那一层:
报名断=Merchant/NPC脚本
破门断=SabukW城门怪物/MapInfo
占领不生效=地图模式不是FIGHT3/皇宫地图号错
结束没奖励=QFunction-0标签名不对/GETCASTLEOWNER没写/变量没存
NPC点开空白=编码UTF-8/文件名没带地图号/MerChant.txt坐标错
行会战脚本别抄花活,先跑通“会长报名—进图—占皇宫—结束发奖”四条,再加击杀积分、旗帜、复活点、行会资金、攻城商店。脚本错误90%都是半角、编码、标签名、地图号、命令名这五件事,不是引擎坏了。

