传奇双倍勋章30分钟限时脚本:佩戴计时与小退提示

来源: 作者: 点击:
方案一:GOM/GEE引擎内置限时功能(推荐)

若使用GOM或GEE引擎,无需复杂脚本,直接利用引擎内置的Need字段实现。此方案最稳定,自动支持小退大退续时。

数据库设置

在服务端数据库(如HeroDB)中找到你的双倍勋章装备,修改以下字段:
-Need:设置为101(代表限时物品)。
•NeedLevel:设置为30(代表30分钟)。

-Source:建议设为1。

保存后重启M2。玩家佩戴后自动倒计时,时间到自动消失,小退再上时间不重置。

小退提示脚本

在QFunction-0.txt中添加以下脚本,实现小退上线时的剩余时间弹窗:

[@Login]
#IF
CHECKUSEITEM2=双倍勋章;2是勋章位置编号
#ACT
GetItemRemainingTime2N1;获取剩余时间存入N1
#IF
LARGEN10
#ACT
CALCVARN2=<$STR(N1)>/60;换算为分钟
SENDMSG6你的双倍勋章剩余时间:<$STR(N2)>分钟
BREAK


方案二:HERO引擎脚本计时方案

若引擎不支持GetItemRemainingTime命令,需手动编写计时逻辑,利用Unix时间戳记录结束时间。

数据库与穿戴触发

1.数据库设置:勋章装备的StdMode设为勋章代码(如18),Shape设为2(双倍经验属性需配合脚本)。
2.穿戴触发:在QFunction-0.txt中写入:

[@TakeOn2];2是勋章位置
#IF
CHECKITEMNAME双倍勋章
#ACT
;如果未记录过结束时间,则设置(当前时间+1800秒)
#IF
EQUALG100
#ACT
MOVG10<$UNIXTIME>
CALCVARG10+1800
;开启每秒检测的定时器
SetOnTimer11
SENDMSG6双倍勋章已激活,剩余30分钟。
BREAK


定时检测与消失

在QManage.txt或QFunction-0.txt中继续写入定时器执行逻辑:

[@OnTimer1]
#IF
CHECKUSEITEM2=双倍勋章
#ACT
;计算剩余时间
CALCVARN1=<$STR(G10)>-<$UNIXTIME>
;如果时间到
#IF
SMALLN11
#ACT
TakeOffItem2
SENDMSG6双倍勋章时间已到,自动消失。
SetOffTimer1
BREAK
;正常倒计时
#IF
LARGEN10
#ACT
CALCVARN2=<$STR(N1)>/60
SENDMSG6双倍勋章剩余:<$STR(N2)>分钟
BREAK


小退上线读取时间

在QManage.txt的[@Login]段加入检测,确保小退后定时器继续工作:

[@Login]
#IF
CHECKUSEITEM2=双倍勋章
#ACT
;检测G10是否已超时
#IF
LARGEG10<$UNIXTIME>
#ACT
SetOnTimer11
SENDMSG6双倍勋章计时继续。
#ELSEACT
TakeOffItem2
SENDMSG6勋章已过期。
BREAK


关键参数与位置代码

•装备位置:衣服(0)、武器(1)、勋章(2)、项链(3)、头盔(4)。脚本中的TakeOn2和CheckUseItem2即针对勋章位。

-时间存储:方案二使用G变量(如G10)存储结束时间戳,因为G变量支持跨地图保存,小退不丢失。避免使用临时变量P或M。
-双倍属性:真正的双倍经验通常需配合CHANGEEXP+命令或引擎M2的“双倍经验勋章”基础设置,脚本仅负责计时和消失逻辑。

常见报错与排查

1.计时不准确:检查!Setup.txt中的TimeZone时区设置,确保服务器时间与本地一致。
2.小退时间重置:确认使用的是G变量(全局个人变量)而非P变量(临时变量)。
3.不触发TakeOn:确认数据库里勋章的StdMode和Shape字段正确,且AniCount未设置特殊触发编号(否则会走StdModeFunc触发)。
[顶部]