Ir para conteúdo
Entre para seguir isso  
Flatronez

Elevador

Recommended Posts

Flatronez    1
Flatronez

..:: Elevador ::..

 

Autor: Flatronez

Servidor Testado: TFS 0.3.6 Crying Damson

Descrição: É um elevador, onde o player pode subir/descer em uma área determinada.

 

 

Como Instalar

 

Arquivos:

[spoiler=elevador.lua]

-- ELEVADOR by FLATRONEZ
-- SE POSTAR EM OUTROS LUGARES, COLOQUE OS CRÉDITOS



-- NÃO ALTERE O CÓDIGO ABAIXO --
function elevador(cid, msg, newPos, i, playerPos, pisoElev, param)
local proxAnd = getTileThingByPos(newPos)
   if isInArray(pisoElev, proxAnd.itemid) and i <= tonumber(param[2]) then
     doTeleportThing(cid, newPos, true)
       elseif proxAnd.itemid ~= pisoElev then
         doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.fimLinha)
   end
   if i == tonumber(param[2]) then
     doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg.chegada)
   end
end
-- NÃO ALTERE O CÓDIGO ACIMA --


function onSay(cid, words, param)
-- CONFIGURAÇÃO, ALTERE SOMENTE AQUI --
local param = string.explode(param, " ") -- Não altere
local pisoElev = { 406, 407 } -- IDs do piso do elevador
local cmd = {
  sobe = "subir",
  desce = "descer"
}
local stId = 700
local playerPos = getCreaturePosition(cid)
local areaElev = { -- Área do elevador, deve ser uma área quadrada
  ini = {x= 38, y= 66},  -- Primeiro tile do elevador (acima e à direita)
  fim = {x= 39, y= 67} -- Último tile do elevador (abaixo e à esquerda)
}
local tempo = 600 -- Delay para subir/descer um andar
local andares = {
  maxCima = 0, -- Valor da coordenada Z do andar máximo que se pode subir a partir do ground.
  maxBaixo = 7 -- Valor da coordenada Z do andar máximo que se pode descer a partir do ground.
}
local msg = { -- Mensagens que são exibidas para o player
  sobe = "Você irá subir em alguns instantes.",
  desce = "Você irá descer em alguns instantes.",
  fimLinha = "Fim da linha. O elevador não pode subir/descer mais.",
  chegada = "Pronto! Você chegou ao seu destino.",
  erro = { -- Mensagens de erro
    andInv = "O elevador não pode subir/descer a esse andar.",
    posErr = "Você não está em um elevador.",
    somNum = "Use somente números.",
    zero = "É impossível subir/descer 0 andares.",
    comInv = "Comando inválido. Para subir, use !elevador " .. cmd.sobe .. " N°. Para descer, use !elevador " .. cmd.desce .. " N°."
  } 
}

-- NÃO ALTERE O CÓDIGO ABAIXO SE NÃO SOUBER O QUE ESTÁ FAZENDO --
-- Subida
   if param ~= nil and param[1] == cmd.sobe and tonumber(param[2]) ~= nil and tonumber(param[2]) > 0 and playerPos.z - tonumber(param[2]) >= 0 and playerPos.x >= areaElev.ini.x and playerPos.x <= areaElev.fim.x and playerPos.y >= areaElev.ini.y and playerPos.y <= areaElev.fim.y then
     doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg.sobe)    
       for i = 1, tonumber(param[2]) do
         local playerPos = getCreaturePosition(cid)
         local newPos = {x= playerPos.x, y= playerPos.y, z= playerPos.z-i}
         addEvent(elevador, i * tempo, cid, msg, newPos, i, playerPos, pisoElev, param)
       end
-- Descida
   elseif param ~= nil and param[1] == cmd.desce and tonumber(param[2]) ~= nil and tonumber(param[2]) > andares.maxCima and playerPos.z + tonumber(param[2]) <= andares.maxBaixo and playerPos.x >= areaElev.ini.x and playerPos.x <= areaElev.fim.x and playerPos.y >= areaElev.ini.y and playerPos.y <= areaElev.fim.y then
     local i = 1
     doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg.desce)
     while i <= tonumber(param[2]) do
       local newPos = {x= playerPos.x, y= playerPos.y, z= playerPos.z+i}
       addEvent(elevador, i * tempo, cid, msg, newPos, i, playerPos, pisoElev, param)
       i = i + 1
     end    
-- Tratamento de Erros
   elseif param == nil or table.find(cmd, param[1]) == nil then
     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.comInv)
   elseif param ~= nil and tonumber(param[2]) == nil then
     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.somNum)
   elseif playerPos.x < areaElev.ini.x or playerPos.x > areaElev.fim.x or playerPos.y < areaElev.ini.y or playerPos.y > areaElev.fim.y then
     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.posErr)
   elseif param ~= nil and ((param[1] == cmd.sobe and playerPos.z - tonumber(param[2]) < andares.maxCima) or (param[1] == cmd.desce and playerPos.z + tonumber(param[2]) > andares.maxBaixo)) then
     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.andInv)
   elseif param ~= nil and tonumber(param[2]) == 0 then
     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.zero)
 end
 return true
end

 

[spoiler=tag]

<talkaction words="!elevador" access="0"  event="script" value="elevador.lua"/>

 

 

 

Pegue o arquivo elevador.lua e o coloque na pasta talkActions/scripts.

 

Depois abra o arquivo talkActions.xml e adicione a tag.

 

Depois abra o arquivo elevador.lua e configure a área do elevador.

 

 

Pogpowered2.gif

Editado por Black Ice

Compartilhar este post


Link para o post
Gpwjhlkdcf    21
Gpwjhlkdcf

Pogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gifPogpowered2.gif

Movido.

Editado por Skyen Hasus

Compartilhar este post


Link para o post
FakLess    0
FakLess

Interessante.:lol::rolleyes:

Compartilhar este post


Link para o post
Zoboomafoo    0
Zoboomafoo

Gostei ^^

 

mas daria pra deixar bem menor :(

Compartilhar este post


Link para o post
lonvid marte inf    0
lonvid marte inf

cara não sei oque tá dando no meu ot aqui

pra subir ele sobe na paz pra descer ele não tá indo

e não tá apresentando nenhum erro

só que não desce

Compartilhar este post


Link para o post
ADM Emperor    0
ADM Emperor

Perlo tamanho da script e pela simplicidade eu diria que poderia ser melhor. Exemplo:

 

Quando o player ficasse em cima de um sqm (daqueles que abaixam quando o player fica em cima.. [ESQUECI O NOME UAHUHA] e dava use em uma avalanca ao lado > ele seria teleportado para um dos andares do elevador, a exemplo em farmine.

 

Francamente, eu axei o script muito grande e pouco criativo, daria para ser menor e bem melhor. Por isso

 

- Reprovado -

Compartilhar este post


Link para o post
DarkGladiators    0
DarkGladiators

já eu acho pouco criativo o uso de lavancas, isso já tá ultrapassado velho.. foi uma boa idéia, uma pessoa com criatividade saberá o que fazer com isso :)

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×