Pipee20k Posted May 10, 2015 Share Posted May 10, 2015 Bueno, lo que pasa es que hice un comando para mutear todos los usuarios pero, cuando estan muteados y le vuelvo a dar muteall vuelve a aparecer el mensaje de que todos han sido muteados, como puedo hacer que si estan muteados y vuelvo a dar muteall diga "todos los jugadores ya estan muteados" o algo asi Este es el codigo: local players = getElementsByType ("player") function unmuteAll (thePlayer) local accName = getAccountName (getPlayerAccount (thePlayer)) local myAcc = "Pipe" local myAcc2 = "jonitho" if accName == myAcc or myAcc2 then for theKey,thePlayer in ipairs(players) do if (isPlayerMuted(thePlayer)) then setPlayerMuted (thePlayer, false) end end end end addCommandHandler ("unmuteall", unmuteAll) function unmuteAllChat (thePlayer) local accName = getAccountName (getPlayerAccount (thePlayer)) local myAcc = "Pipe" local myAcc2 = "jonitho" if accName == myAcc or myAcc2 then if (not isPlayerMuted(thePlayer)) then outputChatBox ( "#00FFCC[MUTE] #FFFFFFUnmuted all players.", getRootElement(), 255, 255, 255, true ) end end end addCommandHandler ("unmuteall", unmuteAllChat) function muteAll (thePlayer) local accName = getAccountName (getPlayerAccount (thePlayer)) local myAcc = "Pipe" local myAcc2 = "jonitho" if accName == myAcc or myAcc2 then for theKey,thePlayer in ipairs(players) do if (not isPlayerMuted(thePlayer)) then setPlayerMuted (thePlayer, true) end end end end addCommandHandler ("muteall", muteAll) function muteAllChat (thePlayer) local accName = getAccountName (getPlayerAccount (thePlayer)) local myAcc = "Pipe" local myAcc2 = "jonitho" if accName == myAcc or myAcc2 then if (isPlayerMuted(thePlayer)) then outputChatBox ( "#00FFCC[MUTE] #FFFFFFMuted all players.", getRootElement(), 255, 255, 255, true ) end end end addCommandHandler ("muteall", muteAllChat) Soy novato en esto y veran que la funcion que los mutea y la que avisa en el chat esta separada, lo separe porque al hacer el comando salian muchos mensajes en el chat (uno por cada jugador online que era muteado) si me pueden ayudar a arreglar eso tambien se los agradeceria mucho Link to comment
Tomas Posted May 10, 2015 Share Posted May 10, 2015 En vez de usar isPlayerMuted puedes usar una variable, en la última función detectas si 'thePlayer' (el que ejecutó el comando está muteado, no le veo sentido). También hay un error en el IF, comparas si accName es igual a myAcc, si no es igual, se verifica si myAcc2 es true, osea que todos lo pueden usar, debes agregar otra vez al costado del or la misma comparación. if accName == myAcc or accName == myAcc2 Link to comment
Bc# Posted May 10, 2015 Share Posted May 10, 2015 -No te olvides de lo que dijo tomas, tienes que editarlo. Ya que cualquiera puede dar muteall y le funcionará el comando. Para eso te hice la función isAuthorized que verifica si el que ejecuto el comando es uno de los 2 players que pusiste. (es mas rápido y eficiente) -Elimine 2 funciones que no tenían relevancia. -Ahora la función muteará a todos excepto al que la ejecutó. (si quieres que no le de mute a los 2 autorizados, usa la función que cree) -Si te fijas, a pesar le agregue mas cosas a tu código no aumento la cantidad de lineas que tenias inicialmente. Intenta ser mas ordenado y optimizar tus códigos. --Se define globalmente local verif = false function unmuteAll (thePlayer) if not verif then outputChatBox ( "#00FFCC[MUTE] #FFFFFFTodos los jugadores ya estan desmuteados", thePlayer, 255, 255, 255, true ) --Mensaje solo para quien ejecutó el comando return end if isAuthorized(thePlayer) then for i,v in ipairs(getElementsByType ("player")) do if v ~= thePlayer then verif = false setPlayerMuted (v, false) end end if verif then verif = false outputChatBox ( "#00FFCC[MUTE] #FFFFFFError, no hay jugadores muteados", thePlayer, 255, 255, 255, true ) end end end addCommandHandler ("unmuteall", unmuteAll) function muteAll (thePlayer) if verif then outputChatBox ( "#00FFCC[MUTE] #FFFFFFTodos los jugadores ya estan muteados", thePlayer, 255, 255, 255, true ) --Mensaje solo para quien ejecutó el comando return end if isAuthorized(thePlayer) then for i,v in ipairs(getElementsByType ("player")) do if v ~= thePlayer then verif = true setPlayerMuted (v, true) end end if not verif then outputChatBox ( "#00FFCC[MUTE] #FFFFFFError, no hay jugadores para mutear.", thePlayer, 255, 255, 255, true ) --Mensaje solo para quien ejecutó el comando end end end addCommandHandler ("muteall", muteAll) function isAuthorized(thePlayer) local accName = getAccountName (getPlayerAccount (thePlayer)) local myAcc = "Pipe" local myAcc2 = "jonitho" if accName == myAcc or accName == myAcc2 then return true else return false end end Link to comment
Recommended Posts