开启攻沙先确认要的是行会沙巴克还是纯怪物攻城。行会拿沙走城堡系统,纯刷怪走Robot。两套都开也可以,但参数别互相冲突。
一、城堡配置文件开启
路径按版本不同,常见在Mir200\Envir\Castle\SabukW.txt,也有Sabuk.txt或GuildBase\Castle\Castle.ini。文本型配置示例:
[Setup]
Enable=1
WarDay1=6
WarDay2=3
StartTime=20:00
EndTime=22:00
ReadyDay=1
ReadyTime=19:00
Enable=1开系统攻城,0关闭。WarDay1/2填星期,1到7对应周一到周日,可只写一个或多写几个。StartTime/EndTime是开战和结束时间。ReadyDay是提前几天可申请,ReadyTime是申请截止时间;单机测试可把ReadyDay设0或1,避免等两天。
若用Castle.ini类配置,找CastleWarOpen=1开启,CastleWarDay=6设星期,CastleWarTime=20设小时。改完设0就是永久不自动开。
改完回M2点控制、重新加载、城堡数据,或者直接重启M2。不重载配置不会生效。
二、M2图形界面参数
不同引擎菜单名不同,通用找法:
M2顶栏城堡、沙巴克设置、城堡管理、游戏管理沙巴克设置,按本服菜单进。需要勾允许行会申请攻城,设申请金币,可测试设0。看当前攻城申请列表,空列表就说明还没行会申请。
参数设置、城堡或时间控制里设攻城开始时间、结束时间、提前申请天数、攻城持续分钟。Hero可走选项、参数设置、时间控制;GOM可走功能设置、活动设置、攻城战设置;GEE走系统配置、攻城设置。菜单位置不同但字段基本一致。
若只要手动测试,M2城堡管理里手动加行会到攻城列表,设当天时间,重启M2后到时间自动宣战。GM命令也可补:无城主用@setcastleowner 行会名设城主,@clearcastleowner清城主,具体命令名按引擎GM工具核对。
三、MapInfo沙巴克地图属性
Envir\MapInfo.txt里沙巴克相关行要有CASTLE和战斗属性。示例:
0150 沙巴克 0 0 1 1 CASTLE FIGHT
0151 沙巴克皇宫 0 0 1 1 CASTLE FIGHT
0152 沙巴克城墙区域 0 0 1 1 CASTLE FIGHT
地图号按本服实际改,0150只是示例。CASTLE标记让引擎按沙城处理城门、皇宫、占领判定;FIGHT允许战斗。只写普通安全地图不写CASTLE,攻城申请、开门、拿沙都会异常。
皇宫坐标、城门坐标、复活点要在地图文件和资源里存在。M2报地图连接点无效,先回MapInfo核对沙巴克各子图回城点、城门点、皇宫门点。城门怪物Appr要和城堡配置、Monster.DB一致,否则门打不开或不掉血。
四、沙城NPC与申请脚本
土城或比奇放申请NPC,npcs.txt登记名称、功能码、地图、坐标、范围、头像。脚本放npc_def。基础申请:
[@main]
沙巴克攻城申请\ \
1.申请攻城 /@applywar\ \
2.查看攻城规则 /@warrule\ \
[@applywar]
IF
CheckGuildMaster
ACT
AddToCastleWarList 行会名参数
SENDMSG 1 已提交沙巴克攻城申请
GOTO @main
ELSEACT
IF
CheckCastleWarList
ACT
SENDMSG 1 该行会已在攻城列表
ELSEACT
MESSAGEBOX 仅行会会长可申请,且不可重复申请
CheckGuildMaster判断点击者是会长,CheckCastleWarList判断已在列表防重复。AddToCastleWarList是通用写法,Hero老版可用AddToCastleWarList,部分Hero用StartSabukWar,GOM可用AddAttackSabukAll,LEG可用Gmexecute AddToCastleWarList,命令名按本服命令表替换。
沙城内部放沙城管理人员、沙城财务、修墙修门NPC,功能码用沙城类而不是国王类,否则税金、国库、修墙菜单会异常。Npcs坐标必须在沙巴克安全区可站立点,地图号与MapInfo一致。
五、机器人自动到时间开战
AutoRunRobot.txt加定时:
AutoRun NPC RUNONDAY 20:00 @StartCastleWar
RobotManage.txt加执行:
[@StartCastleWar]
IF
ACT
StartCastleWar 120
SENDMSG 0 沙巴克攻城战开启,持续120分钟
StartCastleWar后跟分钟数,120表示两小时。部分引擎用AddAttackSabukAll 0把全部符合条件行会加入攻城,或用开区天数G变量判断再AddToCastleWarList。示例按开区天数:
[@攻沙设置]
IF
CHECKVAR GLOBAL 开区天数 >0
ACT
AddAttackSabukAll 0
SENDMSG 0 沙巴克攻城已按开区规则加入
IF
CHECKVAR GLOBAL 开区天数 >1
ACT
SENDMOVEMSG 0 249 0 100 3 公告:20点至22点沙巴克攻城,提前备战
开区天数用机器人23:59累加G变量,QManage加载全局变量;不同Hero/GOM变量命令名不同,老版可用A/D,全局用G或GLOBAL,按本服替换。
纯怪物攻城不走城堡系统,用Robot刷怪:
AutoRun NPC RUNONDAY 20:30 @MonCityAttack
[@MonCityAttack]
IF
ACT
Param1 0
Param2 330
Param3 330
Param4 15
MOBPLACE 祖玛卫士 30
MOBPLACE 沃玛教主 5
SENDMSG 0 警告,怪物进攻比奇城,速来抵抗
Param1地图号按目标城改,怪物名和Monster.DB完全一致。MOBPLACE和MISSION配合用,纯MonGen也可。
六、行会条件与申请消耗
M2行会设置或GuildConfig里设申请条件:行会等级、成员数、角色等级、提交道具。常见要求会长等级40以上、行会等级2、成员10人、交祖玛头像或金币。测试可全部设最低,申请消耗设0。
NPC若要求祖玛头像,脚本改:
[@applywar]
IF
CheckGuildMaster
CHECKITEM 祖玛头像 1
ACT
TAKE 祖玛头像 1
AddToCastleWarList 行会名参数
SENDMSG 1 消耗祖玛头像,已申请攻城
ELSEACT
MESSAGEBOX 需要会长身份且包裹有祖玛头像
不要求道具就去掉CHECKITEM/TAKE,只留会长判断和系统申请消耗。
七、城门皇宫脚本
沙巴克门可用QuestDiary或城堡自带逻辑。部分版本Envir\QuestDiary\沙巴克有城门脚本,攻城时间内开门:
IF
CheckSandAttackTime
ACT
OpenCastleDoor
ELSEACT
SENDMSG 0 沙巴克城门仅在攻城期间开放
CheckSandAttackTime和OpenCastleDoor按本服命令名核对,有的引擎用OpenDoor加门ID。无城主时城门默认锁,先设城主或到攻城申请时间再验证。
皇宫占领判定一般引擎自动处理:攻城时段内皇宫无守方行会成员并满足持续条件,系统判新城主。QFunction里可加CheckCastleScore做积分、奖励;不写也能拿沙,写了可做额外发奖。
八、不开门不宣战排错
1. M2沙巴克设置没勾允许申请,或攻城时间全空:补WarDay、StartTime、EndTime,重载城堡。
2. SabukW Enable=0或CastleWarOpen=0:改1并重载。
3. 无城主且非攻城时间:城门常闭属正常,设城主后可走平时开门规则,或等攻城时间。
4. MapInfo沙巴克没CASTLE:补CASTLE FIGHT,重启M2。
5. 申请NPC功能码错、标签名错、npcs坐标错:NPC点开空白就查npcs.txt和npc_def文件名一致,文件用ANSI。
6. 机器人没触发:AutoRunRobot时间格式错,RobotManage标签名不一致,或M2机器人总开关没开。
7. 用脚本StartCastleWar但M2本身时间冲突:以M2城堡时间为主,机器人只做广播和补加列表,不要两个系统各设一套互相覆盖。
8. 假人版自动攻城去不掉:Robot_def搜攻沙、攻城、沙巴克,注释AutoRun行,清RobotManage对应标签,M2关自动攻城开关。
9. 城门怪物不打:Monster.DB城门Appr、SabukW门配置、MapInfo门坐标三项不一致,按城堡配置改。
10. 全服都不读城堡:M2启动日志看已读取几个城堡信息,Castle路径在!Setup或M2城堡管理里配置,路径错就改回相对目录并重载。
九、首次开区定时示例
开区第2天首攻,之后每周六20点:
SabukW:
Enable=1
WarDay1=6
StartTime=20:00
EndTime=22:00
ReadyDay=1
ReadyTime=19:00
开区前两天手动测试可临时改:
AutoRun NPC RUNONDAY 20:00 @StartCastleWar
[@StartCastleWar]
ACT
StartCastleWar 120
SENDMSG 0 测试攻沙开启120分钟
验证完再改回每周六。开区天数方案用GLOBAL记录:
AutoRunRobot:
AutoRun NPC RUNONDAY 23:59 @开区天数
RobotManage:
[@开区天数]
IF
EQUAL A497 0
ACT
CALCVAR GLOBAL 开区天数 +1
SAVEVAR GLOBAL 开区天数 ..\QuestDiary\攻沙数据\开区天数.txt
[@攻沙设置]
IF
CHECKVAR GLOBAL 开区天数 >1
ACT
AddAttackSabukAll 0
SENDMSG 0 开区超过1天,自动加入周六攻沙
A497、GLOBAL、CALCVAR、SAVEVAR按本服变量系统替换;老引擎用A/D和MOV/INC即可。
十、纯沙巴克行会战最小可运行清单
SabukW Enable=1,WarDay、StartTime、EndTime填好。
M2允许申请攻城,申请金币/道具按测试设0或祖玛头像。
MapInfo沙巴克主城、皇宫、城墙均CASTLE FIGHT。
npcs放申请NPC,脚本CheckGuildMaster+AddToCastleWarList,防重用CheckCastleWarList。
会长建行会、满足条件,到NPC申请,M2申请列表出现该行会。
到StartTime系统宣战,城门按攻城时间开放,皇宫可占领。
攻城结束按引擎规则判城主,SabukW写OwnGuild,财务NPC用沙城类功能码。
需要自动每天/每周开,用AutoRunRobot+RobotManage调StartCastleWar或AddAttackSabukAll,不和M2静态时间重复冲突。
按上面十项逐项开,行会攻沙基本都能跑起来;只改M2时间不放开MapInfo CASTLE,或者只放申请NPC不写城堡Enable,都会出现点了申请没反应、到时间不开门、拿了皇宫不认城主。
传奇服务端沙巴克攻城开启全套M2城堡参数MapInfo沙城NPC机器人定时申请教程
来源:
作者:
点击:

