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

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

一、核心命令与参数说明

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

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

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

二、标准申请攻城NPC脚本

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

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

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


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

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

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


2. 执行逻辑(RobotManage.txt):
[@自动申请攻城]
#IF
; 条件:例如开区第2天自动开启
EQUAL GLOBAL(开区天数) 2
#ACT
; 为所有行会(*)申请攻城
ADDTOCASTLEWARLIST 沙巴克 *
SENDMSG 0 系统:沙巴克攻城战已对所有行会开放,将于明晚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交互,适合定时开放的大型战区。