É o seguinte o portal será criado Ok, mas o tempo do outro portal deve ser maior senão o player irá voltar para o local onde ele foi teleportado ou seja, não o local onde o portal foi criado, a partir do momento em que o portal criado for removido ao ele usar o outro portal ele será teleportado para o Removido, Acho que deu para entender.
Spell
local config = {storage = 8001}--Seleciona a storage 8001 e separa entre 3, exemplo - "8001, 8002, 8003", Entao nao use nenhuma dessas 3 storages em outros scripts.
local cfg = {storage = 8000, Tempo = 1*60} --1 minuto. Tempo que poderá passar no piso ao redor do Teleport.
local function doSavePlayerPos(uid, storage, pos)
doCreatureSetStorage(uid, storage, pos.x)
doCreatureSetStorage(uid, storage+1, pos.y)
doCreatureSetStorage(uid, storage+2, pos.z)
end
function onCastSpell(cid, var)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
local TeleportID = 1387
local Teleport = {
config = {
ToPos = {x = 309, y = 287, z = 7}, -- Local onde o jogador será teleportado
Pos = getCreaturePosition(cid),
Time = 10, --Quanto tempo irá durar o Teleport
},
}
function removeTeleport(Teleport)
local t = getTileItemById(Teleport.config.Pos, TeleportID)
if t then
doRemoveItem(t.uid, 1)
doSendMagicEffect(Teleport.config.Pos, CONST_ME_POFF)
end
end
doCreateTeleport(TeleportID, Teleport.config.ToPos,Teleport.config.Pos)
addEvent(removeTeleport, Teleport.config.Time * 1000, Teleport)
setPlayerStorageValue(cid, cfg.storage, os.time()+cfg.Tempo)
doSavePlayerPos(cid, config.storage, getThingPos(cid))
----------------------------------------------------------------------------------------------------------------------------------------------------------------
return TRUE
end
Movements.xml
<movevent type="StepIn" actionid="9000" event="script" value="piso.lua"/>
<movevent type="StepIn" actionid="9001" event="script" value="teleport.lua"/>
piso.lua
function onStepIn(cid, item, position, fromPosition)
local config = {storage = 8000}
if (getPlayerStorageValue(cid, config.storage) <= os.time()) then
return true
else
doTeleportThing(cid, fromPosition, false)
doPlayerSendCancel(cid, "Você deve aguardar " ..getPlayerStorageValue(cid, config.storage) - os.time().." para poder entrar nesse portal!")
end
return true
end
Teleport.lua
function onStepIn(cid, item, position, fromPosition)
local config = {storage = 8001}
local function getSavedPlayerPos(uid, storage)
return {x = getCreatureStorage(uid, storage), y = getCreatureStorage(uid, storage+1), z = getCreatureStorage(uid, storage+2)}
end
if (getPlayerStorageValue(cid, config.storage) <= os.time()) then
doTeleportThing(cid, getSavedPlayerPos(cid, config.storage))
else
doTeleportThing(cid, fromPosition, false)
doPlayerSendCancel(cid, "Você deve aguardar " ..getPlayerStorageValue(cid, config.storage) - os.time().." para poder entrar nesse portal!")
end
return true
end