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

传奇限时装备设置教程:双倍勋章 30 分钟计时与消失脚本编写

热度:
一、前期准备:明确核心需求与基础配置
设置 “佩戴计时、30 分钟消失、小退大退计时保留、小退提示剩余时间” 的双倍勋章,需先完成两项基础操作:
装备属性定义:用 DBC2000 打开服务端StdItems.DB数据库,找到 “双倍勋章”(若无则新建),设置关键属性:
Name:双倍勋章;
Shape:15(勋章外观编号,可自行调整);
AC/MC/DC:按需求设置基础属性,重点添加 “经验倍数 + 2” 属性(部分引擎需在StdMode字段设为 128,或通过脚本附加);
Reserved:设为 0(避免与其他特殊属性冲突)。
数据库字段添加:在Character表(角色数据表)新增字段MedalTime(整数型,默认 0),用于存储勋章剩余时间(单位:秒),确保小退大退不丢失计时数据。
二、核心脚本编写:分引擎实现限时功能
不同引擎脚本命令差异较大,以下分别提供 HeroM2、GEE 引擎的完整脚本方案,按需选择对应代码。
(一)HeroM2 引擎脚本(适用多数版本)
1. 佩戴勋章触发计时脚本(存于QuestDiary/Medal/MedalStart.txt)
#IF
CHECKITEM 双倍勋章 1 # 检测是否佩戴双倍勋章
CHECKVAR HUMAN MedalTime = 0 # 检测是否未开始计时
#ACT
SETVAR HUMAN MedalTime 1800 # 设置初始时间1800秒(30分钟)
ADDUSEREXP 1 2 # 附加2倍经验属性(1=经验类型,2=倍数)
SENDMSG 6 双倍勋章已激活!30分钟后自动消失,小退可查看剩余时间。 # 系统提示
SAVEVAR HUMAN MedalTime # 保存时间到数据库
#ELSEIF
CHECKITEM 双倍勋章 1
CHECKVAR HUMAN MedalTime > 0
#ACT
SENDMSG 6 双倍勋章已在计时中,剩余时间:<$HUMAN(MedalTime)/60>分钟 # 提示当前剩余时间

2. 计时递减与消失脚本(存于QuestDiary/Medal/MedalTimer.txt,需设置循环执行)
#IF
CHECKITEM 双倍勋章 1 # 检测是否仍佩戴勋章
CHECKVAR HUMAN MedalTime > 0 # 检测时间是否未结束
#ACT
SETVAR HUMAN MedalTime <$HUMAN(MedalTime)-1> # 每秒减1秒
SAVEVAR HUMAN MedalTime # 实时保存时间
#IF
CHECKVAR HUMAN MedalTime = 0 # 检测时间是否归零
CHECKITEM 双倍勋章 1
#ACT
TAKE 双倍勋章 1 # 移除勋章
CLEARUSEREXP 1 # 取消2倍经验属性
SENDMSG 6 双倍勋章时间已到,已自动消失! # 消失提示
SAVEVAR HUMAN MedalTime # 重置时间为0

循环设置:打开 HeroM2 引擎→“脚本管理”→“循环脚本”→添加MedalTimer.txt,设置执行间隔 1 秒(确保计时精准)。
3. 小退提示剩余时间脚本(存于QuestDiary/Medal/MedalLogout.txt)
#IF
CHECKVAR HUMAN MedalTime > 0 # 检测有剩余时间
#ACT
SENDMSG 6 双倍勋章剩余时间:<$HUMAN(MedalTime)/60>分<$HUMAN(MedalTime)%60>秒,上线后继续计时。 # 小退提示
SAVEVAR HUMAN MedalTime # 再次保存时间,防止数据丢失

触发设置:在 HeroM2 “事件管理”→“角色小退事件” 中,关联MedalLogout.txt脚本,确保小退时自动执行。
(二)GEE 引擎脚本(适配 GEE/GEE2 版本)
1. 佩戴触发计时脚本(存于QuestDiary/Medal/MedalStart.txt)
#IF
ITEMEXIST 双倍勋章 # GEE命令:检测佩戴勋章
HUMANVAR MedalTime = 0
#ACT
HUMANVARSET MedalTime 1800
HUMANADDATTR ExpRate 2 # 附加2倍经验
MESSAGEBOX 双倍勋章激活!30分钟后消失,小退可查剩余时间。
SAVEHUMANVAR MedalTime # 保存到数据库
#ELSEIF
ITEMEXIST 双倍勋章
HUMANVAR MedalTime > 0
#ACT
MESSAGEBOX 双倍勋章剩余:<HUMANVAR(MedalTime)/60>分钟

2. 计时递减与消失脚本(存于QuestDiary/Medal/MedalTimer.txt,设置循环)
#IF
ITEMEXIST 双倍勋章
HUMANVAR MedalTime > 0
#ACT
HUMANVARSET MedalTime <HUMANVAR(MedalTime)-1>
SAVEHUMANVAR MedalTime
#IF
HUMANVAR MedalTime = 0
ITEMEXIST 双倍勋章
#ACT
ITEMTAKE 双倍勋章 1
HUMANADDATTR ExpRate -2 # 取消经验倍数
MESSAGEBOX 双倍勋章已消失!
HUMANVARSET MedalTime 0
SAVEHUMANVAR MedalTime

循环设置:启动 GEE 引擎→“脚本设置”→“全局循环脚本”→添加该脚本,执行周期设 1 秒。
3. 小退提示脚本(存于QuestDiary/Medal/MedalLogout.txt)
#IF
HUMANVAR MedalTime > 0
#ACT
SENDMSG 255 0 0 0 双倍勋章剩余:<HUMANVAR(MedalTime)/60>分<$HUMANVAR(MedalTime)%60>秒 # 彩色提示
SAVEHUMANVAR MedalTime

触发设置:在 GEE “事件配置”→“角色退出事件” 中,选择该脚本作为触发项。
三、脚本关联与功能测试
脚本挂载:
HeroM2:将 3 个脚本路径添加到QuestDiary.txt(如Medal/MedalStart.txt),确保引擎能读取;
GEE:在 “脚本管理”→“加载脚本文件” 中,勾选新增的 3 个脚本。
测试步骤:
登录角色,使用@give 自己 双倍勋章 1获取勋章并佩戴,查看是否提示 “激活计时”;
等待 1-2 分钟,用@humanvar MedalTime(HeroM2)或@gethumanvar MedalTime(GEE)查看时间是否递减;
小退角色,观察是否弹出剩余时间提示;
等待 30 分钟(或修改脚本时间为 10 秒快速测试),确认勋章是否自动消失,经验倍数是否取消。
四、常见问题解决
计时不递减:
检查循环脚本执行间隔是否设为 1 秒,HeroM2 需确认 “循环脚本” 已启用;
验证MedalTime字段是否在Character表中,且脚本中SAVEVAR/SAVEHUMANVAR命令未遗漏。
小退无提示:
HeroM2:确认 “角色小退事件” 已关联MedalLogout.txt,未被其他脚本覆盖;
GEE:检查 “事件配置” 中 “角色退出” 是否选择正确脚本,无重复触发项。
勋章不消失:
查看脚本中TAKE/ITEMTAKE命令是否正确,装备名称与数据库Name字段完全一致(区分大小写);
测试时确保勋章未被放入仓库,仅佩戴在身上。
五、总结
双倍勋章限时功能的核心是 “数据库字段存时间 + 循环脚本减时间 + 事件脚本触发提示”,HeroM2 与 GEE 引擎的脚本命令虽有差异,但逻辑一致。重点注意时间单位(秒)、数据保存命令及事件触发关联,按步骤编写并测试后,即可实现 “佩戴计时、小退提示、到期消失” 的需求,无需复杂工具,新手也能快速配置。
[顶部]