Код за потвърждение: Избери целия код
#include <amxmodx>
#include <colorchat>
#define PLUGIN_VERSION "2.2"
//#define USE_JAILBREAK
#if defined USE_JAILBREAK
#define PREFIX_SIMON 5
native is_user_simon(id)
#endif
enum
{
INFO_PREFIX = 1,
INFO_CLRNAME,
INFO_CLRCHAT,
INFO_CLRSCND
}
#define ADMIN_LISTEN "m"
new const g_szAdminPrefixes[][] = {
/*
--------------
Флаг Префикс Цвят (ник) Цвят (чат) Цвят (second) */
"", "", "team", "normal", "team",
"l", "^1[^4OWNER^1]", "team", "green", "team",
"o", "^1[^4Test Admin^1]", "team", "green", "team",
"r", "^1[^4Server Admin^1]", "team", "green", "team",
"d", "^1[^4Ban-Team^1]", "team", "green", "team",
"b", "^1[^4V.I.P^1]", "team", "green", "team",
"q", "^1[^4SMS Admin^1]", "team", "green", "team",
"n", "^1[^4CO-OWNER^1]", "team", "green", "team",
"p", "^1[^4VIP+^1]", "team", "green", "team",
"s", "^1[^4Server Otgovornik^1]", "team", "green", "team"
}
new const g_szSeparator[] = " ^1:"
new const g_szDeathPrefix[][] = { "^1*^4MURTUV^1* ", "" }
new const g_szColors[][] = { "^1", "^3", "^4" }
new g_szAdminPrefix[33][32]
new const g_szTeamPrefix[][] = {
"",
"^1(^3Terrorist^1)",
"^1(^3Counter-Terrorist^1)",
"^1(^3Spectator^1)"
}
public plugin_init()
{
register_plugin("Chat Manager", PLUGIN_VERSION, "OciXCrom")
register_cvar("CRXChatManager", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_clcmd("say", "hookSay")
register_clcmd("say_team", "hookSay")
}
public plugin_natives()
register_native("GetPlayerPrefix", "_GetPlayerPrefix")
public _GetPlayerPrefix(iPlugin, iParams)
{
new id = get_param(1)
set_string(2, g_szAdminPrefix[id], get_param(3))
return 1
}
public client_putinserver(id)
g_szAdminPrefix[id][0] = EOS
public hookSay(id)
{
new szArgs[192]
read_args(szArgs, charsmax(szArgs))
remove_quotes(szArgs)
switch(szArgs[0])
{
case EOS, '@': return PLUGIN_HANDLED
}
new szMessage[192], szName[32], szDeathPrefix[32], szTeamPrefix[32], szAdminPrefix[32], szCommand[5], szNameColor[3], szChatColor[3]
new iAlive = is_user_alive(id) ? 1 : 0, iPrefix = get_prefixnum(id), iColor = get_secondcolor(g_szAdminPrefixes[iPrefix + INFO_CLRSCND]), iTeam = get_user_team(id)
copy(szDeathPrefix, charsmax(szDeathPrefix), g_szDeathPrefix[iAlive])
copy(szAdminPrefix, charsmax(szAdminPrefix), g_szAdminPrefixes[iPrefix + INFO_PREFIX])
if(!is_blank(szAdminPrefix)) add(szAdminPrefix, charsmax(szAdminPrefix), " ")
copy(g_szAdminPrefix[id], charsmax(g_szAdminPrefix[]), szAdminPrefix)
get_color(g_szAdminPrefixes[iPrefix + INFO_CLRNAME], szNameColor)
get_color(g_szAdminPrefixes[iPrefix + INFO_CLRCHAT], szChatColor)
read_argv(0, szCommand, charsmax(szCommand))
get_user_name(id, szName, charsmax(szName))
new bool:blTeam = szCommand[3] == '_' ? true : false
if(blTeam) formatex(szTeamPrefix, charsmax(szTeamPrefix), "%s ", g_szTeamPrefix[iTeam])
formatex(szMessage, charsmax(szMessage), "%s%s%s%s%s%s %s%s", szDeathPrefix, szTeamPrefix, szAdminPrefix, szNameColor, szName, g_szSeparator, szChatColor, szArgs)
new iPlayers[32], iPlayer, iPlayerAlive, iPnum
get_players(iPlayers, iPnum)
for(new i; i < iPnum; i++)
{
iPlayer = iPlayers[i]
iPlayerAlive = is_user_alive(iPlayer) ? 1 : 0
if(iAlive == iPlayerAlive || (blTeam && iTeam == get_user_team(iPlayer)) || has_user_listen(iPlayer))
{
switch(iColor)
{
case 0:
{
switch(iTeam)
{
case 1: ColorChat(iPlayer, RED, szMessage)
case 2: ColorChat(iPlayer, BLUE, szMessage)
case 3: ColorChat(iPlayer, GREY, szMessage)
}
}
case 1: ColorChat(iPlayer, RED, szMessage)
case 2: ColorChat(iPlayer, BLUE, szMessage)
case 3: ColorChat(iPlayer, GREY, szMessage)
}
}
}
logChatMessage(szMessage)
return PLUGIN_HANDLED
}
logChatMessage(szMessage[192])
{
for(new i; i < sizeof(g_szColors); i++)
replace_all(szMessage, charsmax(szMessage), g_szColors[i], "")
log_amx(szMessage)
}
get_prefixnum(id)
{
#if defined USE_JAILBREAK
if(is_user_simon(id))
return PREFIX_SIMON
#endif
new iPrefix
static iFlags
iFlags = get_user_flags(id)
for(new i; i < sizeof(g_szAdminPrefixes) - 4; i += 5)
{
if(iFlags & read_flags(g_szAdminPrefixes[i]))
{
iPrefix = i
break
}
}
return iPrefix
}
get_color(szString[], szColor[3])
{
new iColor
switch(szString[0])
{
case 't', 's': iColor = 1
case 'g': iColor = 2
}
copy(szColor, charsmax(szColor), g_szColors[iColor])
}
get_secondcolor(szString[])
{
new iColor
switch(szString[0])
{
case 'r': iColor = 1
case 'b': iColor = 2
case 'g': iColor = 3
}
return iColor
}
bool:is_blank(szString[])
return szString[0] == EOS ? true : false
bool:has_user_listen(id)
return get_user_flags(id) & read_flags(ADMIN_LISTEN) ? true : false