传奇双倍勋章限时设置:30 分钟消失 + 退服计时保留脚本教程

来源: 作者: 点击:
传奇中 “双倍勋章” 的限时功能需通过 Quest 脚本实现,核心是 “佩戴触发计时 + 人物变量存时 + 退服读取变量 + 超时删除物品”,以下为完整脚本制作步骤,含物品定义、计时逻辑、小退提示代码。
一、核心功能实现原理
计时存储:用人物专属变量(如 HUMAN_ZXMedalTime)记录勋章剩余时间(单位:秒),30 分钟即 1800 秒,佩戴时初始化变量,每秒自动减 1;
退服保留:人物下线(小退 / 大退)时,变量数据自动存入数据库,上线后读取变量继续计时,避免时间重置;
小退提示:在人物 Logout(下线)脚本中添加变量读取命令,触发 “剩余时间” 提示;
超时消失:当变量值≤0 时,脚本自动删除人物身上的双倍勋章,并移除双倍属性效果。
二、详细脚本制作步骤(适配主流传奇引擎)
1. 第一步:定义双倍勋章物品(物品数据库配置)
先在 “Mir200\Envir\Item.txt”(物品数据库)中添加双倍勋章属性,确保物品可被脚本识别:
; 物品ID 名称 类型 基础属性 特殊属性 脚本触发标识
12345 双倍勋章 饰品 攻击+5 魔法+5 道术+5 双倍攻击(2倍) @ZXMedalWear ; 佩戴时触发@ZXMedalWear脚本

说明:12345 为自定义物品 ID(需确保不与现有物品重复),“@ZXMedalWear” 是佩戴触发的脚本入口。
2. 第二步:佩戴触发计时脚本(核心计时逻辑)
在 “Mir200\Envir\QuestDiary\ 勋章限时 \ZXMedal.qf” 新建脚本文件,写入佩戴触发与自动计时代码:
; 佩戴勋章时触发:初始化剩余时间1800秒(30分钟)
[@ZXMedalWear]
#IF
CHECKHUMANITEM 12345 ; 检查是否佩戴双倍勋章
CHECKHUMANVAR HUMAN_ZXMedalTime < 1 ; 检查变量是否未初始化
#ACT
SETHUMANVAR HUMAN_ZXMedalTime 1800 ; 设置初始时间1800秒
SENDMSG 6 【双倍勋章】已激活!30分钟后自动消失,退服不重置计时。 ; 系统提示(6为橙色字体)
GOTO @ZXMedalTimer ; 跳转至计时循环

; 计时循环:每秒减1,直到时间为0
[@ZXMedalTimer]
#IF
CHECKHUMANVAR HUMAN_ZXMedalTime > 0 ; 剩余时间>0
CHECKHUMANITEM 12345 ; 确保勋章仍在身上
#ACT
DELAY 1000 ; 延迟1000毫秒(1秒)
SETHUMANVAR HUMAN_ZXMedalTime - 1 ; 时间减1
GOTO @ZXMedalTimer ; 循环计时
#ELSEACT
TAKE 12345 1 ; 时间≤0,删除双倍勋章
SENDMSG 6 【双倍勋章】时间已到,自动回收! ; 消失提示
CLEARHUMANVAR HUMAN_ZXMedalTime ; 清空变量,避免残留

3. 第三步:小退提示与时间保存脚本(退服不丢时间)
在 “Mir200\Envir\QuestDiary\Common\Logout.qf”(人物下线脚本)中添加小退提示代码,读取剩余时间并提示:
; 小退时触发:读取勋章剩余时间并提示
[@Logout]
#IF
CHECKHUMANVAR HUMAN_ZXMedalTime > 0 ; 存在有效计时
CHECKHUMANITEM 12345 ; 勋章仍在身上
#ACT
CALCVAR HUMAN_ZXMedalTime / 60 = Min ; 秒转分钟(便于阅读)
SENDMSG 6 【双倍勋章】剩余时间:<$HUMAN_ZXMedalTime>秒(约<$Min>分钟),下次上线继续计时。 ; 小退提示
#ELSEACT
; 无有效计时,不提示

说明:人物大退时,引擎会自动保存 HUMAN_ZXMedalTime 变量至数据库;上线时无需额外脚本,变量会自动加载,计时继续。
4. 第四步:双倍属性生效脚本(确保效果随勋章存在)
若需勋章佩戴时实时生效双倍攻击,在 “Mir200\Envir\QuestDiary\ 勋章限时 \ZXMedal.qf” 补充属性触发代码:
; 每秒检查勋章是否佩戴,同步双倍属性
[@ZXMedalAttr]
#IF
CHECKHUMANITEM 12345 ; 佩戴勋章
CHECKHUMANVAR HUMAN_ZXMedalTime > 0 ; 计时有效
#ACT
SETATTACK 2 ; 设置攻击为2倍(双倍效果)
DELAY 1000
GOTO @ZXMedalAttr
#ELSEACT
SETATTACK 1 ; 未佩戴/计时结束,恢复正常攻击
CLEARHUMANVAR HUMAN_ZXMedalTime

注:需在人物登录脚本(@Login)中添加 “GOTO @ZXMedalAttr”,确保上线后自动检查属性。
三、脚本整合与测试步骤
文件放置:将 “ZXMedal.qf” 放入 “QuestDiary\ 勋章限时” 目录,确保所有脚本文件编码为 ANSI(避免乱码);
引擎配置:打开 “Mir200\Envir\QuestEnv.txt”,添加 “勋章限时 = ZXMedal.qf”,让引擎加载脚本;
测试流程:
用 GM 命令 “@make 12345 1” 生成双倍勋章,佩戴后查看是否提示 “激活 30 分钟”;
佩戴后等待 10 秒,小退再上线,检查系统提示是否显示 “剩余 1790 秒”;
手动将变量设为 10 秒(GM 命令 “@sethumanvar HUMAN_ZXMedalTime 10”),观察 10 秒后勋章是否自动消失。
四、关键注意事项
物品 ID(12345)需在 “Item.txt” 中唯一,若已存在,需替换为未使用的 ID;
延迟命令(DELAY)需根据引擎支持调整,部分引擎需写 “WAIT” 而非 “DELAY”;
若服务器有 “物品回收” 功能,需在回收脚本中添加 “CHECKHUMANVAR HUMAN_ZXMedalTime > 0” 判断,避免勋章被误回收;
变量 “HUMAN_ZXMedalTime” 需避免与其他脚本重名,建议前缀加 “ZX”(如 “ZXMedal”)区分。