Jump to content

Error getElementData


#Dv^

Recommended Posts

Hola, tengo este problema con mi script, me sale "Bad argument @ "getElementData" [Expected element at argument 1, got boolean]" parte del script sería este :

function test (targetPlayer)
if getElementData (targetPlayer, "test") == true then
        cancelEvent()
end
end
addEventHandler("onClientPlayerDamage", root, test)

Ese error solo me sale cuando el daño que recibí no es de un jugador, sino por ejemplo cuando caigo desde lo alto y golpeo contra el suelo
¿Cómo resuelvo ese error?
Gracias

Link to comment

Parte de la función completa sería así

function test (targetPlayer)
    if getElementData (targetPlayer, "test ") == true then
        cancelEvent()
    elseif getElementData(localPlayer,"test ") == true then
        cancelEvent()
    end
end
addEventHandler("onClientPlayerDamage",root, test )

Solo posteé esa línea por que en esa me daba error cuando explique lo que hacía cuando pasaba

 

Link to comment
function test (targetPlayer)
    if ( targetPlayer and getElementData (targetPlayer, "test") ) or ( getElementData(localPlayer, "test") ) then
      cancelEvent()
    end
  end
end
addEventHandler("onClientPlayerDamage", root, test)

 

Edited by Tomas
Link to comment

¿Cómo compruebo con una variable si soy el atacante?, es decir algo como así

 

check = false

addCommandHandler("check", 
function ()
    if  (check == false) then
      	check = true
      outputChatBox("ON")
      else
      check = false
      outputChatBox("OFF")
      end
 end
)

function checkDamage()
  	if (check == true)
    	cancelEvent()
    end
end
addEventHandler("onPlayerDamage", root, checkDamage)

No sé si hice bien el script, pero lo quiero hacer es que si yo activo el comando /check no me puedan hacer daño, y que yo tampoco pueda hacer daño a los demás, ¿Cómo puedo comprobar eso?

PD: No sé si me expliqué bien pero si no se entiende lo resumiré más

Edited by Slash14
Link to comment

Es que no te explicas bien, si quieres eso de inmortalidad, debes usar elementData, ya que de ningún modo puedes comprobar si el otro tiene puesto el comando para que no le hagan daño con una variable. Usa ésto (ah, y el evento onPlayerDamage es server-side. Usa el client-side para que el cancelEvent tenga efecto):

addCommandHandler( "inmortal",
	function( )
		local data = getElementData( localPlayer, "inmortalidad" ) or false
		if data == false then
			setElementData( localPlayer, "inmortalidad", true )
			outputChatBox( "Activada inmortalidad, no puedes ni hacer ni realizar daño.", 0, 255, 0 )
		else
			setElementData( localPlayer, "inmortalidad", false )
			outputChatBox( "Desactivada inmortalidad. Ahora pueden y puedes hacer daño", 255, 145, 0 )
		end
	end
)

function stopMinigunDamage ( attacker )
	if getElementData( source, "inmortalidad" ) == true or getElementData( attacker, "inmortalidad" ) == true then
		outputChatBox( "INMORTALIDAD: No puedes hacer daño a la víctima", 255, 0, 0 )
		cancelEvent( )
	end
end
addEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopMinigunDamage )

 

Link to comment
  • Recently Browsing   0 members

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