如何获取定时奖励?

我正在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

如果有人有一些我可以查看的示例代码,或者向我展示如何完成此操作,我将非常感激!

点赞
用户1442917
用户1442917

我觉得你让问题变得太难了。如果你想要计算现在和下一个(或上一个)奖励之间的时间差,你需要捕捉你给出奖励的秒数,并且加上 4*60*60

local lastbonus = os.time() - 1*60*60 - 2*60 - 30 -- 1 小时,2 分钟,30 秒前
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 调用中的 ! 是格式的一部分,用于指定要在协调世界时格式化的日期,并不会出现在输出中。

2013-09-18 05:42:44