• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

os.time

UnLucky

New Member
Joined
Jul 15, 2021
Messages
36
Reaction score
1
GitHub
UnLucky
At my Lua Potions. The problem is with os.time which I can't set to 1s.
When there is (55555, os. Time () + 0) "1s", the potion often drinks 2 pots at the same time.
Someone know how fix it ?

Lua:
local drunk = Condition(CONDITION_DRUNK)
drunk:setParameter(CONDITION_PARAM_TICKS, 60000)

local poison = Condition(CONDITION_POISON)
poison:setParameter(CONDITION_PARAM_DELAYED, true)
poison:setParameter(CONDITION_PARAM_MINVALUE, -50)
poison:setParameter(CONDITION_PARAM_MAXVALUE, -120)
poison:setParameter(CONDITION_PARAM_STARTVALUE, -5)
poison:setParameter(CONDITION_PARAM_TICKINTERVAL, 4000)
poison:setParameter(CONDITION_PARAM_FORCEUPDATE, true)

local fluidMessage = {
    [3] = "Aah...",
    [4] = "Urgh!",
    [5] = "Mmmh.",
    [7] = "Aaaah...",
    [10] = "Aaaah...",
    [11] = "Urgh!",
    [13] = "Urgh!",
    [15] = "Aah...",
    [19] = "Urgh!"
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
        if player:getStorageValue(55555) >= os.time() then
        player:sendTextMessage(MESSAGE_STATUS_SMALL, "You are exhausted")
        return true
    end
        if target:isPlayer() then
        player:setStorageValue(55555, os.time() + 0)


    end
    local targetType = ItemType(target.itemid)
    if targetType:isFluidContainer() then
        if target.type == 0 and item.type ~= 0 then
            target:transform(target.itemid, item.type)
            item:transform(item.itemid, 0)
            return true
        elseif target.type ~= 0 and item.type == 0 then
            target:transform(target.itemid, 0)
            item:transform(item.itemid, target.type)
            return true
        end
    end

    if target.itemid == 1 then
        if item.type == 0 then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, 'It is empty.')

        elseif target.uid == player.uid then
            if isInArray({3, 15}, item.type) then
                player:addCondition(drunk)

            elseif item.type == 4 then
                player:addCondition(poison)

            elseif item.type == 7 then
                player:addMana(math.random(50, 150))
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)

            elseif item.type == 10 then
                player:addHealth(60)
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            end

            player:say(fluidMessage[item.type] or "Gulp.", TALKTYPE_MONSTER_SAY)
            item:transform(item.itemid, 0)
        else
            local pool = Game.createItem(2016, item.type, toPosition)
            if pool then
                pool:decay()
            end
            item:transform(item.itemid, 0)
        end

    else
        local fluidSource = targetType:getFluidSource()
        if fluidSource ~= 0 then
            item:transform(item.itemid, fluidSource)

        elseif item.type == 0 then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")

        else
            if toPosition.x == CONTAINER_POSITION then
                toPosition = player:getPosition()
            end

            local pool = Game.createItem(2016, item.type, toPosition)
            if pool then
                pool:decay()
            end
        end
        item:transform(item.itemid, 0)
    end

    return true
end
 
os.time() + 0 is just "current time in seconds". If you want exhaust then change that 0 to the amount of seconds that this exhaust should last.
 
Use os.mtime() instead.

It counts using milliseconds instead of seconds.

1000 = 1 second
 
Back
Top