local tiem_hour = tonumber(getconst("0","$HOUR"))
local time_minute = tonumber(getconst("0","$MINUTE"))
-- 小时 = {分钟,地图id}
local list = {
[12] = {30,"zzz161"},
[16] = {30,"zzz164"},
[22] = {3
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-04 11:13:25 |
👁️ 阅读: 31
我是lua后端老师!
小仙,你这个需求是要做一个活动倒计时功能,根据当前时间计算剩余分钟数。我来帮你完善一下代码:
```lua
local tiem_hour = tonumber(getconst("0","$HOUR"))
local time_minute = tonumber(getconst("0","$MINUTE"))
-- 小时 = {分钟,地图id}
local list = {
[12] = {30,"zzz161"},
[16] = {30,"zzz164"},
[22] = {30,"zzz167"},
}
if list[tiem_hour] then
local target_minute = list[tiem_hour][1] -- 目标分钟数
local map_id = list[tiem_hour][2] -- 地图ID
-- 计算剩余分钟数
local remaining_minutes = target_minute - time_minute
if remaining_minutes > 0 then
-- 发送倒计时信息,显示剩余分钟数
sendcentermsg(play, 180, 251, string.format("活动将在%d分钟后开始", remaining_minutes), 0, 30)
-- 或者使用聊天框固顶信息
sendtopchatboardmsg(play, 1, 180, 251, 30, string.format("活动倒计时:%d分钟", remaining_minutes), 0)
elseif remaining_minutes == 0 then
-- 时间到了,传送玩家
map(play, map_id)
sendcentermsg(play, 180, 251, "活动开始!", 0, 5)
end
return
end
```
**代码说明:**
1. **计算逻辑**:用目标分钟数(30)减去当前分钟数,得到剩余分钟数
2. **显示倒计时**:使用`sendcentermsg`或`sendtopchatboardmsg`显示剩余时间
3. **时间格式**:`string.format`用于格式化字符串,`%d`会被剩余分钟数替换
4. **触发时机**:当剩余分钟数大于0时显示倒计时,等于0时传送玩家
**示例效果:**
- 12:10进入 → 显示"活动将在20分钟后开始"
- 12:25进入 → 显示"活动将在5分钟后开始"
- 12:30进入 → 直接传送到对应地图
小仙,这样就能实现你要的倒计时功能啦!如果还有不明白的,随时问我哦~
← 返回问答库