Ir para conteúdo

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

Featured Replies

Postado

Olá, bem essa é minha primeira postagem e não sei se estou na área correta. Sempre me virei com scripts pegando "um pouco ali, um pouco aqui", mas dessa vez estou precisando de ajuda com esse script é o seguinte:

 

Coloquei um mecanismo tipo alavanca, ao clicar, o player abrir os portões, e depois de 5min os portões se fecham(aparecem) automaticamente.

post-55245-0-81851700-1420660812_thumb.j

 

post-55245-0-06513700-1420663016_thumb.j

 

O problema é que qualquer player pode ir la e abrir depois dos 5min

Eu queria que tive-se um intervalo de tempo para clicar na alavanca

 

Ex: Um Player clica-se e abri-se os portões, depois de 5min os portões se fecharem automaticamente (como está no script), mas que só pude-se abrir(usar a alavanca) novamente depois de 1h.

 

Portao.LUA

 

function onUse(cid, item, frompos, item2, topos)
item1pos = {x=470, y=243, z=7, stackpos=1} -- Posição do Portão 1
item2pos = {x=471, y=243, z=7, stackpos=1} -- Posição do Portão 2
getitem1 = getThingfromPos(item1pos)
getitem2 = getThingfromPos(item2pos)
UniID = 2330 -- UniqueID que vai ser adicionado na alavanca
item1ID = 9485   -- id do Portão 1
item2ID = 9485   -- id do Portão 2
 
if item.uid == UniID and item.itemid == 9531 and getitem1.itemid == item1ID then
doRemoveItem(getitem1.uid, 1)
doTransformItem(item.uid, item.itemid)
doSendMagicEffect(item1pos, 2)
broadcastMessage('Os Portões da ponte the Castle of Titans foi aberto, e se fechará em 5 minutos', MESSAGE_EVENT_ADVANCE)
addEvent(doCreateItem, 300000, 9485, 1, item1pos)
end
 
if item.uid == UniID and item.itemid == 9531 and getitem2.itemid == item2ID then
doRemoveItem(getitem2.uid, 1)
doTransformItem(item.uid, item.itemid)
doSendMagicEffect(item2pos, 2)
addEvent(doCreateItem, 300000, 9485, 1, item2pos)     
end
return TRUE
end

 

 

Agradeço desde já  :D

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

F3lip3

Resolvido por zipter98

Ir para solução
  • 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

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)

Do jeito que fiz, na minha opinião, a configuração é mais fácil (se quiser adicionar um novo portão, basta colocar a posição na tabela gates).

Enfim, aqui o código:

ps: o tempo começa a ser contado depois de 5 minutos, no momento em que os portões são criados.

function onUse(cid, item, frompos, item2, topos)
    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
        return doPlayerSendCancel(cid, "Espere 1h para usar a alavanca novamente.")
    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

Cara funfo direitinho obrigado!

 

Só tinha um probleminha: quando o player clica na alavanca ficava mandando o "broadcastMessage" direto até que depois de 5min os portões aparece-se, ai parava com o "doPlayerSendCancel", mas arrumei, eu removi o addevent do "setGlobalStorageValue", agora ta perfect!   :D

 

Queria mais uma coisa se possível!

(Que somente players com guild possam usar a alavanca)

 

Agradeço se poder ajuda e se não poder também agradeço pela ajuda.

F3lip3

Postado

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 outro pedido, vou só terminar de comer e faço.

EDIT: Pronto, aqui:

function onUse(cid, item, frompos, item2, topos)
    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
        return doPlayerSendCancel(cid, "Espere 1h para usar a alavanca novamente.")
    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

Cara vlw,

Você é foda  :D

 

Rsrsrs  :rolleyes:  posso pedir só mais uma coisa? Juro que é a ultima coisa

Tem como coloca o tempo que falta para pega a alavanca

EX: retirar esse

target40x40.png
return doPlayerSendCancel(cid, "Espere 1h para usar a alavanca novamente.")

E coloca um assim

target40x40.png
return doPlayerSendCancel(cid, "[Castle of Titans] Você deve aguardar 60 minuto(s) para usar a alavanca.")

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

 

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