#Dv^ Posted November 7, 2016 Share 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 ) Link to comment
aka Blue Posted November 7, 2016 Share 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) Link to comment
#Dv^ Posted November 7, 2016 Author Share 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 Link to comment
aka Blue Posted November 7, 2016 Share 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. Link to comment
#Dv^ Posted November 7, 2016 Author Share Posted November 7, 2016 Me sale este error, que "isGodModeEnabled" no es global attempt to call global "isGodModeEnabled" (a nil value) Link to comment
Tomas Posted November 7, 2016 Share 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. Link to comment
#Dv^ Posted November 8, 2016 Author Share Posted November 8, 2016 ¿Qué debo hacer para que funcione como espero? Link to comment
Tomas Posted November 8, 2016 Share 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? Link to comment
aka Blue Posted November 8, 2016 Share Posted November 8, 2016 Es isGodmodeEnabled. Has escrito la función mal... Link to comment
#Dv^ Posted November 8, 2016 Author Share 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 Link to comment
Tomas Posted November 9, 2016 Share 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. Link to comment
#Dv^ Posted November 9, 2016 Author Share 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 Link to comment
Recommended Posts