Има и вградена поддръжка за тази ранк система - viewtopic.php?f=21&t=4478
► Покажи скъсения текст
В тази тема можете да подавате заявки за Admin Prefix, като заявката ви ще бъде изпълнена възможно най-бързо. Моля, когато пускате коментар в темата, обяснете точно и ясно какъв искате да е префиксът/чатът и на кой флаг да е същият. Също така, не забравяйте да споменете с какви цветове да са префиксите и с какъв цвят да пишат играчите в чата. Цветовете може да са: нормален, зелен, бял, син, червен или според отбора.
ВАЖНО Ако искате да бъде добавен и префикс за Саймън, имайте предвид, че трябва да използвате (редактиран) JailBreak мод, който има native за проверка за Саймън. В плъгина се ползва native-ът is_user_simon(id). Ако вашият мод използва различен код, добавете и него в съобщението.
ВАЖНО Плъгинът, който ще получите има и вграден Admin Listen (опция да виждате всички чатове), можете да добавите на кой флаг да е тази опция, в противен случай ще го направя на флаг 'm'.
ВАЖНО Плъгинът има и опция за промяна на почти всичко което се показва в чата (*DEAD*, (Terrorist), (Counter-Terrorist)...), тъй че по ваше желание може да променя и тези.
ВАЖНО Едно чат съобщение в играта може да съдържа само и единствено един от следните цветове: син, червен, бял и според отбора. С прости думи, заявки от вида на червен чат + ник според отбора са невъзможни.
Примерна заявка:
ВАЖНО Специално за най-неразбралите, списък с НЕВЪЗМОЖНИ комбинации от цветове:
ВАЖНО Ако искате да бъде добавен и префикс за Саймън, имайте предвид, че трябва да използвате (редактиран) JailBreak мод, който има native за проверка за Саймън. В плъгина се ползва native-ът is_user_simon(id). Ако вашият мод използва различен код, добавете и него в съобщението.
ВАЖНО Плъгинът, който ще получите има и вграден Admin Listen (опция да виждате всички чатове), можете да добавите на кой флаг да е тази опция, в противен случай ще го направя на флаг 'm'.
ВАЖНО Плъгинът има и опция за промяна на почти всичко което се показва в чата (*DEAD*, (Terrorist), (Counter-Terrorist)...), тъй че по ваше желание може да променя и тези.
ВАЖНО Едно чат съобщение в играта може да съдържа само и единствено един от следните цветове: син, червен, бял и според отбора. С прости думи, заявки от вида на червен чат + ник според отбора са невъзможни.
Примерна заявка:
ВАЖНО Когато добавяте плъгина в сървъра си, той трябва да стои най-отдолу в списъка с плъгини, с цел да не си пречи с чат команди от други плъгини.Флаг 'a': [Admin] Nick : chat
Флаг 'b': [VIP] Nick : chat
Флаг 'c': [Head Admin] Nick : chat
Флаг 'd': [Test Admin] Nick : chat
Обикновен потребител: [Member] Nick : chat
JailBreak Simon: [SIMON] Nick : chat
Admin Listen: флаг 'e'
*DEAD* => *MURTUV*
(Terrorist) => <Terrorist>
ВАЖНО Специално за най-неразбралите, списък с НЕВЪЗМОЖНИ комбинации от цветове:
според отбора + червен = невъзможно
според отбора + син = невъзможно
според отбора + бял = невъзможно
червен + син = невъзможно
червен + бял = невъзможно
червен + според отбора = невъзможно
син + червен = невъзможно
син + бял = невъзможно
син + според отбора = невъзможно
бял + червен = невъзможно
бял + син = невъзможно
бял + според отбора = невъзможно
Код за потвърждение: Избери целия код
#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) */
"", "", "second", "normal", "team",
"m", "^3[OwneR]", "green", "second", "grey",
"n", "^3[Co-oP]", "green", "second", "grey",
"o", "^3[Global Admin]", "green", "second", "grey",
"r", "^3[Local Admin]", "green", "second", "grey",
"q", "^3[SMS Admin]", "green", "second", "grey",
"s", "^3[SMS Admin+]", "green", "second", "grey",
"p", "^3[VIP+]", "green", "second", "grey",
"b", "^3[VIP]", "green", "second", "grey"
}
new const g_szSeparator[] = " ^1:"
new const g_szDeathPrefix[][] = { "*DEAD* ", "" }
new const g_szColors[][] = { "^1", "^3", "^4" }
new g_szAdminPrefix[33][32]
new const g_szTeamPrefix[][] = {
"",
"^1(Terrorist)",
"^1(Counter-Terrorist)",
"^1(Spectator)"
}
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