Ir para conteúdo
  • 0

Ajuda no meu item


thalesrj12

Pergunta

to com um sistema de item teleport, queria por para ao usar o item levar 10 segundos usando apos isso executa o  doteleport e enquanto passa os 10 segundos executar uma animação effeito num = 1004.

 

alguem pode me ajudar ?

function onUse(cid, item, frompos, item2, topos)

    local store = 23562 -- storage q salva o delay
    local delay = 1 -- tempo em segundos de delay
    local storage = 23563
    local cidade = getPlayerTown(cid)
    local pos = getTownTemplePosition(cidade) 
    
    if getPlayerStorageValue(cid, store) - os.time() >= 0 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, string.format("Aguarde %.2f minutos para usar novamente.", (getPlayerStorageValue(cid, store) - os.time()) / 60))
        return true
    end
    
    if getCreatureCondition(cid, CONDITION_INFIGHT) then
        doPlayerSendCancel(cid, 'Voce nao pode teleportar se estiver em battle.')
        return true
    end
    
    doPlayerSendCancel(cid,"Teleportado !")
    
    doTeleportThing(cid, pos)
    
    if getPlayerStorageValue(cid, 84929) >= 1 then--torneio viktor
       setPlayerStorageValue(cid, 84929, -1)
    end
    doRegainSpeed(cid) 
    doPlayerRemoveItem(cid, 2458, 1)
    setPlayerStorageValue(cid, store, os.time() + delay*60)
    doSendMagicEffect(getPlayerPosition(cid),110)
return true
end

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom dia,

 

Testa isso:

 

function onUse(cid, item, frompos, item2, topos)
    local store = 23562 -- storage que salva o delay
    local delay = 10 -- tempo em segundos de delay (agora 10 segundos)
    local storage = 23563
    local cidade = getPlayerTown(cid)
    local pos = getTownTemplePosition(cidade)

    if getPlayerStorageValue(cid, store) - os.time() >= 0 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, string.format("Aguarde %.2f minutos para usar novamente.", (getPlayerStorageValue(cid, store) - os.time()) / 60))
        return true
    end

    if getCreatureCondition(cid, CONDITION_INFIGHT) then
        doPlayerSendCancel(cid, 'Você não pode teleportar se estiver em uma batalha.')
        return true
    }

    doPlayerSendCancel(cid, "Teleportando!")

    doSendMagicEffect(getPlayerPosition(cid), 1004) -- Animacao de efeito (alterei para 1004)

    addEvent(function()
        doTeleportThing(cid, pos)

        if getPlayerStorageValue(cid, 84929) >= 1 then -- torneio viktor
            setPlayerStorageValue(cid, 84929, -1)
        end

        doRegainSpeed(cid)
    end, delay * 1000) -- O atraso é em milissegundos, por isso multiplicamos por 1000 para 10 segundos.

    doPlayerRemoveItem(cid, 2458, 1)
    setPlayerStorageValue(cid, store, os.time() + delay)
    return true
end

 

Utilizei a função addEvent para agendar a execução da função doTeleportThing após o atraso de 10 segundos, e executei a animação de efeito imediatamente após a mensagem de "Teleportando".

 

Certifique-se de que o valor passado para doSendMagicEffect seja o correto para a animação que você deseja.

Certifique-se também de que sua implementação do doSendMagicEffect funcione corretamente com o valor 1004.

Outro detalhe, o teleportando está no doPlayerSendCancel mesmo? Achei o nome meio estranho para o que faz.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...