如何获得定时奖金

时间:2013-09-18 02:30:39

标签: lua corona

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

如果有人有一些示例代码我可以看一下或告诉我如何做到这一点我会非常感激!

1 个答案:

答案 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是格式的一部分,用于指示在协调世界时间内格式化的日期,并且不会出现在输出中。