Raised This Month: $ Target: $400
 0% 

problem with get_user_flags


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
manor3x
Junior Member
Join Date: Jan 2012
Old 07-11-2013 , 10:06   problem with get_user_flags
Reply With Quote #1

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
manor3x is offline
Bos93
Veteran Member
Join Date: Jul 2010
Old 07-11-2013 , 10:20   Re: problem with get_user_flags
Reply With Quote #2

else if(iFlags & ADMIN_LEVEL_G && ADMIN_LEVEL_H)

wrong

change to

else if(iFlags & ADMIN_LEVEL_G | ADMIN_LEVEL_H)
__________________
Bos93 is offline
Send a message via ICQ to Bos93 Send a message via Skype™ to Bos93
manor3x
Junior Member
Join Date: Jan 2012
Old 07-11-2013 , 10:29   Re: problem with get_user_flags
Reply With Quote #3

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
manor3x is offline
kimilover
Junior Member
Join Date: Oct 2010
Old 07-11-2013 , 10:43   Re: problem with get_user_flags
Reply With Quote #4

can you paste the full code?
kimilover is offline
manor3x
Junior Member
Join Date: Jan 2012
Old 07-11-2013 , 10:48   Re: problem with get_user_flags
Reply With Quote #5

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 
}
manor3x is offline
kimilover
Junior Member
Join Date: Oct 2010
Old 07-11-2013 , 11:16   Re: problem with get_user_flags
Reply With Quote #6

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 
kimilover is offline
manor3x
Junior Member
Join Date: Jan 2012
Old 07-15-2013 , 07:26   Re: problem with get_user_flags
Reply With Quote #7

Quote:
Originally Posted by kimilover View Post
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
manor3x is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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