Jump to content

Error getElementData


#Dv^

Recommended Posts

Posted

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

Posted

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

 

Posted (edited)
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
Posted
24 minutes ago, Slash14 said:

Gracias por su ayuda, me resultó fácil
Una pregunta, ¿El elementData causa lag?, otra alternativa a esa?

De la forma que lo estás utilizando no es nada "grave", una alternativa sería utilizar variables.

Posted (edited)

¿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
Posted

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 )

 

Posted

Muchas gracias @aka Blue, yo lo había hecho de la misma manera que tu ejemplo, solo que lo implementé en una GUI, pensé que por una variable sería más óptimo que por elementData, por eso preguntaba.
Gracias por tu ayuda y la de los demás, ya aclaré mi duda.

Posted
6 hours ago, aka Blue said:

@Slash14 Por una variable no sirve, debido a que no tienes ninguna forma por la cual comprobar si el otro jugador tiene desactivada o activada la mortalidad

Se pueden sincronizar.

Posted
13 minutes ago, aka Blue said:

@Tomas Más sencillo usar un elementData, no te explotará el VPS 1 elementData de nada.

Lo que dije arriba :P hay una diferencia de usarlo en un render a usarlo en un evento de daño.

  • Recently Browsing   0 members

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