Você está desconectado.

Conecte-se e veja nossos conteúdos exclusivos!
 

  



Curta-nos: Curtir

[ACTION] Cp Door System PxG

Compartilhe

wougoplex
Membro
Membro

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

[ACTION] Cp Door System PxG

Mensagem por wougoplex em Seg Set 26, 2016 10:32 pm




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

GOD Vitor
Administrador
Administrador

King Coin(s) King Coin(s) : 32
Reputação : 13014
Facebook : Facebook.com/Vitor.Eduardo.5567
OTServ Favorito : Pokémon Paraíso V3 - O Retorno
Meu Char : Zed Stars
Seção Favorita : Spriting
Eu sou : Scripter
Tópicos : 250
Data de Cadastro : 27/09/2015
Idade : 18
Localização : Florianópolis - SC

Re: [ACTION] Cp Door System PxG

Mensagem por GOD Vitor em Seg Set 26, 2016 11:06 pm

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


________________________________________



Dicas Importantes:
- Respeite as Regras.
- Não peça suporte por MP

    Data/hora atual: Ter Fev 28, 2017 6:30 am