Você está desconectado.

Conecte-se e veja nossos conteúdos exclusivos!
 

  


[ACTION] Cp Door System PxG

Compartilhe
avatar
wougoplex
Membro
Membro

King Coin(s) King Coin(s) : 9
Reputação : 1
Facebook : Privado
OTServ Favorito : Demolidores
Tópicos : 5
Data de Cadastro : 25/08/2016
Idade : 15
Localização : Itajai

[ACTION] Cp Door System PxG

Mensagem por wougoplex em 26/9/2016, 17:32




Crie um arquivo chamado doors.lua na pasta data\movements\scripts e adicione o seguinte conteúdo:

Spoiler:
-- CONFIGURAÇÕES --


local doors = {18312, 18311, 18310, 18309}
local door_pos = {x=1051,y=1032,z=7}



-- FIM CONFIGURAÇÕES --
local top_left = {x = door_pos.x - 3, y = door_pos.y - 2, z = door_pos.z}
local bottom_right = {x = door_pos.x, y = door_pos.y + 2, z = door_pos.z}


local function areThereCreaturesInArea(top_left, bottom_right)

for x = top_left.x, bottom_right.x do
for y = top_left.y, bottom_right.y do
if isCreature(getTopCreature({x=x, y=y, z=top_left.z}).uid) then
return true
end
end
end

return false
end

local function open(pos, i)

if i < #doors then

current = doors[i]
next_ = doors[i+1]

local door = getTileItemById(pos, current)
if door.uid > 0 then
doTransformItem(door.uid, next_)
addEvent(open, 200, pos, i+1)
end
end

end

local function close_(pos, i)

if areThereCreaturesInArea(top_left, bottom_right) then
return true
end

if i <= #doors and i > 1 then

current = doors[i]
next_ = doors[i-1]

local door = getTileItemById(pos, current)
if door.uid > 0 then
doTransformItem(door.uid, next_)
addEvent(close_, 200, pos, i-1)
end
end

end

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

for i = 1, #doors do
local door = getTileItemById(door_pos, doors[i])
if door.uid > 0 then
open(door_pos, i)
break
end
end

return true
end

function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)

close_(door_pos, #doors)

return true
end

No arquivo movements/movements.xml adicione as seguintes linhas

Spoiler:
<movevent type="StepIn" actionid="12000" event="script" value="doors.lua"/>
<movevent type="StepOut" actionid="12000" event="script" value="doors.lua"/>


No map editor adicione o action id 12000 aos tiles em volta da porta marcados com X





E por último configurar os IDS das portas de acordo com o seu servidor:

Configuração:
local doors = {18312, 18311, 18310, 18309}

Você deve colocar os IDS na ordem da "mais fechada" até a "mais aberta".

No meu exemplo a porta totalmente fechada tem id 18312 e a totalmente aberta 18309, mas no seu servidor provavelmente os ids são diferentes.

Espero que seja útil =)
Lembrando que você tem que repetir todos os passos para cada porta assim no seu mapa, usando action ids e posições diferentes.


Credito :Eskylo
avatar
GOD Vitor
Administrador
Administrador

King Coin(s) King Coin(s) : 33
Reputação : 13015
Facebook : Facebook.com/Vitor.Eduardo.5567
OTServ Favorito : otPokémonImeprium
Meu Char : Zoom
Seção Favorita : Spriting
Eu sou : Scripter
Tópicos : 256
Data de Cadastro : 26/09/2015
Idade : 19
Localização : Florianópolis

Re: [ACTION] Cp Door System PxG

Mensagem por GOD Vitor em 26/9/2016, 18:06

Agradeço pelo conteúdo!
Você recebeu 1 REP+.


________________________________________
Meu Servidor Online:

JOGAR AGORA!

Clique aqui para doar.

    Data/hora atual: 24/8/2017, 07:44