WI
pedido

Teleport Dinâmico

Por willscarlate, 29 de dez. de 2013 em Scripts

script
9
1.3k
29 de dezembro de 2013 às 16:18

Olá galera.

 

Gostaria de saber se alguém tem um script ou idéia de como montar um teleport dinamicamente...

 

exemplo, imagem um comando:

 

/create tp x,y,z

 

passando as cordenadas, para onde o teleport apontasse...

 

Fiz algumas tentativas mas não consegui ir muito à fundo, por enquanto, isso faz parte de um sistema que estou criando para meu OT e postarei para vocês em breve, garanto que vai ajudar muita gente!!

 

Agradeço, um abraço!!

zipter98Z
29 de dezembro de 2013 às 19:47

Não entendi muito bem. O x, y e z dos parâmetros seriam as coordenadas para onde o teleport levaria, certo? Porém, onde o teleport seria criado? Na posição de quem executou o comando?

30 de dezembro de 2013 às 08:35

Isso! Exatamente.

 

Vamos supor, estou parado no DP de Thais, e sei as cordenadas de um lugar onde quero levar os players, preciso abrir um teleport para lá...

 

Aí entraria o comando para criar, passando por parametro as cordenadas de DESTINO (x,y,z) do teleport...

 

Lembrando que seria uma "vía de mão única", teleport somente de ida.

WillOliveiraW
30 de dezembro de 2013 às 12:51

Em talkactions/scripts crie o arquivo createtp.lua e cole isso dentro:

function onSay(cid, words, param)

local t = string.explode(param, ",")

if not tonumber(t[1]) or not tonumber(t[4]) then
doPlayerSendTextMessage(cid, 21, "O comando requer a segunda posiçao.")
end

if doCreateTeleport (1387, {x = t[4], y = t[5], z = t[6]}, {x = t[1], y = t[2], z = t[3]}) then
doPlayerSendTextMessage(cid, 25, "O teleport foi criado com sucesso!")
end
return true
end

Em talkactions.xml adicione essa tag:

<talkaction words="/createtp;!createtp" acess="5" event="script" value="createtp.lua"/> 

Para criar o tp digite /createtp ou !createtp e depois as cordenadas, lembrando que as cordenadas onde o tp vai ser criado vem primeiro, por exemplo:

/createtp 123, 456, 7, 321, 654, 8

 

Em azul são as cordenadas onde o tp vai ser criado e em vermelho são as cordenadas pra onde o tp levará o jogador.

Editado Dezembro 30 por WillOliveira

30 de dezembro de 2013 às 13:56

Em talkactions/scripts crie o arquivo createtp.lua e cole isso dentro:

function onSay(cid, words, param)

local t = string.explode(param, ",")

if not tonumber(t[1]) or not tonumber(t[4]) then
doPlayerSendTextMessage(cid, 21, "O comando requer a segunda posiçao.")
end

if doCreateTeleport (1387, {x = t[4], y = t[5], z = t[6]}, {x = t[1], y = t[2], z = t[3]}) then
doPlayerSendTextMessage(cid, 25, "O teleport foi criado com sucesso!")
end
return true
end

Em talkactions.xml adicione essa tag:

<talkaction words="/createtp;!createtp" acess="5" event="script" value="createtp.lua"/> 

Para criar o tp digite /createtp ou !createtp e depois as cordenadas, lembrando que as cordenadas onde o tp vai ser criado vem primeiro, por exemplo:

/createtp 123, 456, 7, 321, 654, 8

 

Em azul são as cordenadas onde o tp vai ser criado e em vermelho são as cordenadas pra onde o tp levará o jogador.

 

Cara, excelente, era isso mesmo que eu procurava.

 

Não querendo abusar de vocês pessoal, mas teria como, por exemplo, a partir do momento que eu abri esse portal, contar um tempo e ele fechar, excluir, sumir automaticamente?

WillOliveiraW
30 de dezembro de 2013 às 14:18

Vou tentar fazer aqui e já edito, se ajudei dê um rep+ pelo menos mdr.gif

Editado Dezembro 30 por WillOliveira

zipter98Z
30 de dezembro de 2013 às 14:58

Tenta assim:

 

function onSay(cid, words, param)
 
local t = string.explode(param, ",")
local tempo = xxx     --Tempo, em segundos, para o teleport desaparecer.
 
    if not tonumber(t[1]) or not tonumber(t[4]) then
        doPlayerSendTextMessage(cid, 21, "O comando requer a segunda posiçao.")
    end
 
    if doCreateTeleport(1387, {x = t[4], y = t[5], z = t[6]}, {x = t[1], y = t[2], z = t[3]}) then
        doPlayerSendTextMessage(cid, 25, "O teleport foi criado com sucesso!")
    end
    addEvent(function()
        local pos = {x = tonumber(t[1]), y = tonumber(t[2]), z = tonumber(t[3])}
        local tp = getTileItemById(pos, 1387).uid
        if tp > 0 then
            doRemoveItem(tp, 1)
        end
    end, tempo * 1000)
    return true
end
30 de dezembro de 2013 às 21:56

Como eu dou REP pra vcs? :B Consegui mesclar os scripts que voces passarem e atingi meu resultado ideal!

zipter98Z
30 de dezembro de 2013 às 21:59

Só clicar no Curtir, próximo ao comentário.

 

Sanado, movido.

Editado Dezembro 30 por zipter98