双倍勋章限时装备制作需使用变量记录时间,通过计时器控制消失。脚本分为五个部分:变量初始化、装备佩戴触发、计时器控制、小退时间提示、装备消失处理。使用个人变量记录剩余时间,全局计时器每60秒检测一次,小退上线读取变量显示剩余时间。
变量定义与初始化。在QManage.txt登录脚本中添加变量初始化代码。找到[@Login]段落,添加以下内容:
[@Login]
#IF
#ACT
MOV U99 0
MOV N99 0
U99用于记录勋章是否佩戴(0未佩戴,1已佩戴),N99记录剩余秒数。在QFunction-0.txt中定义装备佩戴触发,检测双倍勋章佩戴状态。
装备佩戴触发脚本。在QFunction-0.txt中添加以下代码:
[@TakeOnX]
#IF
EQUAL U99 0
CHECKITEMW 双倍勋章
#ACT
MOV U99 1
MOV N99 1800
SENDMSG 0 玩家<$USERNAME>佩戴双倍勋章,获得30分钟双倍经验时间
SENDMSG 6 双倍勋章已激活,剩余时间:30分钟
TakeOnX是装备佩戴触发标签,X为装备位置编号(勋章位置通常为2)。CHECKITEMW检测是否佩戴双倍勋章,MOV N99 1800设置1800秒(30分钟)。SENDMSG发送提示信息。
计时器控制脚本。在QManage.txt中添加计时器检测代码:
[@OnTimer0]
#IF
EQUAL U99 1
LARGE N99 0
#ACT
DEC N99 60
#IF
EQUAL U99 1
SMALL N99 1
#ACT
MOV U99 0
TakeOff 2
SENDMSG 0 玩家<$USERNAME>的双倍勋章时间已到,装备已消失
SENDMSG 6 双倍勋章时间结束,装备已自动卸下
BREAK
OnTimer0为每分钟触发一次的计时器。DEC N99 60每60秒减少60秒。当N99小于1时,执行TakeOff 2卸下勋章位置装备,清除变量并发送提示。
小退时间提示脚本。在QFunction-0.txt中添加小退触发:
[@PlayOffline]
#IF
EQUAL U99 1
#ACT
SENDMSG 6 双倍勋章剩余时间:<$STR(N99)>秒
PlayOffline为小退触发标签。小退时发送剩余时间提示。大退同样触发此标签,确保时间持续计算。
登录时间恢复脚本。在QManage.txt的[@Login]段落补充:
[@Login]
#IF
EQUAL U99 1
LARGE N99 0
#ACT
SENDMSG 6 双倍勋章剩余时间:<$STR(N99)>秒
#ELSEACT
MOV U99 0
登录时检测如果U99为1且N99大于0,显示剩余时间。否则重置变量状态。
计时器启动控制。在装备佩戴触发脚本中增加计时器启动:
[@TakeOnX]
#IF
EQUAL U99 0
CHECKITEMW 双倍勋章
#ACT
MOV U99 1
MOV N99 1800
SetOffTimer 0
SetOnTimer 0 60
SENDMSG 0 玩家<$USERNAME>佩戴双倍勋章,获得30分钟双倍经验时间
SENDMSG 6 双倍勋章已激活,剩余时间:30分钟
SetOnTimer 0 60启动0号计时器,每60秒触发一次。SetOffTimer 0在装备消失时关闭计时器。
装备卸下处理。在QFunction-0.txt中添加卸下触发:
[@TakeOffX]
#IF
EQUAL U99 1
#ACT
MOV U99 0
SetOffTimer 0
SENDMSG 6 双倍勋章已卸下,计时停止
TakeOffX为装备卸下触发标签。卸下装备时停止计时器,重置变量。
时间显示格式优化。将秒数转换为分钟显示,修改提示脚本:
#IF
EQUAL U99 1
#ACT
DIV N99 60
SENDMSG 6 双倍勋章剩余时间:<$STR(N99)>分钟
DIV N99 60将秒数转换为分钟。更直观显示剩余时间。
双倍经验效果实现。在计时器检测中增加经验倍数控制:
[@OnTimer0]
#IF
EQUAL U99 1
LARGE N99 0
#ACT
DEC N99 60
ChangeExp + 200
#IF
EQUAL U99 1
SMALL N99 1
#ACT
MOV U99 0
TakeOff 2
SENDMSG 0 玩家<$USERNAME>的双倍勋章时间已到,装备已消失
SENDMSG 6 双倍勋章时间结束,装备已自动卸下
BREAK
ChangeExp + 200每60秒增加200经验,实现双倍效果。可根据需要调整经验值。
装备属性脚本。双倍勋章物品数据库设置:
双倍勋章;62;10;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;5;5000;5000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
62为勋章类型,10为重量,1为持久,5为需要等级,5000为防御和魔防。Anicount字段可设置特殊属性。
变量保存与读取。使用SAVEVAR命令保存变量到文件:
#ACT
SAVEVAR HUMAN U99 ..\QuestDiary\数据文件\双倍勋章.txt
SAVEVAR HUMAN N99 ..\QuestDiary\数据文件\双倍勋章.txt
在登录脚本中加载变量:
#ACT
LOADVAR HUMAN U99 ..\QuestDiary\数据文件\双倍勋章.txt
LOADVAR HUMAN N99 ..\QuestDiary\数据文件\双倍勋章.txt
确保小退大退后变量不丢失。
多角色支持。使用全局变量G99和G100替代个人变量:
#ACT
INC G99 <$USERNAME> 1
INC G100 <$USERNAME> 1800
G99和G100为全局变量数组,以角色名为索引。支持同一账号多个角色独立计时。
时间暂停功能。添加命令暂停计时:
[@Main]
#IF
EQUAL U99 1
#ACT
SetOffTimer 0
SENDMSG 6 双倍勋章计时已暂停
暂停后重新启动计时器:
#ACT
SetOnTimer 0 60
SENDMSG 6 双倍勋章计时已恢复
时间增加功能。添加命令延长勋章时间:
#IF
CHECKITEM 时间宝石 1
#ACT
Take 时间宝石 1
INC N99 600
SENDMSG 6 双倍勋章时间增加10分钟,剩余时间:<$STR(N99)>秒
使用时间宝石道具增加600秒(10分钟)。
时间显示NPC。创建NPC显示剩余时间:
[@ShowTime]
#IF
EQUAL U99 1
#ACT
DIV N99 60
SENDMSG 6 双倍勋章剩余时间:<$STR(N99)>分钟
#ELSEACT
SENDMSG 6 当前未佩戴双倍勋章
装备掉落保护。防止勋章掉落,在QFunction-0.txt中添加:
[@DropItem]
#IF
EQUAL U99 1
CHECKITEM 双倍勋章
#ACT
SENDMSG 6 双倍勋章无法丢弃
RecoverItem 双倍勋章
DropItem触发时检测如果是双倍勋章,自动回收并提示。
交易限制。防止勋章交易,在QFunction-0.txt中添加:
[@DealItem]
#IF
CHECKITEM 双倍勋章
#ACT
SENDMSG 6 双倍勋章无法交易
BREAK
DealItem触发时中断交易。
仓库存储限制。防止勋章存仓库,在QFunction-0.txt中添加:
[@StorageItem]
#IF
CHECKITEM 双倍勋章
#ACT
SENDMSG 6 双倍勋章无法存入仓库
BREAK
StorageItem触发时中断存储。
装备修理限制。防止勋章修理,在QFunction-0.txt中添加:
[@RepairItem]
#IF
CHECKITEM 双倍勋章
#ACT
SENDMSG 6 双倍勋章无法修理
BREAK
RepairItem触发时中断修理。
时间到期提示优化。提前5分钟提示:
[@OnTimer0]
#IF
EQUAL U99 1
EQUAL N99 300
#ACT
SENDMSG 6 双倍勋章剩余时间不足5分钟
当剩余300秒(5分钟)时发送提示。
多个勋章支持。使用数组变量支持多个限时装备:
#ACT
MOV U98 1
MOV N98 1800
MOV U97 1
MOV N97 3600
U98、N98记录第一个勋章,U97、N97记录第二个勋章。分别控制不同装备的计时。
日志记录功能。记录勋章使用情况:
#ACT
SAVETEXT ..\QuestDiary\数据文件\勋章日志.txt <$USERNAME> 佩戴双倍勋章 <$DATETIME>
佩戴时记录到日志文件,便于查询。
通过上述脚本组合,实现双倍勋章30分钟限时功能。核心在于变量记录时间、计时器控制倒计时、小退大退变量保存。脚本需放置正确位置,QManage.txt和QFunction-0.txt为关键文件。测试时注意变量初始化,避免残留数据影响新角色。计时器频率可根据需要调整,60秒检测一次平衡性能与精度。

