#Dv^ Posted November 7, 2016 Posted November 7, 2016 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 )
aka Blue Posted November 7, 2016 Posted November 7, 2016 Cambia el elseif y hazlo todo de una. if dm [attacker] == true or dm[source] == true then PD: No entiendo para qué el uso de tablas, es mas, ni funcionaría porque debes sincronizarlo (creo)
#Dv^ Posted November 7, 2016 Author Posted November 7, 2016 (edited) 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 November 7, 2016 by Slash14
aka Blue Posted November 7, 2016 Posted November 7, 2016 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.
#Dv^ Posted November 7, 2016 Author Posted November 7, 2016 Me sale este error, que "isGodModeEnabled" no es global attempt to call global "isGodModeEnabled" (a nil value)
Tomas Posted November 7, 2016 Posted November 7, 2016 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.
#Dv^ Posted November 8, 2016 Author Posted November 8, 2016 ¿Qué debo hacer para que funcione como espero?
Tomas Posted November 8, 2016 Posted November 8, 2016 16 hours ago, Slash14 said: ¿Qué debo hacer para que funcione como espero? Deberías sincronizar la tabla cada vez que alguien usara el godmode, básicamente lo que hacen los element datas, ¿por qué no usas element datas?
aka Blue Posted November 8, 2016 Posted November 8, 2016 Es isGodmodeEnabled. Has escrito la función mal...
#Dv^ Posted November 8, 2016 Author Posted November 8, 2016 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
Tomas Posted November 9, 2016 Posted November 9, 2016 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.
#Dv^ Posted November 9, 2016 Author Posted November 9, 2016 Ohh listo, no había leído bien lo que posteaste, gracias por las respuestas 6 hours ago, Tomas said: básicamente lo que hacen los element data
Recommended Posts