要实现“攻城结束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分钟后自动收到领奖提示,点击后全服玩家均能看到彩色公告,极大提升攻城战的仪式感与奖励反馈。
传奇攻城结束5分钟后沙城主自动弹窗领奖及全服公告脚本实现方案
来源:
作者:
点击:

