Jump to content

Colshape pegada al jugador


Anzo

Recommended Posts

Hola, estoy tratando de hacer una "zona para matar zombies automáticamentecon una colshape, pero quisiera saber que puedo usar para que la colshape se vaya moviendo según a donde el jugador se mueva, es decir que la posición se actualice o algo así. Lo que quiero es que mientras te muevas (supongamos que es 20 el radio de la colshape) y un zombie entre a la colshape se muera, y si tu te acercas a ellos y haces que entren también se mueren.

He leído que es complicado hacer algo como esto (que la colshape te siga) pero nunca he probado así que no puedo decir nada, aunque tampoco se me ocurre nada.

Pensaba hacerlo con getDistanceBetweenPoints3D pero creo que es más eficiente hacerlo con la colshape.

Edited by Anzo
Link to comment

Todavía no he probado nada pero tengo una duda, con attachElements no funcionará? la wiki dice que también sirve con colshapes  pero busque en unos post y dicen que no se puede usar con colshapes... De todas formas más tarde si probaré de las dos maneras

Link to comment

Bueno, ya lo hice de la manera que me dijiste y funcionó perfecto, gracias.

Pero tengo una pregunta, esto no daría lag?

local cols = {}

function frameCol()
	if (cols[localPlayer])  then
		local x,y,z= getElementPosition(localPlayer)
		setElementPosition(cols[localPlayer], x,y,z)
	end
end
addEventHandler("onClientRender", root, frameCol)

(La colshape la estoy creando por un comando, esa es solo la parte cuando se actualiza la posición)

Edited by Anzo
Link to comment

Y cómo sería?...

function createCol()
	if (not autoZombieKillEnabled) then
		local x,y,_ = getElementPosition(localPlayer)
		cols[localPlayer] = createColCircle(x,y, 10)
		attachElements(cols[localPlayer], localPlayer, x,y)
		autoZombieKillEnabled = true
		outputChatBox("Col creada")
	else
		autoZombieKillEnabled = false
		if isElement((cols[localPlayer])) then
			destroyElement(cols[localPlayer])
			cols[localPlayer] = nil 
			outputChatBox("Col destruida")
		end
	end
end
addCommandHandler("col", createCol)

Ahí crea la col y todo, pero no la pega al jugador (se queda en lugar que se creó y va matando a los zombies)

Link to comment
attachElements(cols[localPlayer], localPlayer)

No sé si tiene mucho que ver, pero pruébalo. De todos modos, te aconsejaría que lo hagas server-side y triggees en caso de que entre un zombie (no sé que lado usa el script de zombies, pero supongo que se puede hacer sincronización).

Edited by aka Blue
Link to comment

Siempre pensé que era obligatorio poner los x,y,z, creo que debo leer más la wiki :'v.

Gracias @aka Blue

Y lo tengo hecho así:

--Client
local cols = {}


function createCol()
	if (not autoZombieKillEnabled) then
		local x,y,_ = getElementPosition(localPlayer)
		cols[localPlayer] = createColCircle(x,y, 10)
		attachElements(cols[localPlayer], localPlayer)
		autoZombieKillEnabled = true
		outputChatBox("Col creada")
	else
		autoZombieKillEnabled = false
		if isElement((cols[localPlayer])) then
			destroyElement(cols[localPlayer])
			cols[localPlayer] = nil 
			outputChatBox("Col destruida")
		end
	end
end
addCommandHandler("col", createCol)

function onClientHit(hit)
	if (source == cols[localPlayer]) then
		if (getElementType(hit) == "ped") and (getElementData(hit, "zombie")) then 
			outputChatBox("Zombie ha entrado")
			triggerServerEvent("autoZombieKill", getLocalPlayer(), hit)
		end
	end
end
addEventHandler("onClientColShapeHit", root, onClientHit)

--Server
function autoZombieKill(hit)
	killPed(hit, source)
end
addEvent("autoZombieKill", true)
addEventHandler("autoZombieKill", root, autoZombieKill)

 

Link to comment
32 minutes ago, Anzo said:

Siempre pensé que era obligatorio poner los x,y,z, creo que debo leer más la wiki :'v.

Gracias @aka Blue

Y lo tengo hecho así:


--Client
local cols = {}


function createCol()
	if (not autoZombieKillEnabled) then
		local x,y,_ = getElementPosition(localPlayer)
		cols[localPlayer] = createColCircle(x,y, 10)
		attachElements(cols[localPlayer], localPlayer)
		autoZombieKillEnabled = true
		outputChatBox("Col creada")
	else
		autoZombieKillEnabled = false
		if isElement((cols[localPlayer])) then
			destroyElement(cols[localPlayer])
			cols[localPlayer] = nil 
			outputChatBox("Col destruida")
		end
	end
end
addCommandHandler("col", createCol)

function onClientHit(hit)
	if (source == cols[localPlayer]) then
		if (getElementType(hit) == "ped") and (getElementData(hit, "zombie")) then 
			outputChatBox("Zombie ha entrado")
			triggerServerEvent("autoZombieKill", getLocalPlayer(), hit)
		end
	end
end
addEventHandler("onClientColShapeHit", root, onClientHit)

--Server
function autoZombieKill(hit)
	killPed(hit, source)
end
addEvent("autoZombieKill", true)
addEventHandler("autoZombieKill", root, autoZombieKill)

 

Eso no funciona?

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...