Ir para conteúdo

(Resolvido)[Resolvido] Alavanca que possa usar em um intervalo de tempo

Featured Replies

Postado
ó que fique contando regressivamente: 60 minuto(s) / 59 minuto(s) / 58 minuto(s).

Fiz uma função pra retornar o tempo do modo como você quer, porém não testei.

Códigos do membro zipter98:

function getGlobalExhaust(key)
    local t = getGlobalStorageValue(key)
    exhaust = math.floor((t - os.time()) / 60) > 0 and math.floor((t - os.time()) / 60) or 0
    return exhaust
end

local gates = {
    {x = 470, y = 243, z = 7},     --Posições dos portões.
    {x = 471, y = 243, z = 7}
}

local etime = {5, 60} -- {tempo para fechar, tempo para usar} ~ em minutos
local id = 9485 -- ID do portão.
local gstor = 91801 -- global storage

function onUse(cid, item, frompos, item2, topos)
    if getGlobalStorageValue(gstor) > os.time() then
        return doPlayerSendCancel(cid, "[Castle of Titans] Você deve aguardar "..getGlobalExhaust(gstor).." minuto(s) para usar a alavanca.")
    elseif getPlayerGuildId(cid) < 1 then
        return doPlayerSendCancel(cid, "You aren't member of any guild.")
    end
    
    for _, b in pairs(gates) do
        local gate = getTileItemById(b, id).uid
        if gate > 0 then
            doRemoveItem(gate, 1)
            doSendMagicEffect(b, 2)
            addEvent(function()
                doCreateItem(id, 1, b)
            end, 5 * 60 * 1000)
        else
            return doPlayerSendCancel(cid, "Someone already opened the gates.")
        end
    end
    
    broadcastMessage('Os Portões da ponte the Castle of Titans foram abertos, e se fecharão em 5 minutos', MESSAGE_EVENT_ADVANCE)
    addEvent(setGlobalStorageValue, etime[1] * 60000, gstor, os.time() + etime[2] * 60)
    return true
end

The corrupt fear us.

The honest support us.

The heroic join us.

  • Respostas 11
  • Visualizações 1.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Se você colocar o uniqueid na tag desta action, não vai ser necessário checá-lo no código. Se não se importa, removi esta linha, que, ao meu ver, era inútil: doTransformItem(item.uid, item.itemid)

  • Opa, nesse exato momento estou almoçando. Estava pensando neste código, e então lembrei que não tinha feito nenhuma proteção contra esse bug. Editei meu comentário anterior com a correção.  Sobre seu

  • Fiz uma função pra retornar o tempo do modo como você quer, porém não testei. Códigos do membro zipter98: function getGlobalExhaust(key)     local t = getGlobalStorageValue(key)     exhaust = ma

Posted Images

Postado
  • Autor

não deu nenhum erro no distro, mas, bugou!

Tipo: quando o player clica na alavanca, depois de 5min, quando os portões fecharem, o player consegue abrir denovo  :unsure:

F3lip3

Postado
  • Solução

Hm, curioso. Tenta esse:

ps: se não se importa, eu coloquei pra mostrar os segundos também (acho mais legal e.e). caso você não goste, só avisar que eu retiro.

function convertTime(time)
    local minutes = math.floor(time/60)
    local seconds = time - (minutes * 60)       
    return {minutes, seconds}
end
function onUse(cid, item, frompos, item2, topos)
    local msg = "[Castle of Titans] Você deve aguardar %d minuto%s e %d segundo%s para usar a alavanca."
    local gates = {
        {x = 470, y = 243, z = 7},     --Posições dos portões.
        {x = 471, y = 243, z = 7},
    }
    local id = 9485    --ID do portão.
    if getGlobalStorageValue(91801) > os.time() then
        local t = convertTime(getGlobalStorageValue(91801) - os.time())
        return doPlayerSendCancel(cid, msg:format(t[1], t[1] > 1 and "s" or "", t[2], t[2] > 1 and "s" or ""))
    elseif getPlayerGuildId(cid) < 1 then
        return doPlayerSendCancel(cid, "You aren't member of any guild.")
    end
    for _, b in pairs(gates) do
        local gate = getTileItemById(b, id).uid
        if gate > 0 then
            doRemoveItem(gate, 1)
            doSendMagicEffect(b, 2)
            addEvent(function()
                doCreateItem(id, 1, b)
            end, 5 * 60 * 1000)
        else
            return doPlayerSendCancel(cid, "Someone already opened the gates.")
        end
    end
    broadcastMessage('Os Portões da ponte the Castle of Titans foram abertos, e se fecharão em 5 minutos', MESSAGE_EVENT_ADVANCE)
    addEvent(function()
        setGlobalStorageValue(91801, os.time() + 3600)
    end, 5 * 60 * 1000)
    return true
end

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Postado
  • Autor

Você é o cara zipter98  :palmas:

Funfo direito agora, do jeito que eu queria!

Obrigado! pela ajuda pessoal (zipter98)

Juro que não peço mais nada rsrs.

 

Aqui um print

post-55245-0-82875100-1420755550_thumb.j

 

Muito Obrigado!

Editado por shadowfall (veja o histórico de edições)

F3lip3

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo