帮我写一个根据在线时长,转化为双倍经验时长的脚本
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-06-28 19:02:28 |
👁️ 阅读: 5
要实现根据在线时长转化为双倍经验时长的脚本,可以参考课程日志中关于在线时长记录和双倍经验保存的思路。
首先,需要记录玩家的在线时长。课程日志提到,没有直接的命令获取在线时长,需要使用定时器每秒触发,然后换算。我们可以使用一个定时器,每秒增加一个变量,这个变量就代表累计的在线秒数。
其次,需要设计一个机制,让玩家可以将累计的在线时长兑换成双倍经验时间。这通常需要提供一个NPC或界面。
以下是一个基础的脚本实现框架,包含登录触发、定时器、以及兑换功能:
**1. 登录触发与定时器设置 (在 QFunction-0.txt 或 登录触发脚本中)**
```txt
[@Login]
#IF
#ACT
; 初始化或读取已保存的在线时长变量(例如使用 HUMAN 变量)
CALCVAR HUMAN 累计在线秒数 = <$HUMAN(累计在线秒数)>
SAVEVAR HUMAN 累计在线秒数
; 启动一个每秒触发的定时器
SetOffTimer 0 1
```
**2. 定时器触发,累计在线时长 (在 QFunction-0.txt 的 @OnTimer0 标签下)**
```txt
[@OnTimer0]
#IF
#ACT
; 每秒将“累计在线秒数”变量加1
CALCVAR HUMAN 累计在线秒数 + 1
SAVEVAR HUMAN 累计在线秒数
; 可以在这里添加其他逻辑,比如每满3600秒(1小时)给个提示
FORMULATION <$HUMAN(累计在线秒数)> % 3600 N$取余
#IF
EQUAL N$取余 0
#ACT
FORMULATION <$HUMAN(累计在线秒数)> / 3600 N$已在线小时
SENDMSG 6 您已累计在线<$STR(N$已在线小时)>小时,可兑换双倍经验时间。
```
**3. 兑换双倍经验时间的NPC脚本示例**
假设创建一个NPC,玩家点击后可以查看并兑换。
```txt
[@Main]
#IF
#ACT
; 计算可兑换的分钟数(例如每在线60秒兑换1分钟双倍经验)
FORMULATION <$HUMAN(累计在线秒数)> / 60 N$可兑换分钟数
#SAY
<Img|x=161.0|y=113.0|reset=1|loadDelay=1|show=0|esc=1|img=public_win32/1900000610.png|move=0|bg=1>
<Layout|x=780.0|y=101.0|width=80|height=80|link=@exit>
<Button|x=800.0|y=114.0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>
欢迎来到时长兑换使者。\
\ \
您当前的累计在线时长:<$HUMAN(累计在线秒数)>秒。\
可兑换的双倍经验时间:<$STR(N$可兑换分钟数)>分钟。\
\ \
<兑换所有可兑换时长/@兑换时长>\
<离开/@exit>
[@兑换时长]
#IF
#ACT
; 再次计算可兑换分钟数
FORMULATION <$HUMAN(累计在线秒数)> / 60 N$可兑换分钟数
#IF
LARGE N$可兑换分钟数 0
#ACT
; 赋予双倍经验(例如200%经验,持续N$可兑换分钟数分钟)
KILLMONEXPRATE 200 <$STR(N$可兑换分钟数)>
; 清空累计的在线时长变量
CALCVAR HUMAN 累计在线秒数 = 0
SAVEVAR HUMAN 累计在线秒数
SENDMSG 6 成功兑换<$STR(N$可兑换分钟数)>分钟双倍经验时间!
#ELSESAY
您的在线时长不足以兑换任何双倍经验时间。\
<返回/@Main>
```
**4. 小退/大退时保存双倍经验状态(可选增强)**
如果希望兑换的双倍经验时间在小退/大退后不消失,需要按照课程日志的建议,在退出触发时保存状态,在登录时恢复。这需要用到变量记录剩余的倍率时间,并在 `[@Login]` 中判断并重新赋予 `KILLMONEXPRATE`。由于问题聚焦于时长兑换,此部分可作为扩展功能实现。
这个脚本提供了从记录在线时长到兑换的双向流程。兑换比例(每秒兑换多少分钟)和双倍经验倍率可以根据你的需求调整 `FORMULATION` 中的公式和 `KILLMONEXPRATE` 的参数。
← 返回问答库