Ir para conteúdo

Featured Replies

Postado

Iae galera do TibiaKing, estou precisando de uma script de teleport por alavanca com intervalo de 20horas, no caso eu queria que ela só funcionasse com 5 player nos tiles... 

Meu TFS e 1.3

 

 

 

 

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

Resolvido por Dwarfer

Ir para solução
  • Respostas 14
  • Visualizações 3.1k
  • Created
  • Última resposta

Top Posters In This Topic

Posted Images

Postado
  • Solução

Como você não detalhou se o intervalo de 20 horas é para todos os players ou para os players que foram teleportados, assumi que fosse para os players que foram teleportados.

Não tive como testar, fiz aqui rapidão.

 

Em data/actions/scripts crie um arquivo.lua e cole isto dentro:

 

Spoiler

local t = {
    players = { -- posições que os players devem ficar ao puxar a alavanca
        [1] = Position(1,1,1),
        [2] = Position(1,1,1),
        [3] = Position(1,1,1),
        [4] = Position(1,1,1),
        [5] = Position(1,1,1)
    },
    
    boss = {name = "Dwarf Guard", create_pos = Position(1,1,1)},
  
    destination = Position(1,1,1), -- posição para qual os players serão teleportados
    
    cooldown = {20, "hour"}, -- tempo para ser teleportado novamente. Ex.: {2, "sec"}, {5, "min"}, {10, "hour"}, {3, "day"}
    
    storage = 56482 -- storage não utilizado no seu servidor
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local players, tab = {}, t.players
    for i = 1, #tab do
        local tile = Tile(tab[i])
        if tile then
            local p = Player(tile:getTopCreature())
            if p then
                if p:getStorageValue(t.storage) <= os.time() then
                    players[#players + 1] = p:getId()
                end
            end
        end
    end
    if #players < #tab then
        player:sendCancelMessage("No enough players or someone did not wait " .. getStrTime(t.cooldown) .. " to go again.")
        toPosition:sendMagicEffect(CONST_ME_POFF)
        return true
    end
    for i = 1, #tab do
        local playerTile = Tile(tab[i])
        local playerToGo = Player(playerTile:getTopCreature())
        if playerToGo then
            playerToGo:setStorageValue(t.storage, mathtime(t.cooldown) + os.time())
            playerTile:relocateTo(t.destination)
            tab[i]:sendMagicEffect(CONST_ME_POFF)
        end
    end
    t.destination:sendMagicEffect(CONST_ME_TELEPORT)
    Game.createMonster(t.boss.name, t.boss.create_pos)
    item:transform(item.itemid == 1945 and 1946 or 1945)
    return true
end

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return error("Bad declaration in mathtime function.")
end

function getStrTime(table) -- by dwarfer
local unit = {["sec"] = "second",["min"] = "minute",["hour"] = "hour",["day"] = "day"}
return tostring(table[1].." "..unit[table[2]]..(table[1] > 1 and "s" or ""))
end

 

 

No actions.xml adicione a tag e edite o actionid que ficará na alavanca: 

<action actionid="ACTIONID_DA_ALAVANCA" script="NOMEDOARQUIVO.lua"/>

 

Postado
  • Autor

Funcionou perfeitamente do jeito que eu queria meu amigo, teria como aprimorar ela?

 

tipo adicionar a função de quando puxar a alavanca nascer um x monstro no mesmo destino da alavanca ?

 

nao precisa ser o mesmo sqm da alavanca mais algum sqm proximo, essa escript estou usando numa sala de boss.

Editado por Bruno Asap
faltou conteudo (veja o histórico de edições)

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.6k

Informação Importante

Confirmação de Termo