Jump to content

Una pequeña ayuda


Recommended Posts

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

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

-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
  • Recently Browsing   0 members

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