传奇怎么弄沙城主奖励脚本?攻城后自动发奖 + 全服提示这样做

来源: 作者: 点击:
沙巴克攻城战结束后,给城主发奖励并通知全服,是提升玩家热情的好办法。想实现 “攻城结束 5 分钟后自动弹奖励框,领取后全服出彩色提示” 的效果,关键要抓准时间节点、人物权限和消息推送这三个环节。下面一步步说清楚脚本怎么搭,每个细节该怎么设置。
先定 “时间触发器”:让脚本知道什么时候启动
首先得让服务器 “记住攻城结束时间”。沙巴克攻城通常有固定结束点,比如晚上 10 点,脚本里可以用 “GetAttackEndTime” 这类命令获取官方结束时间,再加上 5 分钟延迟 —— 写成 “StartTime = GetAttackEndTime + 300”(300 秒即 5 分钟)。这样不管攻城是准时结束还是提前结束,脚本都能准确算出奖励发放的启动时间。
接着加个 “倒计时检测”。用循环命令让脚本每隔 10 秒检查一次当前时间,比如 “While 当前时间 < StartTime 就等待 10 秒”,直到时间到了再执行下一步。这里要注意避开服务器维护时段,加个判断:“如果当前服务器状态是维护中,就暂停脚本,恢复后重新计时”,避免奖励发放出错。
为防意外,再留个 “手动触发开关”。比如 GM 在控制台输入 “StartShabakReward” 命令,能强制启动奖励流程,应对攻城时间临时调整的情况。脚本里写 “如果检测到该命令,就忽略之前的时间设置,直接进入发奖环节”,灵活应对各种情况。
再设 “城主身份验证”:确保奖励发给正确的人
首先要 “锁定沙巴克城主信息”。攻城结束后,服务器会记录获胜行会的会长和沙城主(有的服是会长自动成为城主,有的需要手动设置),用 “GetShabakLord” 命令能获取城主的角色名和 ID。脚本里要写 “LordName = GetShabakLord (0)”“LordID = GetShabakLord (1)”,分别保存名字和 ID,避免后续身份变动影响发奖。
如果是 “双城主机制”(比如会长和指定城主各一名),要让脚本识别两个角色。可以在行会数据里加个 “副城主” 字段,用 “GetGuildMember (行会 ID, 副城主职位 ID)” 命令提取第二个人的信息,保存为 “Lord2Name”“Lord2ID”。记得加判断:“如果副城主不存在,就只给会长发奖”,避免空数据报错。
还要验证 “城主是否在线”。如果城主刚好离线,弹框就没意义了。脚本里用 “CheckOnline (LordID)” 命令检测,在线就正常弹框;不在线的话,改成 “邮件发放奖励”,并记录 “城主离线,奖励已发至邮箱”,等玩家上线后能看到。
核心环节:弹奖励框 + 发奖励
先设计 “奖励领取对话框”。用 “ShowDialog” 命令调用界面模板,框里要显示奖励内容(比如 “城主专属武器 + 1000 元宝”)和 “领取” 按钮。模板路径通常在客户端的 “UI/Dialog/ShabakReward.xml”,可以在里面设置按钮颜色、字体大小,让界面更醒目。
点击领取后,要 “执行发奖动作”。脚本里绑定按钮事件:“当点击领取按钮时,给 LordID 发送物品和元宝”。发物品用 “GiveItem (LordID, 物品 ID, 数量)”,比如 “GiveItem (LordID, 10086, 1)”(10086 是城主武器的 ID);发元宝用 “AddYuanBao (LordID, 1000)”。发完后加个判断:“如果发送失败(比如背包满了),就提示‘背包空间不足,请清理后重新领取’”。
双城主的话,要 “同时触发两个对话框”。用 “ShowDialog” 分别给 LordID 和 Lord2ID 弹框,两人领取互不影响。但要注意 “防止重复领取”,加个标记:“领取后将 LordID 状态设为‘已领取’,再次点击时提示‘奖励已发放’”。
最后一步:全服彩色提示怎么推
领取成功后,先 “获取提示文本”。提前在脚本里写好模板:“恭喜【% s】成功领取沙巴克城主奖励,全服玩家共享喜悦!”,其中 “% s” 会自动替换成城主名字(双城主就用 “【% s】和【% s】”)。彩色字体用特殊符号控制,比如 “<color=255,0,0>” 代表红色,“<color=0,255,0>” 代表绿色,整句写成 “<color=255,215,0 > 恭喜【% s】成功领取...”(金色字体)。
再用 “全服广播命令” 推送。不同引擎命令不同,GOM 引擎用 “SendBroadCast (0, 文本内容,0)”,其中 “0” 代表全服范围;GEE 引擎用 “WorldMsg (文本内容,255)”(255 是全服频道)。要确保命令里包含彩色符号,比如 “SendBroadCast (0, "<color=255,215,0 > 恭喜...", 0)”,客户端才能正确显示彩色效果。
为增强仪式感,还能 “加个音效和特效”。在广播的同时,用 “PlaySound (全服玩家 ID, 音效 ID)” 播放庆祝音乐,用 “ShowEffect (全服玩家 ID, 特效 ID)” 在每个人屏幕中间显示烟花特效。这些 ID 可以在客户端的 “Sound” 和 “Effect” 文件夹里找到,选个喜庆的就行。
细节调试:让脚本更可靠
测试 “时间准确性”。可以在测试服模拟攻城结束,看 5 分钟后是否准时弹框,误差最好控制在 10 秒内。如果不准,检查服务器时间是否同步,把 “等待 10 秒” 改成 “等待 1 秒”,提高检测精度。
验证 “权限判断”。用小号假装城主,看会不会错误弹框;再让城主离线,测试邮件发放是否正常。确保只有真实城主能领取,避免奖励发错人。
检查 “彩色提示兼容性”。不同分辨率的客户端可能显示异常,在 1024×768 和 1920×1080 两种分辨率下测试,确保彩色字不重叠、不消失。如果有乱码,检查符号是否正确(要用英文半角符号)。
比如有个 1.85 合击服的 GM,按这个思路做了脚本:攻城结束 5 分钟后,城主和副城主屏幕弹出金色边框的奖励框,领取后全服出现 “<color=255,0,255> 恭喜【战神】和【法神】荣登沙巴克,奖励已发放!” 的紫色提示,还伴随 “沙巴克胜利” 的音效,玩家反馈仪式感满满。
其实做这个脚本,就像组织一场颁奖礼 —— 先确定时间,再核对获奖人,然后颁奖并通知全场。关键是把每个步骤的条件写清楚,多在测试服模拟各种情况(比如城主离线、背包满了),确保正式服运行时不出岔子。这样既能让城主有成就感,也能激励其他玩家下次攻城更卖力。