ES
action

Cp door system pxg

Por Eskylo, 29 de jun. de 2016 em Actions e Talkactions

pokemon
23
7.9k
EskyloE
29 de junho de 2016 às 14:38

 

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 Junho 29 por Eskylo

WickeW
29 de junho de 2016 às 14:48

Obrigado, Belo tutorial.

 

boxxer321B
29 de junho de 2016 às 14:48

Tava precisando MUITO disso! Obrigado!!

EskyloE
29 de junho de 2016 às 15:10

Se o player logasse em cima da porta ela não ia abrir, então atualizei onde precisa do action id: 

 

doors_position.png

doors_position.png.81b7253f6fb1e616285bee6beb90bedd.png

PoccnnP
29 de junho de 2016 às 15:58

Muito bom seu script.

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

FaelzdanilF
29 de junho de 2016 às 16:06
55 minutos atrás, Eskylo disse:

Se o player logasse em cima da porta ela não ia abrir, então atualizei onde precisa do action id: 

 

doors_position.png

ou pode simplesmente colocar anti logout lá.

KaboFlow29K
29 de junho de 2016 às 16:08

Mais tarde bo testear mano

EskyloE
29 de junho de 2016 às 17:01
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.

JosegvbJ
30 de junho de 2016 às 02:40

funfando 100%, obrigado por compartilhar

boxxer321B
30 de junho de 2016 às 20:18
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?

KaboFlow29K
30 de junho de 2016 às 20:35

obrigado ta funcionando :D muito boom mano!!

 

13569994_1125674057475660_1317191131_o.png

1 mês depois...
jeanflamengoJ
08 de julho de 2016 às 01:57

funfando 100%, reputeichon mais para ti

 

@Eskylo

o unico bug que encontrei eh caso se a pessoa for usar ele nas portas do tc e tr, elas não fecham.

Editado Julho 8 por jeanflamengo

Felipe MoraesF
08 de julho de 2016 às 10:54

Muito legal seu script, gostei da ideia.

Obrigado por compartilhar conosco!

2 meses depois...
wougoplexW
26 de setembro de 2016 às 17:22

E pra botar a porta ela de lado nao de frente ela abre mais ela n fecha 

1 mês depois...
Skinn BolicS
04 de outubro de 2016 às 15:39

@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 Outubro 4 por Skinn Bolic