#Dv^ Posted October 10, 2016 Share Posted October 10, 2016 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
Anzo Posted October 10, 2016 Share Posted October 10, 2016 ¿Ya indicaste que el atacante sea el jugador? Link to comment
aka Blue Posted October 10, 2016 Share Posted October 10, 2016 @Anzo Eso no sirve de mucho Link to comment
#Dv^ Posted October 10, 2016 Author Share Posted October 10, 2016 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
Tomas Posted October 10, 2016 Share Posted October 10, 2016 (edited) function test (targetPlayer) if ( targetPlayer and getElementData (targetPlayer, "test") ) or ( getElementData(localPlayer, "test") ) then cancelEvent() end end end addEventHandler("onClientPlayerDamage", root, test) Edited October 10, 2016 by Tomas Link to comment
#Dv^ Posted October 11, 2016 Author Share Posted October 11, 2016 Gracias por su ayuda, me resultó fácil Una pregunta, ¿El elementData causa lag?, otra alternativa a esa? Link to comment
Tomas Posted October 11, 2016 Share Posted October 11, 2016 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. Link to comment
#Dv^ Posted October 11, 2016 Author Share Posted October 11, 2016 (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 October 11, 2016 by Slash14 Link to comment
aka Blue Posted October 11, 2016 Share Posted October 11, 2016 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
#Dv^ Posted October 11, 2016 Author Share Posted October 11, 2016 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. Link to comment
aka Blue Posted October 11, 2016 Share Posted October 11, 2016 @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 Link to comment
Tomas Posted October 11, 2016 Share Posted October 11, 2016 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. Link to comment
aka Blue Posted October 11, 2016 Share Posted October 11, 2016 @Tomas Más sencillo usar un elementData, no te explotará el VPS 1 elementData de nada. Link to comment
Tomas Posted October 11, 2016 Share Posted October 11, 2016 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 hay una diferencia de usarlo en un render a usarlo en un evento de daño. Link to comment
Recommended Posts