Ir para conteúdo

Sistema de elevador no próprio servidor


larissaots

Posts Recomendados

Créditos à Marcelo Druida.

 

Observações

Não importa a quantidade de andares, só importa que deve partir do térreo z= 7, e não deve ser feito no subterrâneo.

Use The Forgotten Server 0.3.6 crying damson.

 

Como funciona

É só entrar no piso do elevador e dizer: andar X

 

0 = térreo

X = número do andar

 

Tutorial

Crie no mapa um local assim:

8wjytv.png

 

Vá em talkactions/scripts e crie um arquivo elevador.lua

function onSay(cid, words, param, channel)
pos = getPlayerPosition(cid)
pos.stackpos = 0
floor_id = getThingfromPos(pos).itemid
z = (pos.z - 7) * -1
-- verifica se está no piso do elevador
if floor_id == 417 and getPlayerStorageValue(cid,42000)==-1 then
-- verifica se existe o parametro numero do andar, se não existir termina o codigo
if (not isNumber(param)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite o numero do andar.") 
return false
end
numeroDeAndares = tonumber(param) - z 
-- teleporte a andares superiores
if numeroDeAndares > 0 then
new_pos = {x=pos.x,y=pos.y,z=pos.z-numeroDeAndares,stackpos=0}
if getThingfromPos(new_pos).itemid == 416 then
doSendAnimatedText(pos, "SUBINDO!!!", 180)
setPlayerStorageValue(cid,42000,1)
for i=1, numeroDeAndares do
addEvent(doTeleportThing,500*i,cid, {x=pos.x,y=pos.y,z=pos.z-i}, true)
end
addEvent(checkAndar,500,cid,param)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Andar invalido.") 
return false
end
-- teleporte a andar inferiores
elseif numeroDeAndares < 0 then
setPlayerStorageValue(cid,42000,1)
doSendAnimatedText(pos, "DESCENDO!!!", 180)
for i=1, numeroDeAndares*-1 do
addEvent(doTeleportThing,500*i,cid, {x=pos.x,y=pos.y,z=pos.z+i}, true)
end
addEvent(checkAndar,500,cid,param) 
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce esta neste andar.") 
return false
end
elseif floor_id ~= 417 then
doCreatureSay(cid, words .." ".. param)
end
return true
end


function checkAndar(cid, param)
pos = getPlayerPosition(cid)
z = (pos.z - 7) * -1
if tonumber(param) == z then
doSendMagicEffect({x=pos.x,y=pos.y,z=pos.z}, CONST_ME_TELEPORT)
doSendAnimatedText({x=pos.x,y=pos.y,z=pos.z}, "Andar "..tonumber(param), 180)
setPlayerStorageValue(cid,42000,-1)
else
addEvent(checkAndar,500,cid,param)
end
end

Adicione em talkactions/talkactions.xml a linha:

<talkaction log="no" words="andar" access="0" event="script" value="elevador.lua"/>

No arquivo actions/scripts/others/doors.lua. Substitua a linha 16 por:

if(getItemLevelDoor(item.itemid) > 0) and getPlayerStorageValue(cid,42000)==-1 then

Pronto!

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

×
×
  • Criar Novo...