Jump to content

Tablas cancelEvent()


#Dv^

Recommended Posts

Hola, estoy intentando hacer una especie de godmode por tablas, pero no consigo hacer que no haga daño a otros, otros a mi no pero yo sí a otros, estoy con esto de hace días y no conseguí hacer que funcione como espero
 


local dm = {}


addEventHandler("onClientResourceStart", resourceRoot,
	function()
		dm[localPlayer] = false
	end
)

addCommandHandler( "dm",
	function( localPlayer )
		local mode = dm[ localPlayer ]
		if mode == true then
			dm[ localPlayer ] = false
			print("DM OFF")
		else
			dm[ localPlayer ] = true
			print("DM ON")
		end
	end
)


addEventHandler("onClientPlayerDamage", root,
	function( attacker, weapon, bodypart )
		if dm [attacker] == true then
			cancelEvent()
		elseif dm [localPlayer] == true then
			cancelEvent()
		end
	end
)

 

Link to comment

Me lo había dicho de esta manera, pero tampoco funcionó

 

--Server

local dm = { }

addCommandHandler( "dm",
	function( player )
		local mode = dm[ player ]
		if mode == nil then
			dm[ player ] = true
		elseif dm[player] == false then
			dm[player] = false
		else
			if mode == true then
				dm[ player ] = false
			end
		end
    	triggerClientEvent(player,"getTable",root, dm)
	end
)

--Client

local godmode = {}

addEvent("getTable", true)
addEventHandler("getTable",root,
	function(table)
  		if table then
      		godmode = table
      	end
  	end
)

addEventHandler("onClientPlayerDamage", root,
	function( atac )
		if godmode [atac] == true or godmode[ localPlayer ] == true then
			cancelEvent( )
		end
	end
)

 

Edited by Slash14
Link to comment

Por lo visto te guiaste por un ejemplo mío. Úsalo sin miedo, solamente que el primer script es tipo 'shared' para que los datos de la tabla, que los sacas con la función, se envíen a cliente sin problema, es decir, se pueda usar en cliente-servidor:

-- Shared

local dmTable = { }

addCommandHandler( "dm",
	function( player )
		local estado = dmTable[ player ]
		if estado == nil then
			dmTable[ player ] = { }
			dmTable[ player ] = true
			outputChatBox( "#ffffffGodmode #00ff00activado#ffffff satisfactoriamente", player, 255, 255, 255, true )
		else
			if estado == true then
				dmTable[ player ] = nil
				outputChatBox( "#ffffffGodmode #800000desactivado#ffffff satisfactoriamente", player, 255, 255, 255, true )
			end
		end
	end
)

function isGodmodeEnabled( player )
	if player then
		if dmTable[ player ] == nil then
			return false
		else
			if dmTable[ player ] == true then
				return true
			end
		end
	end
end

-- Cliente

addEventHandler("onClientPlayerDamage", root,
	function( attacker )
		if isGodmodeEnabled( attacker ) or isGodmodeEnabled( source ) then
			cancelEvent( )
		end
	end
)

PD: No uses localPlayer en onClientPlayerDamage, como indica la wiki, el 'source' de ese evento es el jugador que sale herido.

Link to comment
2 hours ago, aka Blue said:

Por lo visto te guiaste por un ejemplo mío. Úsalo sin miedo, solamente que el primer script es tipo 'shared' para que los datos de la tabla, que los sacas con la función, se envíen a cliente sin problema, es decir, se pueda usar en cliente-servidor:


-- Shared

local dmTable = { }

addCommandHandler( "dm",
	function( player )
		local estado = dmTable[ player ]
		if estado == nil then
			dmTable[ player ] = { }
			dmTable[ player ] = true
			outputChatBox( "#ffffffGodmode #00ff00activado#ffffff satisfactoriamente", player, 255, 255, 255, true )
		else
			if estado == true then
				dmTable[ player ] = nil
				outputChatBox( "#ffffffGodmode #800000desactivado#ffffff satisfactoriamente", player, 255, 255, 255, true )
			end
		end
	end
)

function isGodmodeEnabled( player )
	if player then
		if dmTable[ player ] == nil then
			return false
		else
			if dmTable[ player ] == true then
				return true
			end
		end
	end
end

-- Cliente

addEventHandler("onClientPlayerDamage", root,
	function( attacker )
		if isGodmodeEnabled( attacker ) or isGodmodeEnabled( source ) then
			cancelEvent( )
		end
	end
)

PD: No uses localPlayer en onClientPlayerDamage, como indica la wiki, el 'source' de ese evento es el jugador que sale herido.


Un script "shared" no comparte las variables, crea sus propias para cada side.

Link to comment
37 minutes ago, Slash14 said:

No quería usar elementData por que según lo que leí por el foro o según lo que yo entendí es que elementData según como se use, puede generar consumo del Cpu, pero si me equivoco expliquenme

Pero al sincronizar la tabla estás haciendo lo mismo.

Link to comment
  • Recently Browsing   0 members

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