Não entendo muito de scripts, mas acho que ou é impossível, ou no mínimo muito difícil, pelo fato de que acho que teria que botar cada sqm em que o player pode parar, caso contrário, ele pode acabar dentro de uma parede ou alguma casa.
info
Grupo: Visconde
Registrado: 23/11/07
Posts: 309
Reputação: +6

info
Grupo: Campones
Registrado: 28/12/11
Posts: 15
Reputação: +1
Char no Tibia: GOD Mehah

mas tem os sqm certo pra ele teleportar entende??
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort

tenta usar esse talkactions que modifiquei, ta testado jah:
function removeTp(lugardele)
doRemoveItem(getThingfromPos(lugardele).uid, 1)
end
function onSay(cid, words, param)
local config = {
exhaustionInSeconds = 30, -- exausted em segundos.
storage = 34534,
pz = "no", -- players precisam estar em protection zone para usar? ("yes" or "no").
battle = "yes", -- players deve estar sem battle ("yes" or "no")
custo = "no", -- se os teleport irão custa ("yes" or "no")
premium = "no" -- se precisa ser premium account ("yes" or "no")
}
-------------Config Lugares----------------
local lugar = {
["sul"] = {{x=2461, y=2419, z=7}, 50, 2000}, -- posição={x,y,x}, lvl necessario=50, custo se tiver = 2000gps.
["west"] = {{x=2269, y=2264, z=7}, 50, 1000},
["east"] = {{x=2997, y=2163, z=7}, 50, 2000},
["nort"] = {{x=2531, y=1726, z=7}, 50, 2000},
["center"] = {{x=2577, y=2086, z=7}, 50, 2000}
}
local locais = {"sul", "west", "east", "nort", "center"} -- coloque os nomes dos locais
local tpmath = lugar[locais[math.random(1, 5)]] -- não mexa!
local position = getPlayerPosition(cid) -- posição atual do player, não mexa!
local tempo = 30 -- tempo e segundos para o teleport sumir
-------------/Config Checkar não mecha----------------
local lugar = lugar[param]
if (param == "check") then
for name, pos in pairs(lugar) do
text = "Destination: "..name..", Level required: "..pos[2]..","
if(config.battle == "yes") then
text = text.." Sorry, you are in battle."
else
text = text.." You can use while fighting: No"
end
if(config.pz == "yes") then
text = text.." You should use in protection zone: Yes"
else
text = text.." You should use in protection zone: No"
end
if (pos[3] == TRUE) then
text = text..", Cost: "..pos[4]..";"
end
doPlayerSendTextMessage(cid, 20, ""..text.."")
end
return TRUE
end
if(exhaustion.check(cid, config.storage) == TRUE) then
if (exhaustion.get(cid, 34534) >= 60) then
doPlayerSendCancel(cid, "You can only teleport after [" .. math.floor(exhaustion.get(cid, 34534) / 60 + 1) .."] minutes.")
end
if (exhaustion.get(cid, 34534) <= 60) then
doPlayerSendCancel(cid, "You can only teleport after [" .. exhaustion.get(cid, 34534).."] seconds.")
end
return TRUE
end
if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You should be in the protection zone for use.")
return TRUE
end
if(config.premium == "yes") and (not isPremium(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Only players with premium account can use.")
return TRUE
end
if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You can not use in battle.")
return TRUE
end
if lugar ~= nil then
if not(lugar) then
doPlayerSendTextMessage(cid, 22, "Sorry, this place does not exist.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return TRUE
end
if (getPlayerLevel(cid) <= lugar[2]) then
doPlayerSendTextMessage(cid, 22, "Sorry, you don't have level. You need "..lugar[2].." level or more to be teleported.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return TRUE
end
if(config.custo == "yes") and (doPlayerRemoveMoney(cid, lugar[3]) == FALSE) then
doPlayerSendTextMessage(cid, 22, "Sorry, you do not have enough money. You need "..lugar[3].." zenis to be teleported.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return TRUE
end
end
if (param == "") then
doCreateTeleport(1387, tpmath[1], {x=position.x+1, y=position.y, z=position.z})
lugardele = {x=position.x+1, y=position.y, z=position.z, stackpos=1}
doCreatureSay(cid, "O teleport irá sumir em "..tempo.." segundos.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tempo*1000, lugardele)
exhaustion.set(cid, config.storage, config.exhaustionInSeconds)
return TRUE
end
exhaustion.set(cid, config.storage, config.exhaustionInSeconds)
doCreateTeleport(1387, lugar[1], {x=position.x+1, y=position.y, z=position.z})
lugardele = {x=position.x+1, y=position.y, z=position.z, stackpos=1}
doCreatureSay(cid, "O teleport irá sumir em "..tempo.." segundos.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tempo*1000, lugardele)
return TRUE
end
Editado Janeiro 29 por Jhon992
info
Grupo: Campones
Registrado: 28/12/11
Posts: 15
Reputação: +1
Char no Tibia: GOD Mehah

mas não é um talkaction que eu preciso, e sim uma spell :S mas voo dar uma olhada
@edit
Ele só fala exevo port ele ja teleporta para um local automaticamente selecionado, ja quando da Exevo Port "City 1 ele vai pro templo da cidade nº 1
Editado Janeiro 29 por Mehahbr
info
Grupo: Campones
Registrado: 29/04/08
Posts: 35
Reputação: +3
Char no Tibia: Roya Latex

eu acho q é só pegar o script do Jhon992 e fazer como talkactions..e lá nos talkactions...tu adiciona a linha em talkactions.lua
coloca assim
<talkaction words="exevo port" filter="word-spaced" event="script" value="nome do arquivo.lua" />
tenta isso e me avisa ![]()
info
Grupo: Campones
Registrado: 28/12/11
Posts: 15
Reputação: +1
Char no Tibia: GOD Mehah

tentei o problema e que você tem que por localidade sul norte... a Spell que eu bolei ela teleporta aleatoriamentee entende?? agora se você quiser teleportar pra um lugar certo o unico lugar ée as cidades onde você da exevo port "City = ele abrira um portal pro templo da city entendeuu??/
info
Grupo: Campones
Registrado: 29/04/08
Posts: 35
Reputação: +3
Char no Tibia: Roya Latex

editei o talk do Jhon992... testa esse dai ... !
function removeTp(lugardele)
doRemoveItem(getThingfromPos(lugardele).uid, 1)
end
function onSay(cid, words, param)
local config = {
exhaustionInSeconds = 30, -- exausted em segundos.
storage = 34534,
pz = "no", -- players precisam estar em protection zone para usar? ("yes" or "no").
battle = "yes", -- players deve estar sem battle ("yes" or "no")
custo = "no", -- se os teleport irão custa ("yes" or "no")
premium = "no" -- se precisa ser premium account ("yes" or "no")
}
-------------Config Lugares----------------
local lugar = {
[""] = {fromx="1121" fromy="452" fromz="7" tox="1244" toy="548" }, 50, 2000}, -- fromx a tox= vai da posição x até a outra x aleatorio e assim por diante no y e no z
[""] = {{x=2577, y=2086, z=7}, 50, 2000}
}
local locais = {"", "", "", "", ""} -- coloque os nomes dos locais
local tpmath = lugar[locais[math.random(1, 5)]] -- não mexa!
local position = getPlayerPosition(cid) -- posição atual do player, não mexa!
local tempo = 60 -- tempo e segundos para o teleport sumir
-------------/Config Checkar não mecha----------------
local lugar = lugar[param]
if (param == "check") then
for name, pos in pairs(lugar) do
text = "Destination: "..name..", Level required: "..pos[2]..","
if(config.battle == "yes") then
text = text.." Sorry, you are in battle."
else
text = text.." You can use while fighting: No"
end
if(config.pz == "yes") then
text = text.." You should use in protection zone: Yes"
else
text = text.." You should use in protection zone: No"
end
if (pos[3] == TRUE) then
text = text..", Cost: "..pos[4]..";"
end
doPlayerSendTextMessage(cid, 20, ""..text.."")
end
return TRUE
end
if(exhaustion.check(cid, config.storage) == TRUE) then
if (exhaustion.get(cid, 34534) >= 60) then
doPlayerSendCancel(cid, "You can only teleport after [" .. math.floor(exhaustion.get(cid, 34534) / 60 + 1) .."] minutes.")
end
if (exhaustion.get(cid, 34534) <= 60) then
doPlayerSendCancel(cid, "You can only teleport after [" .. exhaustion.get(cid, 34534).."] seconds.")
end
return TRUE
end
if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You should be in the protection zone for use.")
return TRUE
end
if(config.premium == "yes") and (not isPremium(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Only players with premium account can use.")
return TRUE
end
if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You can not use in battle.")
return TRUE
end
if lugar ~= nil then
if not(lugar) then
doPlayerSendTextMessage(cid, 22, "Sorry, this place does not exist.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return TRUE
end
if (getPlayerLevel(cid) <= lugar[2]) then
doPlayerSendTextMessage(cid, 22, "Sorry, you don't have level. You need "..lugar[2].." level or more to be teleported.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return TRUE
end
if(config.custo == "no") and (doPlayerRemoveMoney(cid, lugar[3]) == FALSE) then
doPlayerSendTextMessage(cid, 22, "Sorry, you do not have enough money. You need "..lugar[3].." zenis to be teleported.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return TRUE
end
end
if (param == "") then
doCreateTeleport(1387, tpmath[1], {x=position.x+1, y=position.y, z=position.z})
lugardele = {x=position.x+1, y=position.y, z=position.z, stackpos=1}
doCreatureSay(cid, "O teleport irá sumir em "..tempo.." segundos.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tempo*1000, lugardele)
exhaustion.set(cid, config.storage, config.exhaustionInSeconds)
return TRUE
end
exhaustion.set(cid, config.storage, config.exhaustionInSeconds)
doCreateTeleport(1387, lugar[1], {x=position.x+1, y=position.y, z=position.z})
lugardele = {x=position.x+1, y=position.y, z=position.z, stackpos=1}
doCreatureSay(cid, "O teleport irá sumir em "..tempo.." segundos.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tempo*1000, lugardele)
return TRUE
end
modifiquei umas pequenas coisas no talkaction do Jhon992 .. testa ai e me fala
no fromx= tu poe da coordenada , por exemplo 25... tox até a coordenada 150
no fromy ... mesma coisa de cima
no fromz tu poe da coordenada 7 a tox 7...mas se for aleatorio vai poder cair em lugares q nao pode andar..tipo meio do mar !
Editado Janeiro 29 por GabrielOts
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort

Eu entendi que era isso que se queria! Fiz uma talkaction que funciona como spell, tem exausted e talz. Sóh adicionar a linha do talk, dae quando fala "Exevo Port" cria um teleport aleatoriamente pra uma das cidades citadas e ao falar "Exevo Port sul" irá para as coordenadas da cidade do sul e assim susecivamente...



info
Grupo: Campones
Registrado: 28/12/11
Posts: 15
Reputação: +1
Char no Tibia: GOD Mehah
Procuro uma magia que se chame exevo port, ela abre um portal de 60 segundos numa area normal ( Não Abre em PZ, Nem PvP, Nem Na Arena).
Ela funciona assim. Ao player usar a magia, aparece um portal na frente dele que teleporta ele e outros jogadores que entrarem nesse portal para qualquer lugar random do mapa, mas todos os jogadores vao para o mesmo local.
Ja quando ele utiliza Exevo Port "City 1" ela teleporta para o templo da cidade 1.
Sera que teria como fazer essa Spell? Obrigado!
Vo postar uma foto para vocês verem no OTserver do meu colega!
Editado Janeiro 28 por Mehahbr