21:03分的时候根据地图内的人数,决定分配沙奖的具体数(奖励以邮件发放)那这个策划用刚刚和你说的怎么样
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-20 15:46:47 |
👁️ 阅读: 17
我是lua后端老师!
小仙,你这个想法很好啊!用刚才讨论的时间判断方式,结合地图人数来分配沙城奖励,这个思路是完全可行的。不过需要补充一些关键功能来实现完整的逻辑。
让我给你一个完整的实现方案:
```lua
-- 沙城奖励分配函数
function distributeCastleReward()
-- 获取当前时间
local currentHour = tonumber(getconst(actor, "<$Hour>"))
local currentMinute = tonumber(getconst(actor, "<$MINUTE>"))
-- 检查是否为21点03分
if currentHour ~= 21 or currentMinute ~= 3 then
return false
end
-- 获取地图内玩家数量
local playerCount = getplaycount(actor) -- 获取当前地图玩家数量
-- 根据人数决定奖励分配
local rewardAmount = 0
if playerCount >= 100 then
rewardAmount = 10000 -- 100人以上,奖励10000
elseif playerCount >= 50 then
rewardAmount = 5000 -- 50-99人,奖励5000
elseif playerCount >= 20 then
rewardAmount = 2000 -- 20-49人,奖励2000
else
rewardAmount = 1000 -- 20人以下,奖励1000
end
-- 获取当前地图所有玩家
local playerList = getplaycount(actor) -- 这个函数返回玩家列表
-- 给每个玩家发送邮件奖励
for _, playerId in ipairs(playerList) do
-- 发送奖励邮件
sendmail(
playerId, -- 玩家ID
1, -- 邮件ID(自定义)
"沙城争霸奖励", -- 邮件标题
"恭喜您在沙城争霸中获胜!获得奖励:"..rewardAmount.."元宝", -- 邮件内容
"元宝#"..rewardAmount.."#0" -- 奖励物品:元宝#数量#绑定标记(0=不绑定)
)
-- 发送系统提示
sendmsg(playerId, 1, "恭喜获得沙城争霸奖励:"..rewardAmount.."元宝,已通过邮件发放!")
end
-- 记录日志
release_print("沙城奖励发放完成,参与人数:"..playerCount..",每人奖励:"..rewardAmount)
return true
end
-- 定时器触发函数
function onTimer_2103()
distributeCastleReward()
end
```
**需要补充的关键点:**
1. **定时器设置**:你需要在QF触发器中设置一个定时器,在21:03分触发
```lua
-- 在QF中设置定时器
setontimer(actor, 2103, 60) -- 每分钟检查一次
```
2. **触发接口**:在QF中对应的触发接口
```lua
function ontimer_2103(actor)
distributeCastleReward()
end
```
3. **优化建议**:
- 可以增加玩家状态检查(是否在线、是否在指定地图等)
- 可以增加奖励物品的多样性(不只是元宝)
- 可以增加日志记录,方便追踪
这个方案结合了你刚才的时间判断思路,再加上地图人数统计和邮件发放功能,就是一个完整的沙城奖励系统了!
不懂的可以问浮生梦尊师!
← 返回问答库