Ir para conteúdo
  • 0

Teleport Por Tempo


subyth

Pergunta

Servidor utilizado: Crystal Server

Versão: 8.7 (mais se preferir, poderá ser em 8.6, eu creio que consigo colocar em 8.7)

 

 

Bem, eu to querendo um script desses há muito tempo, mais muito tempo mesmo, infelismente não sei fazer mais a minha ídeia continua.

 

Gostaria de um teleport (ID:1387 - teleport normal) que quando o player entrar, esta sala irá dar um clean (apenas nessa sala) e irá apareçer um aviso em boxfly (axo que é essa a função, não me recordo bem) Bem, é uma caixa de aviso que avisa ao player que ele só poderá permanacer nessa sala por 5 minutos e depois disso será expuso...

 

Bem, à área é essa:

semttuloctk.png

 

O player entra no teleport e é teleportado para a sala, bem, assim que ele entrar da sala, a sala é limpada (como um clean mais apenas na sala) assim evitará de o player perder tempo limpando., apareçe um aviso em boxfly para ele (infelismente não lembro a função) dizendo que ele só terá 5 minutos para fazer a forja. Quando passar 5 minutos dentro da sala, ele é chutado para fora (ele é teleportado para um local X aonde eu poderei modificar).

 

Bem, queria algumas regras :s

 

1º - Só poderá entrar 1 player por vez, por isso 5 minutos para ele ser chutado da sala, caso outro player tente passar pelo teleport, uma mensagem de erro apareçerá como por exemplo "Já existe um jogador dentro da sala! Espere X minutos.".

2º - O player pode entrar quantas vezes quiser, claro, respeitando a regra dos 5 minutos exemplo: Y player entrou na sala, ficou na sala por 5 minutos, esgotou o tempo e ele foi chutado da sala, assim que ele for chutado, ele poderá entrar no teleport novamente.

3º - Eu gostaria que os items que são colocados pelo RMe não sejam limpos nessa sala, apenas os items que os players colocarem, como um Clean mesmo ;x

4º - Dar um clean (limpeza) na sala quando o player entrar no teleport, ... Mais a limpeza apenas dentro da sala...

5º - Terá um outro teleport na sala que serve para o player sair caso ele não queira esperar os 5 minutos...

 

Irei ficar bastantemente grato por aquele que me ajudar ;x

Editado por subyth
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0



FORGE_FROMPOSITION = {x = 131, y = 117, z = 7} -- POSIÇÃO SUPERIOR-ESQUERDA DA ÁREA
FORGE_TOPOSITION = {x = 145, y = 123, z = 7} -- POSIÇÃO INFERIOR-DIREITA DA ÁREA

FORGE_TELEPORTPOSITION = {x = 138, y = 121, z = 7} -- PARA ONDE O TELEPORTE LEVA
FORGE_KICKPOSITION = {x = 95, y = 117, z = 7} -- PARA ONDE O JOGADOR É LEVADO QUANDO O TEMPO ACABAR

FORGE_GLOBALSTORAGE = 30001

FORGE_MAXTIME = 5 * 60 -- TEMPO MÁXIMO

function getSpectatorsInArea(fromPosition, toPosition)
   local width = (((math.max(fromPosition.x, toPosition.x) - math.min(fromPosition.x, toPosition.x)) * 0.5) + 1)
   local height = (((math.max(fromPosition.y, toPosition.y) - math.min(fromPosition.y, toPosition.y)) * 0.5) + 1)
   local center = {x = (math.min(fromPosition.x, toPosition.x) + width), y = (math.min(fromPosition.y, toPosition.y) + height), z = fromPosition.z}

   return getSpectators(center, width, height, false)
end

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
   if getSpectatorsInArea(FORGE_FROMPOSITION, FORGE_TOPOSITION) and #getSpectatorsInArea(FORGE_FROMPOSITION, FORGE_TOPOSITION) > 0 then
       doTeleportThing(cid, fromPosition, false)
       doPlayerSendCancel(cid, "Já há alguém na sala, espere ".. math.ceil((getStorage(FORGE_GLOBALSTORAGE) - os.time())/60) .." minutos.")
       return true
   end

   for x = FORGE_FROMPOSITION.x, FORGE_TOPOSITION.x do
       for y = FORGE_FROMPOSITION.y, FORGE_TOPOSITION.y do
           local tmp = {x = x, y = y, z = FORGE_FROMPOSITION.z}
           for i = 1, 255 do
               tmp.stackpos = i
               doCleanTile(tmp, false)
           end
       end
   end

   doTeleportThing(cid, FORGE_TELEPORTPOSITION)
   doSendMagicEffect(FORGE_TELEPORTPOSITION, CONST_ME_TELEPORT)
   doPlayerPopupFYI(cid, "Você pode ficar cinco minutos na área de forja. Quando o tempo acabar, você será expulso.")
   doSetStorage(FORGE_GLOBALSTORAGE, os.time() + FORGE_MAXTIME)
   addEvent(function()
       doTeleportThing(cid, FORGE_KICKPOSITION)
       doSendMagicEffect(FORGE_KICKPOSITION, CONST_ME_TELEPORT)
       doPlayerPopupFYI(cid, "Seu tempo acabou.")
   end, FORGE_MAXTIME * 1000)
   return true
end

 

É um StepIn, registre no movements.xml com um uniqueid de sua escolha e coloque esse mesmo uniqueid no teleporte. Aconselho que você também coloque No-Logout Zone na área.

 

Configure as posições como pedidas.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...