Elevador..:: Elevador ::..Autor: FlatronezServidor Testado: TFS 0.3.6 Crying DamsonDescricao: E um elevador, onde o player pode subir/descer em uma area determinada.Como InstalarArquivos:Codigo:-- ELEVADOR by FLATRONEZ-- SE POSTAR EM OUTROS LUGARES, COLOQUE OS CREDITOS-- NAO ALTERE O CODIGO 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) endend-- NAO ALTERE O CODIGO ACIMA -- function onSay(cid, words, param) -- CONFIGURACAO, ALTERE SOMENTE AQUI -- local param = string.explode(param, " ") -- Nao 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 = { -- Area do elevador, deve ser uma area quadrada ini = {x= 38, y= 66}, -- Primeiro tile do elevador (acima e a direita) fim = {x= 39, y= 67} -- Ultimo tile do elevador (abaixo e a esquerda) } local tempo = 600 -- Delay para subir/descer um andar local andares = { maxCima = 0, -- Valor da coordenada Z do andar maximo que se pode subir a partir do ground. maxBaixo = 7 -- Valor da coordenada Z do andar maximo que se pode descer a partir do ground. } local msg = { -- Mensagens que sao exibidas para o player sobe = "Voce ira subir em alguns instantes.", desce = "Voce ira descer em alguns instantes.", fimLinha = "Fim da linha. O elevador nao pode subir/descer mais.", chegada = "Pronto! Voce chegou ao seu destino.", erro = { -- Mensagens de erro andInv = "O elevador nao pode subir/descer a esse andar.", posErr = "Voce nao esta em um elevador.", somNum = "Use somente numeros.", zero = "E impossivel subir/descer 0 andares.", comInv = "Comando invalido. Para subir, use !elevador " .. cmd.sobe .. " N. Para descer, use !elevador " .. cmd.desce .. " N." } } -- NAO ALTERE O CODIGO ABAIXO SE NAO SOUBER O QUE ESTA 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