100%仿盛大传奇沙巴克攻城战城堡参数行会申请攻城时间表皇宫争夺攻城奖励与城门修复全

来源: 作者: 点击:
沙巴克攻城分M2城堡参数、行会申请、攻城时间表、城门皇宫争夺、攻城奖励、攻城后管理六部分。100%仿盛大强调行会攻城、攻城期间、皇宫归属、沙城税收、修墙修门、城主特权,不混入怪物攻城和自动攻城机器人。

一、城堡配置文件

路径按版本不同,常见为Mir200\Envir\Castle\SabukW.txt,也有Sabuk.txt或GuildBase\Castle\Castle.ini。文本型配置:

[Setup]
Enable=1
WarDay1=6
WarDay2=
StartTime=20:00
EndTime=22:00
ReadyDay=1
ReadyTime=19:00
CastleName=沙巴克
CastleGoldMax=100000000
CastleOneDayGold=5000000
CastleTaxRate=5
CastleGetAllNpcTax=1
CastleMemberPriceRate=80

Enable=1开启系统攻城,0关闭。WarDay1=6表示每周六,1到7对应周一到周日;只攻一次就填WarDay1,不用的WarDay2留空。StartTime 20:00开战,EndTime 22:00结束,攻城期间2小时。ReadyDay=1表示提前1天可申请,ReadyTime 19:00是申请截止时间;单机测试把ReadyDay设0,避免等两天。CastleGoldMax全服沙城最高资金,CastleOneDayGold单日税收上限,CastleTaxRate=5表示所有商人交易税率5%,CastleGetAllNpcTax=1汇总NPC交易税进沙城,CastleMemberPriceRate=80表示沙城成员NPC修理和商店享8折。

Castle.ini类配置用字段:

CastleWarOpen=1
CastleWarDay=6
CastleWarTime=20
CastleWarHour=2
CastleName=沙巴克
CastleGoldMax=100000000
CastleOneDayGold=5000000
CastleTaxRate=5

字段含义一致,CastleWarHour=2表示持续2小时。改完M2控制、重新加载城堡数据,或直接重启M2,不重载不生效。

二、M2图形界面参数

路径按引擎不同:M2、城堡、沙巴克设置;或选项、参数设置、时间控制;或功能设置、活动设置、攻城战设置;或系统配置、攻城设置。需要设置的项:

允许行会申请攻城:勾选
申请金币:测试设0,仿盛大可设100万或1000万金币
申请所需行会等级:仿盛大可设2级以上
申请所需行会成员:20人以上
申请所需会长等级:50级
攻城开始时间:20:00
攻城结束时间:22:00
提前申请天数:1
攻城持续分钟:120
允许沙城税收:勾选
税率:5
全服NPC税收汇总:勾选
沙城成员折扣:80
修墙费用:500000
修门费用:2000000
雇用弓箭手:300000
雇用护卫:300000

沙城管理页面查看当前攻城申请列表,空列表说明没有行会申请。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_def建沙巴克申请.txt,npcs.txt登记名称、功能码、地图、坐标、范围、头像。脚本:

[@main]
沙巴克攻城申请\ \
申请攻城 /@applywar\ \
查看攻城规则 /@warrule\ \
查看当前申请行会 /@warlist\ \

[@warrule]
IF

SAY

每周六20:00至22:00攻城\ \
提前1天19:00前可申请\ \
申请需行会会长、行会等级2、成员20人、会长50级\ \
申请费100万金币\ \
攻城期间皇宫无守方行会持续占领即可夺城\ \

[@applywar]
IF

CheckGuildMaster
ACT

IF

CHECKCASTLEWARLIST
ACT

MESSAGEBOX 该行会已在攻城申请列表
BREAK
IF

CHECKGUILDLEVEL 2
ACT

IF

CHECKGUILDMEMBERCOUNT 20
ACT

IF

CHECKLEVELEX 50
ACT

IF

CHECKGOLD 1000000
ACT

TAKE 金币 1000000
ADDCASTLEWARLIST
SENDMSG 0 %s行会已申请本周沙巴克攻城
SENDMSG 1 攻城申请成功,周六20:00开战
GOTO @main
ELSEACT

MESSAGEBOX 申请需100万金币
BREAK
ELSEACT

MESSAGEBOX 会长需50级以上
BREAK
ELSEACT

MESSAGEBOX 行会成员需20人以上
BREAK
ELSEACT

MESSAGEBOX 行会等级需2级以上
BREAK
ELSEACT

MESSAGEBOX 仅行会会长可申请攻城

CheckGuildMaster判断点击者是会长;CHECKCASTLEWARLIST判断已在申请列表防重复;ADDCASTLEWARLIST把当前行会加入攻城列表;CHECKGUILDLEVEL、CHECKGUILDMEMBERCOUNT、CHECKLEVELEX、CHECKGOLD按本服命令替换。老版可用CheckGuildLevel、CheckGuildMember、CheckLevel、CheckGold,字段名不同但逻辑一致。

查看申请列表NPC:

[@warlist]
IF

ACT

CASTLEWARLIST
SENDMSG 0 当前攻城申请行会:
ELSEACT

MESSAGEBOX 本周暂无行会申请

CASTLEWARLIST按本服命令替换,部分引擎用ShowCastleWarList、ListCastleWar。无法在NPC直接显示时,改在攻城前由GM用M2城堡管理查看。

五、机器人自动到时间开战

仿盛大不需要自动加行会,行会必须手动申请。AutoRunRobot只做广播和开门提醒:

AutoRunRobot.txt:
AutoRun NPC RUNONWEEK 6:19:50 @CastleWarNotice

AutoRun NPC RUNONWEEK 6:20:00 @CastleWarStart

AutoRun NPC RUNONWEEK 6:21:50 @CastleWarEndSoon

AutoRun NPC RUNONWEEK 6:22:00 @CastleWarEnd

RobotManage.txt:

[@CastleWarNotice]
IF

ACT

SENDMSG 0 沙巴克攻城将于10分钟后开始,请攻城行会前往集结
SENDMSG 5 攻城时间:20:00-22:00,目标为皇宫控制权

[@CastleWarStart]
IF

ACT

STARTCASTLEWAR 120
SENDMSG 0 沙巴克攻城战正式开始,持续120分钟
SENDMSG 1 攻城行会请进攻沙巴克城门与皇宫

[@CastleWarEndSoon]
IF

ACT

SENDMSG 0 沙巴克攻城战将在10分钟后结束,皇宫归属即将判定

[@CastleWarEnd]
IF

ACT

ENDCASTLEWAR
SENDMSG 0 沙巴克攻城战已结束,系统正在判定城主

STARTCASTLEWAR 120表示攻城持续120分钟,ENDCASTLEWAR结束攻城。若M2已配置StartTime和EndTime,机器人只做广播,不重复调用开战命令,避免时间冲突。

六、城门与皇宫脚本

沙巴克门用QuestDiary或城堡自带逻辑。部分版本Envir\QuestDiary\沙巴克有城门脚本,攻城时间内开门:

IF

CHECKCASTLEWARTIME
ACT

OPENCastleDoor
SENDMSG 0 沙巴克城门已开启,攻城行会可进攻
ELSEACT

SENDMSG 0 非攻城时间,沙巴克城门关闭

CHECKCASTLEWARTIME和OPENCastleDoor按本服命令名核对,有的引擎用OpenDoor加门ID。无城主时城门默认锁,先设城主或等攻城时间再验证。

皇宫占领判定由引擎自动处理:攻城时段内皇宫无守方行会成员并满足持续条件,系统判新城主。QFunction里可加CheckCastleScore做积分、奖励;不写也能拿沙,写了可做额外发奖。仿盛大做法只需沙城管理NPC、税收、修墙修门、城主发薪,不强制额外积分。

七、沙城税收与修墙修门

沙城管理NPC放沙巴克地图,Market_Def建沙城管理.txt,Merchant按本服字段登记。菜单:

[@main]
沙城管理\ \
查看国库资金 /@castlegold\ \
查看沙城税收 /@castletax\ \
修理城墙 /@repairwall\ \
修理城门 /@repairdoor\ \
雇用弓箭手 /@hirearcher\ \
雇用护卫 /@hireguard\ \
城主发薪 /@masterpay\ \
成员津贴 /@memberpay\ \

[@castlegold]
IF

ISCASTLEGUILD
ACT

SENDMSG 0 沙城当前国库资金以M2城堡管理显示为准
SENDMSG 0 沙城成员NPC消费享8折
ELSEACT

MESSAGEBOX 非沙城行会成员

[@castletax]
IF

ISCASTLEGUILD
ACT

SENDMSG 0 全服NPC交易税率5%,每日税收上限500万
SENDMSG 0 税收自动存入沙城国库,达到上限不再增加
ELSEACT

MESSAGEBOX 仅沙城成员可查看

[@repairwall]
IF

ISCASTLEGUILD
CHECKGOLD 500000
ACT

TAKE 金币 500000
REPAIRCASTLEWALL
SENDMSG 0 已花费50万金币修理城墙
ELSEACT

MESSAGEBOX 需沙城成员身份及50万金币

[@repairdoor]
IF

ISCASTLEGUILD
CHECKGOLD 2000000
ACT

TAKE 金币 2000000
REPAIRCASTLEDOOR
SENDMSG 0 已花费200万金币修理城门
ELSEACT

MESSAGEBOX 需沙城成员身份及200万金币

[@hirearcher]
IF

ISCASTLEGUILD
CHECKGOLD 300000
ACT

TAKE 金币 300000
HIRECASTLEARCHER
SENDMSG 0 已花费30万金币雇用沙城弓箭手
ELSEACT

MESSAGEBOX 需沙城成员身份及30万金币

[@hireguard]
IF

ISCASTLEGUILD
CHECKGOLD 300000
ACT

TAKE 金币 300000
HIRECASTLEGUARD
SENDMSG 0 已花费30万金币雇用沙城护卫
ELSEACT

MESSAGEBOX 需沙城成员身份及30万金币

[@masterpay]
IF

ISCASTLEMASTER
CHECKLEVELEX 40
ACT

GIVE 金币 500000
SENDMSG 6 城主每日薪水50万已发放
ELSEACT

MESSAGEBOX 仅城主且40级以上可领取

[@memberpay]
IF

ISCASTLEGUILD
CHECKLEVELEX 30
ACT

GIVE 金币 200000
SENDMSG 6 沙城成员津贴20万已发放
ELSEACT

MESSAGEBOX 仅沙城成员且30级以上可领取

REPAIRCASTLEWALL、REPAIRCASTLEDOOR、HIRECASTLEARCHER、HIRECASTLEGUARD、ISCASTLEGUILD、ISCASTLEMASTER按本服命令替换。费用与!Setup的RepairWall、RepairDoor、HireArcher、HireGuard保持一致,避免NPC显示金额与实际扣费不同。

八、攻城结束奖励

QFunction或Robot在攻城结束发城主和成员奖励。Robot方式:

AutoRunRobot.txt:
AutoRun NPC RUNONWEEK 6:22:05 @CastleWarReward

RobotManage.txt:

[@CastleWarReward]
IF

ISCASTLEGUILD
ACT

GIVECASTLEMEMBER 金币 200000
SENDMSG 0 沙城行会成员获得攻城津贴20万金币
IF

ISCASTLEMASTER
ACT

GIVE 金币 1000000
SENDMSG 1 城主额外获得攻城奖励100万金币
IF

ISCASTLEGUILD
ACT

GIVECASTLEMEMBER 沙城宝箱 1
SENDMSG 0 沙城成员获得沙城宝箱1个

GIVECASTLEMEMBER按本服命令替换,部分引擎用GiveCastleMember、CastleMemberGive。若本服不支持群体发奖,改由城主在沙城管理NPC点发全行会奖励。

九、防刷与异常控制

攻城申请费不能反复退:申请成功后不提供退款,申请费在ADDCASTLEWARLIST前TAKE,顺序不能反。行会重复申请用CHECKCASTLEWARLIST拦。攻城期间不得用GM命令直接给沙城:禁用@setcastleowner在非攻城时间改城主,避免破坏占领规则。沙城税收每日上限防止工作室刷NPC交易:CastleOneDayGold按经济规模设500万到5000万。城主发薪加等级和ISCASTLEMASTER双条件,防止同名角色冒领。成员津贴加ISCASTLEGUILD和等级条件,防止小号批量建号领。修墙修门先查金币再扣费再执行修理命令,不能先扣费再判断。机器人攻城奖励只在结束5秒后发一次,用变量标记已发,避免每分钟重复发。

十、仿盛大时间表示例

开区前两天手动测试:

AutoRun NPC RUNONDAY 20:00 @CastleWarStart

AutoRun NPC RUNONDAY 22:00 @CastleWarEnd

正式服每周六:

WarDay1=6
StartTime=20:00
EndTime=22:00
ReadyDay=1
ReadyTime=19:00

申请期:周五19:00前
准备期:周五19:00至周六20:00
攻城期:周六20:00至22:00
结算期:周六22:00至22:05
发奖期:周六22:05后5分钟内

十一、排错

不开启攻城:M2沙巴克设置没勾允许申请,或Enable=0,或StartTime/EndTime全空。补WarDay、StartTime、EndTime,重载城堡。
申请NPC没反应:npcs.txt坐标地图错误、脚本名不一致、文件非ANSI、功能码错误。重载NPC或重启M2。
行会申请不上榜:ADDCASTLEWARLIST命令名错,或申请条件未全部满足。M2城堡管理手动添加行会测试。
城门不开:CHECKCASTLEWARTIME或OPENCastleDoor命令名错,或攻城时间未到。手动执行开门命令验证。
皇宫无人占领不判城:守方行会仍在皇宫,或占领持续时间未到。清空皇宫守方再测试。
税收不进国库:CastleTaxRate=0,或CastleGetAllNpcTax未开启,或商店交易不触发税收。改税率并测试NPC交易。
修墙修门费用异常:NPC脚本金额与!Setup不一致。统一改为50万墙、200万门。
城主发薪失败:ISCASTLEMASTER不成立,或行会名与SabukW的OwnGuild不一致。检查OwnGuild含空格、符号、繁简。
攻城奖励重复发:机器人标签未加已发标记。加CASTLEWARREWARD=1判断,次日零点清0。
机器人不触发:AutoRunRobot时间格式错,RobotManage标签名不一致,M2机器人总开关未开。手动执行标签测试。
假人版自动攻城:Robot_def搜攻沙、攻城、沙巴克,注释AutoRun行,清RobotManage对应标签,M2关自动攻城开关。

按城堡配置、M2参数、MapInfo CASTLE、申请NPC、攻城时间表、城门皇宫、税收修墙、攻城奖励八步配置,100%仿盛大沙巴克攻城可以完整运行;只改M2时间不开放MapInfo CASTLE,或只放申请NPC不配城堡参数,都会出现点了申请没反应、到时间不开门、拿了皇宫不认城主。