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

传奇申请行会攻城脚本编写与命令详解

热度:
申请行会攻城主要依赖ADDTOCASTLEWARLIST命令,配合行会权限与物品检测逻辑。以下为GOM/GEE引擎的标准脚本写法。

一、核心命令与参数说明

命令格式:
ADDTOCASTLEWARLIST城堡名称行会名称天数

•城堡名称:通常为“沙巴克”。必须与Envir/Castle目录下的城堡配置文件名称一致。

-行会名称:填写具体行会名,或使用*代表所有行会,使用<$GUILDNAME>代表当前玩家所在行会。
•天数:指定几天后开始攻城。留空则遵循M2引擎默认设置(通常为第二天)。

二、标准申请攻城NPC脚本

将以下脚本保存至Envir\Market_Def\下的NPC文件(如沙城管理员-3.txt)。
[@main]
#IF
;基础条件检测:必须有行会且是会长
HAVEGUILD
ISGUILDMASTER
;可选条件:检测是否已申请过(避免重复)
;CHECKCASTLEWARLIST<$GUILDNAME>
#ACT
OPENMERCHANTBIGDLG3971011143015
#SAY
═══════════════════════\\
★沙巴克攻城申请中心★\\
═══════════════════════\\
\<申请攻城/@申请攻城>-提交行会攻城申请\\
\<查看状态/@查看状态>-查询当前申请情况\\
\<关闭/@exit>

[@申请攻城]
#IF
;1.权限检测:必须是会长
ISGUILDMASTER
;2.物品消耗:检测并扣除祖玛头像(物品名需与数据库一致)
CHECKITEM祖玛头像1
;3.状态检测:未在攻城列表中(若引擎支持CHECKCASTLEWARLIST)
;CHECKCASTLEWARLIST<$GUILDNAME>=0
#ACT
;扣除物品
TAKE祖玛头像1
;执行申请:将当前行会加入沙巴克攻城列表,天数留空
ADDTOCASTLEWARLIST沙巴克<$GUILDNAME>
SENDMSG6提示:行会【<$GUILDNAME>】已成功申请攻城!
SENDMSG0全服公告:行会【<$GUILDNAME>】已提交沙巴克攻城申请!
BREAK
#ELSESAY
申请失败!请检查:\\
1.你是否是行会会长?\\
2.是否已拥有【祖玛头像】?\\
3.行会是否已申请过攻城?\\
\<返回/@main>

[@查看状态]
#IF
HAVEGUILD
#ACT
;此处可扩展查询逻辑,通常需配合全局变量记录
SENDMSG6提示:你的行会【<$GUILDNAME>】已加入攻城战列表。
BREAK
#ELSESAY
你尚未加入任何行会。\\
\<返回/@main>


三、机器人自动申请(全服开放)

若需在开区特定时间自动为所有行会申请攻城,需使用Robot_def机器人脚本。

1.自动执行脚本(AutoRunRobot.txt):
#AutoRunNPCRUNONDAY20:00@自动申请攻城


2.执行逻辑(RobotManage.txt):
[@自动申请攻城]
#IF
;条件:例如开区第2天自动开启
EQUALGLOBAL(开区天数)2
#ACT
;为所有行会(*)申请攻城
ADDTOCASTLEWARLIST沙巴克*
SENDMSG0系统:沙巴克攻城战已对所有行会开放,将于明晚20:00开启!
BREAK


四、常见错误与排查

1.提示“行会不存在”:<$GUILDNAME>变量为空或行会名错误。确认玩家已加入行会且脚本中使用了HAVEGUILD检测。
2.申请后列表无记录:检查Envir/Castle/SabukW.txt中的CastleWarZone时间段设置,若未配置攻城日期,命令可能不生效。
3.权限不足:脚本中必须包含ISGUILDMASTER检测,非会长无权申请。
4.命令不生效:部分老版本引擎使用ADDTOCASTLEWARLIST需配合StartCastleWar命令手动开启攻城,或需在M2“城堡设置”中手动加载列表。

五、相关文件与扩展

•城堡配置文件:Envir/Castle/SabukW.txt(修改攻城奖励、城门血量)。

-攻城时间:通常在SabukW.txt的CastleWarTime字段设置,脚本中的“天数”参数是相对于该时间的偏移量。
-QF触发:可在QFunction-0.txt中添加[@CastleWarList]段,在行会加入列表时触发额外事件。

注意:脚本中的“祖玛头像”检测是经典玩法,若版本无此物品,可删除CHECKITEM和TAKE行。使用机器人脚本自动申请时,无需NPC交互,适合定时开放的大型战区。
[顶部]