传奇攻城结束5分钟后沙城主自动弹窗领奖及全服公告脚本实现方案

来源: 作者: 点击:
要实现“攻城结束5分钟后,沙城主自动弹出领奖对话框,点击后全服弹出彩色公告”的功能,需结合定时脚本、条件判断、对话框触发与全服消息发送四大模块。以下为完整实现步骤,适用于主流传奇引擎(如Gee、GOM等)。

第一步:设置攻城结束后的定时触发

攻城结束时间由服务器配置决定,但脚本需在攻城结束后5分钟执行。可通过机器人脚本(AutoRunRobot.txt)设置定时任务。

在D:MirServerMir200EnvirRobot_defAutoRunRobot.txt中添加:

AutoRun NPC RUNONWAR 5 @SandReward 按攻城结束后多少分钟运行

此命令表示:攻城结束后5分钟,自动触发[@SandReward]脚本段。

第二步:编写沙城主奖励领取脚本

在D:MirServerMir200EnvirRobot_defRobotManage.txt中编写[@SandReward]脚本:

[@SandReward]
IF
ISCASTLEMASTER
SAY
\
恭喜您成为沙巴克城主!\
请点击下方按钮领取专属奖励。\
\

ELSEACT
BREAK

说明:

ISCASTLEMASTER:检测当前玩家是否为沙巴克城主。
#SAY:弹出对话框,仅对符合条件的玩家显示。
点击“领取奖励”后跳转至[@GetSandPrize]。

第三步:实现点击领取后的奖励发放与全服公告

继续在RobotManage.txt中编写[@GetSandPrize]脚本:

[@GetSandPrize]
IF
ISCASTLEMASTER
ACT
GIVE 元宝 1000
GIVE 沙城令牌 1
SENDMSG 0 /SCOLOR=254}>已成功领取沙巴克城主奖励!\
SENDMSG 0
KILLMONEXPRATE 120 7200
SET [100] 1
ELSESAY
你不是沙巴克城主!

说明:

GIVE:发放元宝、道具等奖励。
SENDMSG 0:向全服发送消息,0表示全服广播。
/SCOLOR=254}>:使用彩色字体显示玩家名字,颜色代码254为亮黄色。
KILLMONEXPRATE 120 7200:给全服玩家增加20%打怪经验,持续7200秒(2小时)。
SET [100] 1:设置变量,防止重复领取。

第四步:防止重复领取(可选)

在[@SandReward]前增加变量检测:

[@SandReward]
IF
ISCASTLEMASTER
CHECK [100] 0
SAY
\
恭喜您成为沙巴克城主!\

ELSEACT
SENDMSG 6 你已经领取过本次沙城奖励!
BREAK

第五步:彩色字体显示技巧

传奇脚本中实现彩色字体需使用SCOLOR或FCOLOR标签:

:静态彩色文字。
/SCOLOR=254}>:变量文字彩色显示。
颜色代码参考:
254:亮黄
253:粉红
250:青色
69:绿色

第六步:测试与调试

手动触发测试:在M2Server中手动执行Gmexecute @SandReward,验证脚本逻辑。
模拟攻城结束:通过GM命令结束攻城,观察5分钟后是否自动触发。
检查变量状态:使用CHECK [100]确保重复领取被拦截。

补充说明:攻城状态检测命令

若需动态检测攻城状态,可使用:

CHECKUNDERWAR 沙巴克:检测是否正在攻城。
CASTLEWARAY > 0:检测上次攻城到现在的天数。
ISCASTLEGUILD:检测是否为沙城成员。

总结

该脚本实现逻辑清晰,分为定时触发、身份验证、弹窗交互、奖励发放、全服公告五个环节,完全满足“攻城结束5分钟后自动弹窗领奖+全服彩色公告”的需求。关键在于:

使用RUNONWAR实现攻城结束后的精准延时。
利用ISCASTLEMASTER确保仅城主可见。
通过SENDMSG 0与SCOLOR实现全服彩色公告。
变量控制防止重复领取。

部署后,沙城主将在攻城结束5分钟后自动收到领奖提示,点击后全服玩家均能看到彩色公告,极大提升攻城战的仪式感与奖励反馈。