我正在Lua制作一个游戏 - 特别是Corona SDK - 而且我坚持一个定时健康奖励(玩家每4个小时获得一次健康奖励),第二部分是玩家获得免费旋转轮式游戏,让他们有机会赢取游戏中使用的免费物品。
让我感到困惑的部分是如何让定时奖励准确(例如每4小时一天)来发放奖金的功能?我还希望有一个倒计时器显示小时:分钟:可以收集下一个可用奖金之前的几秒钟。这不可能吗?
到目前为止,这是我的一些代码......
function hourlyBonus()
local date = os.date( "*t" )
local currentHour = date.hour
lastHourlyBonusClaimedHour =
GameSave.lastHourlyBonusClaimedHour or date.hour
--account for the 24 hour clock
if currentHour > 12 then
currentHour = currentHour - 12
end
if lastHourlyBonusClaimedHour > 12 then
lastHourlyBonusClaimedHour = lastHourlyBonusClaimedHour - 12
end
if currentHour == (lastHourlyBonusClaimedHour + 4) then
lastHourlyBonusClaimedHour = currentHour
-- increase the bonus
print("New 4 hour bonus ThisHour is: " .. thisHourNum)
else
local hoursToWait = (4 - (currentHour - lastHourlyBonusClaimedHour))
--have to wait for hourly bonus
print("Have to wait: "
.. hoursToWait .. "hours, "
.. minutes .. "minutes, and "
.. second .. "seconds to collect hourly Bonus still!"
)
print("CurrentHour is:" .. currentHour)
print("LastHourlyBonusClaimedHour is :" .. lastHourlyBonusClaimedHour)
end
GameSave.lastHourlyBonusClaimedHour = lastHourlyBonusClaimedHour
GameSave:save()
end
如果有人有一些示例代码我可以看一下或告诉我如何做到这一点我会非常感激!
答案 0 :(得分:1)
我认为你让自己太难了。如果你想计算现在的时间和下一个奖励(或最后的奖金)之间的差异,你需要获得奖励并添加4*60*60
的秒数:
local lastbonus = os.time() - 1*60*60 - 2*60 - 30 -- 1 hour, 2 minutes, 30 seconds ago
local nextbonus = lastbonus + 4*60*60
local timeleft = nextbonus - os.time()
print(timeleft > 0 and os.date("!Left %H:%M:%S", timeleft) or "Bonus time!")
这应该返回/打印Left 02:57:30
。
[根据lhf的评论更新;感谢Luiz!]请注意!
调用中的os.date
是格式的一部分,用于指示在协调世界时间内格式化的日期,并且不会出现在输出中。