View Single Post
Exolent[jNr]
Veteran Member
Join Date: Feb 2007
Location: Tennessee
Old 02-09-2011 , 19:22   Re: [ADMIN], [MOD] and [VIP] tag
Reply With Quote #29

PHP 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_LEVEL_C

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[][] = {
    
""// DO NOT REMOVE
    
"[ADMIN]",
    
"[MOD]",
    
"[VIP]",
    
"[YOUR NEW TAG]"
}

new const 
g_iTagFlag[sizeof(g_szTag)] = {
    
ADMIN_ALL// DO NOT REMOVE
    
ADMIN_IMMUNITY,
    
ADMIN_BAN,
    
ADMIN_RESERVATION,
    
ADMIN_LEVEL_B
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

    
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""6"// 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(msgIdmsgDestreceiver)
{
    return 
PLUGIN_HANDLED
}

get_tag_index(id)
{
    new 
flags get_user_flags(id)
    
    for(new 
1sizeof(g_iTagFlag); i++)
    {
        if(
check_admin_flag(flagsg_iTagFlag[i]))
        {
            return 
i
        
}
    }
    
    return 
0
}

check_admin_flag(flagsflag)
{
    if(
flag == ADMIN_ADMIN)
    {
        return ((
flags & ~ADMIN_USER) > 0)
    }
    else if(
flag == ADMIN_ALL)
    {
        return 
1
    
}
    
    return (
flags flag)
}

public 
hook_say(id)
{
    
read_args(message191)
    
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(idname31)

    new 
admin get_tag_index(id)

    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(strName191"^x04%s %s%s"g_szTag[admin], alivename)
            case 
2:
                
format(strName191"^x04%s %s^x04%s "g_szTag[admin], alivename)
            case 
3:
            {
                
color "SPECTATOR"
                
format(strName191"^x04%s %s^x03%s "g_szTag[admin], alivename)
            }
            case 
4:
            {
                
color "CT"
                
format(strName191"^x04%s %s^x03%s"g_szTag[admin], alivename)
            }
            case 
5:
            {
                
color "TERRORIST"
                
format(strName191"^x04%s %s^x03%s"g_szTag[admin], alivename)
            }
            case 
6:
            {
                
get_user_team(idcolor9)
                
format(strName191"^x04%s %s^x03%s"g_szTag[admin], alivename)
            }
        }

        
// Message
        
switch(get_pcvar_num(g_MessageColor))
        {
            case 
1:    // Yellow
                
format(strText191"%s"message)
            case 
2:    // Green
                
format(strText191"^x04%s"message)
            case 
3:    // White
            
{
                
copy(color9"SPECTATOR")
                
format(strText191"^x03%s"message)
            }
            case 
4:    // Blue
            
{
                
copy(color9"CT")
                
format(strText191"^x03%s"message)
            }
            case 
5:    // Red
            
{
                
copy(color9"TERRORIST")
                
format(strText191"^x03%s"message)
            }
        }
    }
    else     
// Player is not admin. Team-color name : Yellow message
    
{
        
get_user_team(idcolor9)
        
format(strName191"%s^x03%s"alivename)
        
format(strText191"%s"message)
    }

    
format(message191"%s^x01 :  %s"strNamestrText)

    
sendMessage(colorisAlive)    // 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(playerTeamName11"Terrorists")

        case 
2:
            
copy(playerTeamName18"Counter-Terrorists")

        default:
            
copy(playerTeamName9"Spectator")
    }

    
read_args(message191)
    
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(idname31)

    new 
admin get_tag_index(id)

    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(strName191"%s(%s)^x04%s %s"aliveplayerTeamNameg_szTag[admin], name)
            case 
2:
                
format(strName191"%s(%s)^x04%s ^x04%s"aliveplayerTeamNameg_szTag[admin], name)
            case 
3:
            {
                
color "SPECTATOR"
                
format(strName191"%s(%s)^x04%s ^x03%s"aliveplayerTeamNameg_szTag[admin], name)
            }
            case 
4:
            {
                
color "CT"
                
format(strName191"%s(%s)^x04%s ^x03%s"aliveplayerTeamNameg_szTag[admin], name)
            }
            case 
5:
            {
                
color "TERRORIST"
                
format(strName191"%s(%s)^x04%s ^x03%s"aliveplayerTeamNameg_szTag[admin], name)
            }
            case 
6:
            {
                
get_user_team(idcolor9)
                
format(strName191"%s(%s)^x04%s ^x03%s"aliveplayerTeamNameg_szTag[admin], name)
            }
        }

        
// Message
        
switch(get_pcvar_num(g_MessageColor))
        {
            case 
1:    // Yellow
                
format(strText191"%s"message)
            case 
2:    // Green
                
format(strText191"^x04%s"message)
            case 
3:    // White
            
{
                
copy(color9"SPECTATOR")
                
format(strText191"^x03%s"message)
            }
            case 
4:    // Blue
            
{
                
copy(color9"CT")
                
format(strText191"^x03%s"message)
            }
            case 
5:    // Red
            
{
                
copy(color9"TERRORIST")
                
format(strText191"^x03%s"message)
            }
        }
    }
    else     
// Player is not admin. Team-color name : Yellow message
    
{
        
get_user_team(idcolor9)
        
format(strName191"%s(%s) ^x03%s"aliveplayerTeamNamename)
        
format(strText191"%s"message)
    }

    
format(message191"%s ^x01:  %s"strNamestrText)

    
sendTeamMessage(colorisAliveplayerTeam)    // Sends the colored message

    
return PLUGIN_CONTINUE
}


public 
set_color(idlevelcid)
{
    if(!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED

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

    
newColor str_to_num(arg)

    if(
newColor >= && newColor <= 5)
    {
        
set_pcvar_num(g_MessageColornewColor)

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

    return 
PLUGIN_HANDLED
}


public 
set_name_color(idlevelcid)
{
    if(!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED

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

    
newColor str_to_num(arg)

    if(
newColor >= && newColor <= 6)
    {
        
set_pcvar_num(g_NameColornewColor)

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

    return 
PLUGIN_HANDLED
}


public 
set_listen(idlevelcid)
{
    if(!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED

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

    
newListen str_to_num(arg)

    
set_pcvar_num(g_AdminListennewListen)

    return 
PLUGIN_HANDLED
}


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

    for(new 
player 1player maxPlayersplayer++)
    {
        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(playerteamName9)    // Stores user's team name to change back after sending the message
            
changeTeamInfo(playercolor)        // Changes user's team according to color choosen
            
writeMessage(playermessage)        // Writes the message on player's chat
            
changeTeamInfo(playerteamName)    // Changes user's team back to original
        
}
    }
}


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

    for(new 
player 1player maxPlayersplayer++)
    {
        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(playerteamName9)    // Stores user's team name to change back after sending the message
                
changeTeamInfo(playercolor)        // Changes user's team according to color choosen
                
writeMessage(playermessage)        // Writes the message on player's chat
                
changeTeamInfo(playerteamName)    // Changes user's team back to original
            
}
        }
    }
}


public 
changeTeamInfo(playerteam[])
{
    
message_begin(MSG_ONEteamInfo_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(playermessage[])
{
    
message_begin(MSG_ONEsayText, {000}, 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

__________________
No private work or selling mods.
Quote:
Originally Posted by xPaw View Post
I love you exolent!
Exolent[jNr] is offline