AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   problem with get_user_flags (https://forums.alliedmods.net/showthread.php?t=220501)

manor3x 07-11-2013 10:06

problem with get_user_flags
 
When someone with admin_level_g and admin_level_h talks in chat it appears god + vip but when someone with just admin_level_g it should appear just god but it still appears god + vip.

this is the respective code

Code:

new const g_szTag[][] = {
    "",
    "[Detinator]",
    "[God + V.I.P.]",
    "[God]",
    "[Moderator + V.I.P.]",
    "[Moderator]",
    "[Admin + V.I.P.]",
    "[Admin]",
    "[Tester + V.I.P.]",
    "[Tester]",
    "[V.I.P.]"
}

Code:

    new admin = 0, iFlags = get_user_flags(id)

    if(iFlags & ADMIN_IMMUNITY)
        admin = 1
    else if(iFlags & ADMIN_LEVEL_G && ADMIN_LEVEL_H)
        admin = 2
    else if(iFlags & ADMIN_LEVEL_G)
        admin = 3
    else if(iFlags & ADMIN_LEVEL_A && ADMIN_LEVEL_H)
        admin = 4
    else if(iFlags & ADMIN_LEVEL_A)
        admin = 5
    else if(iFlags & ADMIN_VOTE && ADMIN_LEVEL_H)
        admin = 6
    else if(iFlags & ADMIN_VOTE)
        admin = 7       
    else if(iFlags & ADMIN_KICK && ADMIN_LEVEL_H)
        admin = 8       
    else if(iFlags & ADMIN_KICK)
        admin = 9
    else if(iFlags & ADMIN_RESERVATION && ADMIN_LEVEL_H)
        admin = 10


Bos93 07-11-2013 10:20

Re: problem with get_user_flags
 
else if(iFlags & ADMIN_LEVEL_G && ADMIN_LEVEL_H)

wrong

change to

else if(iFlags & ADMIN_LEVEL_G | ADMIN_LEVEL_H)

manor3x 07-11-2013 10:29

Re: problem with get_user_flags
 
I have changed everything but now all the players appear with [God + V.I.P.] no matter if they have a flag or not.

Code:

if(iFlags & ADMIN_IMMUNITY)
        admin = 1
    else if(iFlags & ADMIN_LEVEL_G | ADMIN_LEVEL_H)
        admin = 2
    else if(iFlags & ADMIN_LEVEL_G)
        admin = 3
    else if(iFlags & ADMIN_LEVEL_A | ADMIN_LEVEL_H)
        admin = 4
    else if(iFlags & ADMIN_LEVEL_A)
        admin = 5
    else if(iFlags & ADMIN_VOTE | ADMIN_LEVEL_H)
        admin = 6
    else if(iFlags & ADMIN_VOTE)
        admin = 7       
    else if(iFlags & ADMIN_KICK | ADMIN_LEVEL_H)
        admin = 8       
    else if(iFlags & ADMIN_KICK)
        admin = 9
    else if(iFlags & ADMIN_RESERVATION | ADMIN_LEVEL_H)
        admin = 10


kimilover 07-11-2013 10:43

Re: problem with get_user_flags
 
can you paste the full code?

manor3x 07-11-2013 10:48

Re: problem with get_user_flags
 
Code:

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Admin Chat Colors"
#define VERSION "2.0"
#define AUTHOR "Arion"

#define ACCESS_LEVEL ADMIN_IMMUNITY
#define ADMIN_LISTEN ADMIN_BAN

new message[192]
new sayText
new teamInfo
new maxPlayers

new g_MessageColor
new g_NameColor
new g_AdminListen

new strName[191]
new strText[191]
new alive[11]

new const g_szTag[][] = {
    "",
    "[Detinator]",
    "[God + V.I.P.]",
    "[God]",
    "[Moderator + V.I.P.]",
    "[Moderator]",
    "[Admin + V.I.P.]",
    "[Admin]",
    "[Tester + V.I.P.]",
    "[Tester]",
    "[V.I.P.]"
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    g_MessageColor = register_cvar("amx_color", "2") // Message colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red
    g_NameColor = register_cvar("amx_namecolor", "2") // Name colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red, [6] Team-color
    g_AdminListen = register_cvar("amx_listen", "1") // Set whether admins see or not all messages(Alive, dead and team-only)


    sayText = get_user_msgid("SayText")
    teamInfo = get_user_msgid("TeamInfo")
    maxPlayers = get_maxplayers()


    register_message(sayText, "avoid_duplicated")

    register_concmd("amx_color", "set_color", ACCESS_LEVEL, "<color>")
    register_concmd("amx_namecolor", "set_name_color", ACCESS_LEVEL, "<color>")
    register_concmd("amx_listen", "set_listen", ACCESS_LEVEL, "<1 | 0>")
    register_clcmd("say", "hook_say")
    register_clcmd("say_team", "hook_teamsay")
}


public avoid_duplicated(msgId, msgDest, receiver)
{
    return PLUGIN_HANDLED
}


public hook_say(id)
{
    read_args(message, 191)
    remove_quotes(message)

    // Gungame commands and empty messages
    if(message[0] == '@' || message[0] == '/' || message[0] == '!' || equal(message, "")) // Ignores Admin Hud Messages, Admin Slash commands,
        return PLUGIN_CONTINUE

    new name[32]
    get_user_name(id, name, 31)

    new admin = 0, iFlags = get_user_flags(id)

    if(iFlags & ADMIN_IMMUNITY)
        admin = 1
    else if(iFlags & ADMIN_LEVEL_G | ADMIN_LEVEL_H)
        admin = 2
    else if(iFlags & ADMIN_LEVEL_G)
        admin = 3
    else if(iFlags & ADMIN_LEVEL_A | ADMIN_LEVEL_H)
        admin = 4
    else if(iFlags & ADMIN_LEVEL_A)
        admin = 5
    else if(iFlags & ADMIN_VOTE | ADMIN_LEVEL_H)
        admin = 6
    else if(iFlags & ADMIN_VOTE)
        admin = 7       
    else if(iFlags & ADMIN_KICK | ADMIN_LEVEL_H)
        admin = 8       
    else if(iFlags & ADMIN_KICK)
        admin = 9
    else if(iFlags & ADMIN_RESERVATION | ADMIN_LEVEL_H)
        admin = 10       
       
    new isAlive

    if(is_user_alive(id))
    {
        isAlive = 1
        alive = "^x01"
    }
    else
    {
        isAlive = 0
        alive = "^x01*DEAD* "
    }

    static color[10]

    if(admin)
    {
        // Name
        switch(get_pcvar_num(g_NameColor))
        {
            case 1:
                format(strName, 191, "^x04%s %s%s", g_szTag[admin], alive, name)
            case 2:
                format(strName, 191, "^x04%s %s^x04%s ", g_szTag[admin], alive, name)
            case 3:
            {
                color = "SPECTATOR"
                format(strName, 191, "^x04%s %s^x03%s ", g_szTag[admin], alive, name)
            }
            case 4:
            {
                color = "CT"
                format(strName, 191, "^x04%s %s^x03%s", g_szTag[admin], alive, name)
            }
            case 5:
            {
                color = "TERRORIST"
                format(strName, 191, "^x04%s %s^x03%s", g_szTag[admin], alive, name)
            }
            case 6:
            {
                get_user_team(id, color, 9)
                format(strName, 191, "^x04%s %s^x03%s", g_szTag[admin], alive, name)
            }
        }

        // Message
        switch(get_pcvar_num(g_MessageColor))
        {
            case 1:    // Yellow
                format(strText, 191, "%s", message)
            case 2:    // Green
                format(strText, 191, "^x04%s", message)
            case 3:    // White
            {
                copy(color, 9, "SPECTATOR")
                format(strText, 191, "^x03%s", message)
            }
            case 4:    // Blue
            {
                copy(color, 9, "CT")
                format(strText, 191, "^x03%s", message)
            }
            case 5:    // Red
            {
                copy(color, 9, "TERRORIST")
                format(strText, 191, "^x03%s", message)
            }
        }
    }
    else    // Player is not admin. Team-color name : Yellow message
    {
        get_user_team(id, color, 9)
        format(strName, 191, "%s^x03%s", alive, name)
        format(strText, 191, "%s", message)
    }

    format(message, 191, "%s^x01 :  %s", strName, strText)

    sendMessage(color, isAlive)    // Sends the colored message

    return PLUGIN_CONTINUE
}


public hook_teamsay(id)
{
    new playerTeam = get_user_team(id)
    new playerTeamName[19]

    switch(playerTeam) // Team names which appear on team-only messages
    {
        case 1:
            copy(playerTeamName, 11, "Terrorists")

        case 2:
            copy(playerTeamName, 18, "Counter-Terrorists")

        default:
            copy(playerTeamName, 9, "Spectator")
    }

    read_args(message, 191)
    remove_quotes(message)

    // Gungame commands and empty messages
    if(message[0] == '@' || message[0] == '/' || message[0] == '!' || equal(message, "")) // Ignores Admin Hud Messages, Admin Slash commands,
        return PLUGIN_CONTINUE

    new name[32]
    get_user_name(id, name, 31)

    new admin = 0, iFlags = get_user_flags(id)

    if(iFlags & ADMIN_IMMUNITY)
        admin = 1
    else if(iFlags & ADMIN_LEVEL_G && ADMIN_LEVEL_H)
        admin = 2
    else if(iFlags & ADMIN_LEVEL_G)
        admin = 3
    else if(iFlags & ADMIN_LEVEL_A && ADMIN_LEVEL_H)
        admin = 4
    else if(iFlags & ADMIN_LEVEL_A)
        admin = 5
    else if(iFlags & ADMIN_VOTE && ADMIN_LEVEL_H)
        admin = 6
    else if(iFlags & ADMIN_VOTE)
        admin = 7       
    else if(iFlags & ADMIN_CHAT && ADMIN_LEVEL_H)
        admin = 8       
    else if(iFlags & ADMIN_CHAT)
        admin = 9
    else if(iFlags & ADMIN_RESERVATION && ADMIN_LEVEL_H)
        admin = 10       

    new isAlive

    if(is_user_alive(id))
    {
        isAlive = 1
        alive = "^x01"
    }
    else
    {
        isAlive = 0
        alive = "^x01*DEAD* "
    }

    static color[10]

    if(admin)
    {
        // Name
        switch(get_pcvar_num(g_NameColor))
        {
            case 1:
                format(strName, 191, "%s(%s)^x04%s %s", alive, playerTeamName, g_szTag[admin], name)
            case 2:
                format(strName, 191, "%s(%s)^x04%s ^x04%s", alive, playerTeamName, g_szTag[admin], name)
            case 3:
            {
                color = "SPECTATOR"
                format(strName, 191, "%s(%s)^x04%s ^x03%s", alive, playerTeamName, g_szTag[admin], name)
            }
            case 4:
            {
                color = "CT"
                format(strName, 191, "%s(%s)^x04%s ^x03%s", alive, playerTeamName, g_szTag[admin], name)
            }
            case 5:
            {
                color = "TERRORIST"
                format(strName, 191, "%s(%s)^x04%s ^x03%s", alive, playerTeamName, g_szTag[admin], name)
            }
            case 6:
            {
                get_user_team(id, color, 9)
                format(strName, 191, "%s(%s)^x04%s ^x03%s", alive, playerTeamName, g_szTag[admin], name)
            }
        }

        // Message
        switch(get_pcvar_num(g_MessageColor))
        {
            case 1:    // Yellow
                format(strText, 191, "%s", message)
            case 2:    // Green
                format(strText, 191, "^x04%s", message)
            case 3:    // White
            {
                copy(color, 9, "SPECTATOR")
                format(strText, 191, "^x03%s", message)
            }
            case 4:    // Blue
            {
                copy(color, 9, "CT")
                format(strText, 191, "^x03%s", message)
            }
            case 5:    // Red
            {
                copy(color, 9, "TERRORIST")
                format(strText, 191, "^x03%s", message)
            }
        }
    }
    else    // Player is not admin. Team-color name : Yellow message
    {
        get_user_team(id, color, 9)
        format(strName, 191, "%s(%s) ^x03%s", alive, playerTeamName, name)
        format(strText, 191, "%s", message)
    }

    format(message, 191, "%s ^x01:  %s", strName, strText)

    sendTeamMessage(color, isAlive, playerTeam)    // Sends the colored message

    return PLUGIN_CONTINUE
}


public set_color(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2))
        return PLUGIN_HANDLED

    new arg[1], newColor
    read_argv(1, arg, 1)

    newColor = str_to_num(arg)

    if(newColor >= 1 && newColor <= 5)
    {
        set_pcvar_num(g_MessageColor, newColor)

        if(get_pcvar_num(g_NameColor) != 1 &&
            ((newColor == 3 &&  get_pcvar_num(g_NameColor) != 3)
            ||(newColor == 4 &&  get_pcvar_num(g_NameColor) != 4)
            ||(newColor == 5 &&  get_pcvar_num(g_NameColor) != 5)))
        {
            set_pcvar_num(g_NameColor, 2)
        }
    }

    return PLUGIN_HANDLED
}


public set_name_color(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2))
        return PLUGIN_HANDLED

    new arg[1], newColor
    read_argv(1, arg, 1)

    newColor = str_to_num(arg)

    if(newColor >= 1 && newColor <= 6)
    {
        set_pcvar_num(g_NameColor, newColor)

        if((get_pcvar_num(g_MessageColor) != 1
            &&((newColor == 3 &&  get_pcvar_num(g_MessageColor) != 3)
            ||(newColor == 4 &&  get_pcvar_num(g_MessageColor) != 4)
            ||(newColor == 5 &&  get_pcvar_num(g_MessageColor) != 5)))
            || get_pcvar_num(g_NameColor) == 6)
        {
            set_pcvar_num(g_MessageColor, 2)
        }
    }

    return PLUGIN_HANDLED
}


public set_listen(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2))
        return PLUGIN_HANDLED

    new arg[1], newListen
    read_argv(1, arg, 1)

    newListen = str_to_num(arg)

    set_pcvar_num(g_AdminListen, newListen)

    return PLUGIN_HANDLED
}


public sendMessage(color[], alive)
{
    new teamName[10]

    for(new player = 1; player < maxPlayers; player++)
    {
        if(!is_user_connected(player))
            continue

        if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
        {
            get_user_team(player, teamName, 9)    // Stores user's team name to change back after sending the message
            changeTeamInfo(player, color)        // Changes user's team according to color choosen
            writeMessage(player, message)        // Writes the message on player's chat
            changeTeamInfo(player, teamName)    // Changes user's team back to original
        }
    }
}


public sendTeamMessage(color[], alive, playerTeam)
{
    new teamName[10]

    for(new player = 1; player < maxPlayers; player++)
    {
        if(!is_user_connected(player))
            continue

        if(get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
        {
            if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
            {
                get_user_team(player, teamName, 9)    // Stores user's team name to change back after sending the message
                changeTeamInfo(player, color)        // Changes user's team according to color choosen
                writeMessage(player, message)        // Writes the message on player's chat
                changeTeamInfo(player, teamName)    // Changes user's team back to original
            }
        }
    }
}


public changeTeamInfo(player, team[])
{
    message_begin(MSG_ONE, teamInfo, _, player)    // Tells to to modify teamInfo(Which is responsable for which time player is)
    write_byte(player)                // Write byte needed
    write_string(team)                // Changes player's team
    message_end()                    // Also Needed
}


public writeMessage(player, message[])
{
    message_begin(MSG_ONE, sayText, {0, 0, 0}, player)    // Tells to modify sayText(Which is responsable for writing colored messages)
    write_byte(player)                    // Write byte needed
    write_string(message)                    // Effectively write the message, finally, afterall
    message_end()                        // Needed as always
}


kimilover 07-11-2013 11:16

Re: problem with get_user_flags
 
try this
PHP Code:

 if(iFlags ADMIN_IMMUNITY
        
admin 
    
else if((iFlags ADMIN_LEVEL_G) && (iFlags ADMIN_LEVEL_H)) 
        
admin 
    
else if(iFlags ADMIN_LEVEL_G
        
admin 
    
else if((iFlags ADMIN_LEVEL_A) && (iFlags ADMIN_LEVEL_H))
        
admin 4
    
else if(iFlags ADMIN_LEVEL_A)
        
admin 5
    
else if((iFlags ADMIN_VOTE) && (iFlags ADMIN_LEVEL_H))
        
admin 6
    
else if(iFlags ADMIN_VOTE)
        
admin 7    
    
else if((iFlags ADMIN_KICK) && (iFlags ADMIN_LEVEL_H))
        
admin 8    
    
else if(iFlags ADMIN_KICK)
        
admin 9
    
else if((iFlags ADMIN_RESERVATION) && (iFlags ADMIN_LEVEL_H))
        
admin 10 


manor3x 07-15-2013 07:26

Re: problem with get_user_flags
 
Quote:

Originally Posted by kimilover (Post 1988589)
try this
PHP Code:

 if(iFlags ADMIN_IMMUNITY
        
admin 
    
else if((iFlags ADMIN_LEVEL_G) && (iFlags ADMIN_LEVEL_H)) 
        
admin 
    
else if(iFlags ADMIN_LEVEL_G
        
admin 
    
else if((iFlags ADMIN_LEVEL_A) && (iFlags ADMIN_LEVEL_H))
        
admin 4
    
else if(iFlags ADMIN_LEVEL_A)
        
admin 5
    
else if((iFlags ADMIN_VOTE) && (iFlags ADMIN_LEVEL_H))
        
admin 6
    
else if(iFlags ADMIN_VOTE)
        
admin 7    
    
else if((iFlags ADMIN_KICK) && (iFlags ADMIN_LEVEL_H))
        
admin 8    
    
else if(iFlags ADMIN_KICK)
        
admin 9
    
else if((iFlags ADMIN_RESERVATION) && (iFlags ADMIN_LEVEL_H))
        
admin 10 


thank you, it worked. Sorry for the late response


All times are GMT -4. The time now is 06:30.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.