Ir para conteúdo

Cp door system pxg


Eskylo

Posts Recomendados

 

l46C4pz7cbejABIn6.gif

 

 

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

 

-- 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 falseendlocal 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)	endend	endlocal function close_(pos, i)if areThereCreaturesInArea(top_left, bottom_right) then	return trueendif 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)	endend	endfunction 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 trueendfunction onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)	close_(door_pos, #doors)	return trueend

 

No arquivo movements/movements.xml adicione as seguintes linhas 

 

	<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

 

doors_position.png

 

 

Agora você deve configurar as coordenadas da porta no script de acordo com o seu mapa:

 

local door_pos = {x=1051,y=1032,z=7}

door_pos.png

 

(A pos onde fiz o X)

 

 

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

 

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.

Em breve faço uma versão que dê pra configurar todas as portas do mapa em 1 script.

doors_position.png.a6e1c28276f46a6aaf55a1894dcd8dc0.png

door_pos.png.6f36b015bc56dbfe74f8e60f79722435.png

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

57 minutos atrás, Poccnn disse:

Muito bom seu script.

Faz uma versão onde requira apenas a posição da porta.

 

Tem razão, não sei porque não fiz assim '-' quando eu chegar em casa eu atualizo.

 

 

54 minutos atrás, Faelzdanil disse:

ou pode simplesmente colocar anti logout lá.

 

Sim, também dá certo.

Link para o comentário
Compartilhar em outros sites

Em 29/06/2016 at 14:38, Eskylo disse:

 

l46C4pz7cbejABIn6.gif

 

 

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

 

-- 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 falseendlocal 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)	endend	endlocal function close_(pos, i)if areThereCreaturesInArea(top_left, bottom_right) then	return trueendif 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)	endend	endfunction 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 trueendfunction onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)	close_(door_pos, #doors)	return trueend

 

No arquivo movements/movements.xml adicione as seguintes linhas 

 

	<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

 

doors_position.png

 

 

Agora você deve configurar as coordenadas da porta no script de acordo com o seu mapa:

 

local door_pos = {x=1051,y=1032,z=7}

door_pos.png

 

(A pos onde fiz o X):

 

 

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

 

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.

Em breve faço uma versão que dê pra configurar todas as portas do mapa em 1 script.

Cara, tive uma dúvida. Vou ter que fazer esse script para cada cidade?

Link para o comentário
Compartilhar em outros sites

  • 2 months later...

@Eskylo

Deu certinho, Parabéns ai e Obrigado. Rep+

Agora sera que tem o do Depot também? no meu servidor ele fica parado e não se move igual o Pxg. Se puder ajudar serei ainda mais grato.

Sem título.png

57f3f70ce3544_Semttulo.thumb.png.55c1922dc8ed668cda79a936d32a2346.png

Editado por Skinn Bolic
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...