local posentrar = {x=123, y=321, z=7} -- Posiçao que ele irá ao ser teleportado para dentro
local possair = {x=321, y=123, z=7} -- Posiçao que ele irá ao ser teleportado para fora
local mins = 30 -- Minutos que ele ficará na sala
local storagemundial = 10101 -- Não mexa
local hours = 3
function onSair(cid)
doTeleportThing(cid,possair)
setPlayerStorageValue(cid,20202,-1)
doPlayerSendTextMessage(cid,27,"Voce foi teleportado para fora da sala")
return true
end
function storageSair(cid)
setGlobalStorageValue(storagemundial, -1)
doBroadcastMessage("A Sala está aberta denovo.")
return true
end
function onUse(cid,item,item2,topos,frompos,pos)
if getGlobalStorageValue(storagemundial) <= 0 then
doTeleportThing(cid,posentrar)
addEvent(function() onSair(cid) end,mins*60)
doPlayerSendTextMessage(cid,27,"Voce foi teleportado para dentro da sala e ficara "..mins.." ai dentro")
setPlayerStorageValue(cid,20202,1)
setGlobalStorageValue(storagemundial, 1)
addEvent(function() storageSair(cid) end,hours*60*60)
else
doPlayerSendTextMessage(cid,27,"A Sala ainda não está aberta")
return true
end
end
Em Actions.xml adicione :
<action itemid ="XXXX" event="script" value="magicroom.lua"/>
Agora , para evitar bugs , ao player deslogar dentro da sala , vá em
Data/CreatureScript/Scripts . e crie um arquivo chamado (roomlogout.lua)
e dentro adicione :
local possair = {x=123, y=321, z=7}
function onLogout(cid)
if getPlayerStorageValue(cid,20202) >= 1 then
doTeleportThing(cid,possair)
addEvent(doRemoveCreature,1,cid)
end
end
Ainda em creaturescripts/scripts , vá em (login.lua) e lá dentro adicione:
registerCreatureEvent(cid, "RoomLogout")
Agora em creaturescripts.xml adicone
<event type="logout" name="RoomLogout" event="script" value="roomlogout.lua"/>
Muitíssimo obrigado!
Só uma duvida... teria como eu criar uma action para um teleport de saida caso o player complete a quest... tipo, ele entra em um teleport dai remove o evento de teleportar ele pra fora da sala.
Será que daria certo se eu fizesse uma action usando o script de logout!?
Assim, em data/actions/actions.xml:
<action itemid ="XXXX" event="script" value="saidaroom.lua"/>
E em data/actions/scripts/saidaroom.lua
local possair = {x=123, y=321, z=7}
function onLogout(cid)
if getPlayerStorageValue(cid,20202) >= 1 then
doTeleportThing(cid,possair)
addEvent(doRemoveCreature,1,cid)
end
end
@Edit
Rapaz... acabei de testar aqui e não funcionou, queria saber se estou fazendo certo.
Eu criei um arquivo dentro de data/actions/scripts/magicroom.lua com o código abaixo:
local posentrar = {x=85, y=944, z=15} -- Posiçao que ele irá ao ser teleportado para dentro
local possair = {x=110, y=920, z=14} -- Posiçao que ele irá ao ser teleportado para fora
local mins = 1 -- Minutos que ele ficará na sala (coloquei 1 min pra testar)
local storagemundial = 10101 -- Não mexa
local hours = 3
function onSair(cid)
doTeleportThing(cid,possair)
setPlayerStorageValue(cid,20202,-1)
doPlayerSendTextMessage(cid,27,"Você foi teleportado para fora da sala.")
return true
end
function storageSair(cid)
setGlobalStorageValue(storagemundial, -1)
doBroadcastMessage("A Sala está aberta novamente.")
return true
end
function onUse(cid,item,item2,topos,frompos,pos)
if getGlobalStorageValue(storagemundial) <= 0 then
doTeleportThing(cid,posentrar)
addEvent(function() onSair(cid) end,mins*60)
doPlayerSendTextMessage(cid,27,"Você foi teleportado para dentro da sala e terá "..mins.." minutos para finalizar, senão você será teleportado para fora da sala.")
setPlayerStorageValue(cid,20202,1)
setGlobalStorageValue(storagemundial, 1)
addEvent(function() storageSair(cid) end,hours*60*60)
else
doPlayerSendTextMessage(cid,27,"A Sala ainda não está aberta.")
return true
end
end
Dai adicionei em data/actions/actions.xml
<action itemid ="9000" event="script" value="magicroom.lua"/>
Ai fui no Map Editor e adicionei o ActionID 9000 no teleport, também fiz as outras partes, porém acho que até aqui já deveria estar funcionando (parcialmente) não é mesmo!? 
Não aparece nem as mensagens.
@Edit 2
Os players acabaram de me avisar de um bug que estava ocorrendo, quando eles tentavam deslogar usando CTRL+L ou CTRL+Q ou clicando no botão logout, não acontecia nada... dai lembrei que tinha alterado o script do login.lua, retirei aquela linha do arquivo e exclui o arquivo roomlogout.lua, reiniciei o ot e ai voltou a funcionar o logout.
Por favor Sensei, me diga o que eu fiz de errado, ou se está faltando alguma coisa...
Obrigado!