#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Colored Chat"
#define VERSION "3.6"
#define AUTHOR "ReVKa33"
/*
**Colored Chat Confings
**Globals variable
*/
#define MAXSAY 10
#define MAX_SPAMS 1000
#define MAX_SWEARS 1000
#define ACCESS_LEVEL ADMIN_LEVEL_E
//Gag
new s_GagName[33][32]
new s_GagIp[33][32]
new s_Arg[64]
new s_GagTime[32]
new s_GagPlayer[32]
new s_GagAdmin[32]
new s_GagTarget[32]
new s_CheckGag[32]
new s_CheckIp[32]
new gagid
new i_GagTime
new i_ShowGag
new Player_Gag
//Flood
new SysTime;
new i_Gag[33]
new bool:Flood[33]
//
//For File
new g_LoadPlayerPrefix[81]
new s_SwearFile_RU[64]
new s_SwearFile_ENG[64]
new s_SpamFile[64]
new s_File[64]
new SpamNum
new Input[32]
new SwearNum_RU
new SwearNum_ENG
new Swear_ENG[MAX_SWEARS][64]
new Swear_RU[MAX_SWEARS][64]
new Spam[MAX_SPAMS][192]
new Len
//
new g_Warning[33]
new const prefix[] = "Чат"
new iPlayerPrefix[33]
new iPlayerPrefixText[33][2][64]
new iPlayerColorText[33][2][32]
new g_antimat[33];
new g_admin[33];
//For Rus
new g_OriginalSimb[128][32]
new g_TranslitSimb[128][32]
new i_MaxSimbols
new Line
new iPlayerRus[33]
new Say_word[MAXSAY][] =
{
"0","1","2","3","4","5","6","7","8","9"
}
new GagTimes[7][] =
{
"10", "30", "60", "120", "180", "300", "1440"
}
/*
**Colored Chat Confings
**Globals variable
**End
*/
/*
** Colored Chat Init
** All comands
*/
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /rus", "LangRus")
register_clcmd("say /eng", "LangEng")
register_clcmd("say", "NewSay")
register_clcmd("say_team", "NewSayTeam")
register_concmd("amx_gag", "cmd_gag", ADMIN_LEVEL_E, "<Nick> <Minutes>")
register_concmd("amx_ungag", "cmd_ungag", ADMIN_LEVEL_E, "<Nick>")
register_concmd("amx_gagmenu", "GagsMenu", ADMIN_LEVEL_E, "- displays menu for gag")
}
public plugin_cfg()
{
new g_LoadDir[81]
get_configsdir(g_LoadDir, charsmax( g_LoadDir ))
formatex(g_LoadPlayerPrefix, charsmax( g_LoadPlayerPrefix ), "%s/Colored Chat/Chat_Prefix.ini", g_LoadDir)
formatex(s_SwearFile_ENG, charsmax( s_SwearFile_ENG ), "%s/Colored Chat/Chat_Swear_ENG.ini", g_LoadDir)
formatex(s_SwearFile_RU, charsmax( s_SwearFile_RU ), "%s/Colored Chat/Chat_Swear_RU.ini", g_LoadDir)
formatex(s_SpamFile, charsmax( s_SpamFile ), "%s/Colored Chat/Chat_Spam.ini", g_LoadDir)
formatex(s_File, charsmax( s_File ), "%s/Colored Chat/Chat_Translit.ini", g_LoadDir)
if(!file_exists( g_LoadPlayerPrefix ) || !file_exists( s_SwearFile_ENG ) || !file_exists( s_SwearFile_RU )|| !file_exists( s_SpamFile ) || !file_exists( s_File ))
{
set_fail_state("No file exists... ")
}
if(file_exists(s_File))
{
while((Line = read_file(s_File, Line, Input, 31, Len)) != 0)
{
strtok(Input, g_OriginalSimb[i_MaxSimbols], 16, g_TranslitSimb[i_MaxSimbols], 16, ' ')
i_MaxSimbols++
}
}
if(file_exists(s_SwearFile_RU))
{
new i=0
while(i < MAX_SWEARS && read_file(s_SwearFile_RU, i , Swear_RU[SwearNum_RU], 63, Len))
{
i++
if(Swear_RU[SwearNum_RU][0] == ';' || !Len)
{
continue
}
SwearNum_RU++
}
}
if(file_exists(s_SwearFile_ENG))
{
new i=0
while(i < MAX_SWEARS && read_file(s_SwearFile_ENG, i , Swear_ENG[SwearNum_ENG], 63, Len))
{
i++
if(Swear_ENG[SwearNum_ENG][0] == ';' || !Len)
{
continue
}
SwearNum_ENG++
}
}
if(file_exists(s_SpamFile))
{
new i=0
while(i < MAX_SPAMS && read_file(s_SpamFile, i , Spam[SpamNum], 191, Len))
{
i++
if(Spam[SpamNum][0] == ';' || !Len)
{
continue
}
SpamNum++
}
}
server_print("^n^n========== [%s] START LOADING FILES ==========^n", PLUGIN)
server_print("[%s] Current Version - %s Plugin Autor - %s", PLUGIN, VERSION, AUTHOR)
server_print("[%s] Configs dir: %s...........", PLUGIN, g_LoadDir)
server_print("[%s] Cheking if files exists..........Complete", PLUGIN)
server_print("[%s] Waiting for load files...............: %s.", PLUGIN, g_LoadDir)
server_print("[%s] Translit File Loaded. Symbols: %d", PLUGIN, i_MaxSimbols)
server_print("[%s] Prefix File Loaded............", PLUGIN)
server_print("[%s] Swear File Loaded [RUS]. Swears : %d..........", PLUGIN, SwearNum_RU)
server_print("[%s] Swear File Loaded [ENG]. Swears : %d..........", PLUGIN, SwearNum_ENG)
server_print("[%s] Spam File Loaded. Spam Words: %d^n...........", PLUGIN, SpamNum)
server_print("=========== [%s] END LOADING FILES ===============^n^n", PLUGIN)
return PLUGIN_CONTINUE
}
public client_putinserver(id)
{
g_antimat[id] = bool:access(id, ADMIN_MENU);
g_admin[id] = bool:access(id, ADMIN_LEVEL_E);
g_Warning[id] = 0;
iPlayerRus[id] = true;
set_task(25.0, "ShowInfo", id);
if (is_spam_nick(id))
{
new player = get_user_userid(id)
server_cmd("kick #%d Ваш ник запрещен на сервере.", player)
}
get_user_name(id, s_CheckGag, charsmax(s_CheckGag))
get_user_ip(id, s_CheckIp, charsmax(s_CheckIp), 1)
if(get_systime(0) < i_Gag[id])
{
if(!equal(s_GagName[id], s_CheckGag) && !equal(s_GagIp[id], s_CheckIp))
{
i_Gag[id] = get_systime(0)
}
}
return PLUGIN_CONTINUE
}
public ShowInfo(id)
{
if(is_user_connected(id))
{
{
ChatColor(id,"^1[^4%s^1] ^1Чтобы писать на ^4русском ^1напиши ^3/rus",prefix)
ChatColor(id,"^1[^4%s^1] ^1Чтобы писать на ^4английском ^1напиши ^3/eng",prefix)
}
}
}
/*
** Colored Chat Init
** All comands
** END
*/
/*
** Colored Chat Lang Confing
** Lang
*/
public LangRus(id)
{
if(!iPlayerRus[id])
{
iPlayerRus[id] = true
if(is_user_connected(id))
{
ChatColor(id, "^1[^4%s^1] ^1Русский чат ^3Активирован^1!", prefix)
client_cmd(id, "spk buttons/blip2")
}
}else{
if(is_user_connected(id))
{
ChatColor(id, "^1[^4%s^1] ^1Русский чат уже ^3Активирован^1!", prefix)
}
}
return PLUGIN_CONTINUE
}
public LangEng(id)
{
if(iPlayerRus[id])
{
if(is_user_connected(id))
{
iPlayerRus[id] = false
ChatColor(id, "^1[^4%s^1] ^1Английский чат ^3активирован^1!", prefix)
client_cmd(id, "spk buttons/blip2")
}
}else{
if(is_user_connected(id))
{
ChatColor(id, "^1[^4%s^1] ^1Английский чат уже ^3активирован^1!", prefix)
//return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
/*
** Colored Chat Lang Confing
** Lang
** END
*/
/*
** Colored Chat Prefix Manager
** Finds the Prefix for Player Admin and ....
*/
public client_authorized(id)
{
if(!is_user_bot(id) || !is_user_hltv(id))
{
iPlayerPrefix[id] = false
iPlayerRus[id] = false
set_task(1.0, "CheckPlayer", id)
}
}
public client_infochanged(id)
{
if(!is_user_connected(id))
{
return PLUGIN_CONTINUE
}
new szNewName[32], szOldName[32]
get_user_name(id, szOldName, charsmax( szOldName ))
get_user_info(id, "name", szNewName, charsmax( szNewName ))
if(!equal(szNewName, szOldName))
{
iPlayerPrefix[id] = false
set_task(0.1, "CheckPlayer", id)
}
return PLUGIN_CONTINUE
}
public CheckPlayer(id)
{
new szName[64], szSteam[32]
new szParse[128]
new szParseType[32], szParseData[64], szParsePrefix[64], szParseColorText[32]
new iLine, iNum, iType
get_user_name(id, szName, charsmax( szName ))
get_user_authid(id, szSteam, charsmax( szSteam ))
for(iLine = 0; read_file(g_LoadPlayerPrefix, iLine, szParse, charsmax( szParse ), iNum); iLine++)
{
if(iNum > 0 && szParse[0] != ';')
{
parse(szParse,
szParseType,
charsmax( szParseType ),
szParseData,
charsmax( szParseData ),
szParsePrefix,
charsmax( szParsePrefix ),
szParseColorText,
charsmax( szParseColorText )
)
iType = str_to_num( szParseType )
if(iType == 1)
{
if(equal(szName, szParseData))
{
iPlayerPrefix[id] = true
iPlayerPrefixText[id][1] = szParsePrefix
iPlayerColorText[id][1] = szParseColorText
break
}else
if(equal(szSteam, szParseData))
{
iPlayerPrefix[id] = true
iPlayerPrefixText[id][1] = szParsePrefix
iPlayerColorText[id][1] = szParseColorText
break
}
}else
if(iType == 2)
{
if(CheckFlag(id, szParseData))
{
iPlayerPrefix[id] = true
iPlayerPrefixText[id][1] = szParsePrefix
iPlayerColorText[id][1] = szParseColorText
break
}
}
}
}
}
/*
** Colored Chat Prefix Manager
** Finds the Prefix for Player Admin and ....
** END
*/
public cmd_gag(id, level, cid)
{
if(!cmd_access(id, level, cid, 3))
{
return PLUGIN_HANDLED
}
read_args(s_Arg, charsmax(s_Arg))
parse(s_Arg, s_GagPlayer, charsmax(s_GagPlayer), s_GagTime, charsmax(s_GagTime))
if(!is_str_num(s_GagTime))
{
if(is_user_connected(id))
ChatColor(id, "^1[^4%s^1] Использование: ^3amx_gag ^1<имя/номер/стим> <время в минутах>", prefix)
return PLUGIN_CONTINUE
}
gagid = cmd_target(id, s_GagPlayer, 8)
if(!gagid)
{
return PLUGIN_HANDLED
}
get_user_name(id, s_GagAdmin, charsmax(s_GagAdmin))
get_user_name(gagid, s_GagTarget, charsmax(s_GagTarget))
if(equal(s_GagTarget,s_GagAdmin))
{
s_GagAdmin = "| Artic Fire Games |"
}
if (get_user_flags(gagid) & ADMIN_LEVEL_H )
{
if(is_user_connected(id))
ChatColor(id, "^1[^4AmxGag^1] ^3%s ^1имеет ^4иммунитет^1!", s_GagTarget)
}
else
{
i_GagTime = str_to_num(s_GagTime)
get_user_name(gagid, s_GagName[gagid], 31)
get_user_ip(gagid, s_GagIp[gagid], 31, 1)
SysTime = get_systime(0)
i_Gag[gagid] = SysTime + i_GagTime*60
Flood[gagid] = false
client_cmd(gagid, "spk buttons/button5")
client_cmd(id, "spk buttons/button5")
for(new player = 0; player <= get_maxplayers(); player++)
{
if(!is_user_connected(player))
{
continue
}
ChatColor(player,"^1[^4AmxGag^1] ^3%s ^1Вам заблокировали чат на ^4%d минут(ы)", s_GagTarget, i_GagTime)
}
}
return PLUGIN_CONTINUE
}
public GagsMenu(id)
{
new title[512]; formatex(title, sizeof(title) - 1, "\rGag Меню \yツ^n^n\yВыберите игрока:")
//Create the menu
new p_Menu = menu_create(title, "menu_chooose_user")
new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10]
new szTemp[120];
get_players(s_Players, i_Num)
for (new i; i < i_Num; i++)
{
i_Player = s_Players[i]
get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))
if (g_admin[i_Player]) formatex ( szTemp, sizeof ( szTemp ) - 1, "\w%s [\rAdmin\w]", s_Name);
else formatex ( szTemp, sizeof ( szTemp ) - 1, "\w%s", s_Name);
menu_additem(p_Menu, szTemp, s_Player, 0)
}
menu_display(id, p_Menu, 0)
return PLUGIN_HANDLED
}
public menu_chooose_user(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
Player_Gag = str_to_num(s_Data)
MenuGagTime(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
public MenuGagTime(id)
{
new title[512]; formatex(title, sizeof(title) - 1, "\rGag Меню \yツ^n^n\yВыберите время:")
//Create the menu
new p_Menu = menu_create(title, "menu_gagtime1")
for (new i; i < 7; i++)
{
menu_additem(p_Menu, GagTimes[i], Say_word[i+1], 0)
}
menu_display(id, p_Menu, 0)
}
public menu_gagtime1(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
}
new s_Data[6], s_Name[64], i_Access, i_Callback, nickname[32]
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new time_Gag1 = str_to_num(s_Data) -1
new time_Gag = str_to_num(GagTimes[time_Gag1])
get_user_name(Player_Gag,nickname,31)
client_cmd(id," amx_gag %s %i",nickname, time_Gag)
}
public cmd_ungag(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
{
return PLUGIN_HANDLED
}
SysTime = get_systime(0)
read_args(s_GagPlayer, charsmax(s_GagPlayer))
gagid = cmd_target(id, s_GagPlayer, 8)
if(!gagid)
{
return PLUGIN_HANDLED
}
get_user_name(id, s_GagAdmin, charsmax(s_GagAdmin))
get_user_name(gagid, s_GagTarget, charsmax(s_GagTarget))
if(i_Gag[gagid] <= SysTime)
{
if(is_user_connected(id))
ChatColor(id, "У игрока %s уже включен чат!", s_GagTarget)
}
else
{
SysTime = get_systime(0)
i_Gag[gagid] = SysTime
client_cmd(gagid, "spk buttons/button6")
client_cmd(id, "spk buttons/button6")
for(new player = 0; player <= get_maxplayers(); player++)
{
if(!is_user_connected(player))
{
continue
}
ChatColor(player,"^1[^4AmxGag^1] ^3%s ^1чат ^4разброкирован^1.", s_GagTarget)
}
}
return PLUGIN_CONTINUE
}
/*
** Colored Chat SAY COMMANDS
** Chat addons
*/
public NewSay(id)
{
new szMessage[192]
new g_warned;
new swMessage[192]
read_args(szMessage, charsmax( szMessage ))
read_args(swMessage, charsmax( swMessage ))
remove_quotes(szMessage)
remove_quotes(swMessage)
swMessage[charsmax( swMessage )] = szMessage[charsmax( szMessage )]
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
return PLUGIN_CONTINUE
if(is_user_Flood(id) || is_empty_message(szMessage) || is_user_gaged(id))
{
return PLUGIN_HANDLED
}
new len = charsmax(swMessage)
if ( iPlayerRus[id] )
replase_rus(swMessage, len);
if(is_spam_message(id, swMessage) || is_swear_message(id, swMessage))
{
g_warned = 1
}
for (new h = 1 ; h <= 3 ; h++)
{
message_cleaner( swMessage, len, h)
if(is_spam_message(id, swMessage) || is_swear_message(id, swMessage))
{
g_warned = 1
}
swMessage[charsmax( swMessage )] = szMessage[charsmax( szMessage )]
}
len = charsmax(szMessage)
if ( iPlayerRus[id] )
replase_rus(szMessage, len);
new szNewMessage[512]
new szLen
new szName[32]
get_user_name(id, szName, charsmax( szName ))
if (g_warned == 1 )
{
new j, playercount, players[32]
get_players ( players, playercount, "c" )
for ( j = 0 ; j < playercount ; j++)
{
if (get_user_flags(players[j]) & ADMIN_LEVEL_E && is_user_connected(players[j]) )
{
ChatColor( players[j], "^1[^4%s^1] %s : %s", prefix, szName, szMessage )
}
}
g_Warning[id] ++;
client_cmd(id, "spk buttons/button2")
szMessage = "[сообщение удалено]"
if(is_user_connected(id))
{
if(is_user_connected(id)) ChatColor(id, "^1[^4%s^1] Сообщение ^3удалено^1. Предупреждение: ^4%i", prefix, g_Warning[id])
}
if(g_Warning[id] > 4)
{
g_Warning[id] = 0;
server_cmd("amx_gag %s 3", szName);
}
}
if(!is_swear_message(id, szMessage))
{
SysTime = get_systime(0)
i_Gag[id] = SysTime + 2
Flood[id] = true
}
if(strlen( szMessage ) >= 192)
{
if(is_user_connected(id))
ChatColor(id, "^1[^4%s^1] Длинное сообщение...",prefix)
client_cmd(id, "spk buttons/button2")
return PLUGIN_HANDLED
}
if(is_user_alive(id))
{
if(iPlayerPrefix[id])
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "%s", iPlayerPrefixText[id][1])
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!t%s!y : ", szName)
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!%s%s", iPlayerColorText[id][1], szMessage)
}
else
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!t%s!y : ", szName)
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "%s", szMessage)
}
new iPlayers[32]
new iPlayer, iNum
get_players(iPlayers, iNum)
for(new i; i < iNum; i++)
{
iPlayer = iPlayers[i]
if(!is_user_connected(iPlayer))
continue
ChatColor(iPlayer, szNewMessage)
}
}else{
if(iPlayerPrefix[id])
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!g-!yМертв!g- !y%s", iPlayerPrefixText[id][1])
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!t%s!y : ", szName)
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!%s%s", iPlayerColorText[id][1], szMessage)
}
else
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!g-!yМертв!g- !t%s!y : ", szName)
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "%s", szMessage)
}
new iPlayers[32]
new iPlayer, iNum
get_players(iPlayers, iNum)
for(new i; i < iNum; i++)
{
iPlayer = iPlayers[i]
if(!is_user_connected(iPlayer))
continue
ChatColor(iPlayer, szNewMessage)
}
}
return PLUGIN_HANDLED_MAIN
}
public NewSayTeam(id)
{
new szMessage[192]
new g_warned;
new swMessage[192]
read_args(szMessage, charsmax( szMessage ))
read_args(swMessage, charsmax( swMessage ))
remove_quotes(szMessage)
remove_quotes(swMessage)
swMessage[charsmax( swMessage )] = szMessage[charsmax( szMessage )]
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
return PLUGIN_CONTINUE
if(is_user_Flood(id) || is_empty_message(szMessage) || is_user_gaged(id))
{
return PLUGIN_HANDLED
}
new len = charsmax(swMessage)
if ( iPlayerRus[id] )
replase_rus(swMessage, len);
if(is_spam_message(id, swMessage) || is_swear_message(id, swMessage))
{
g_warned = 1
}
for (new h = 1 ; h <= 3 ; h++)
{
message_cleaner( swMessage, len, h)
if(is_spam_message(id, swMessage) || is_swear_message(id, swMessage))
{
g_warned = 1
}
swMessage[charsmax( swMessage )] = szMessage[charsmax( szMessage )]
}
len = charsmax(szMessage)
if ( iPlayerRus[id] )
replase_rus(szMessage, len);
new szNewMessage[512]
new szLen
new szName[32]
get_user_name(id, szName, charsmax( szName ))
if (g_warned == 1 )
{
new j, playercount, players[32]
get_players ( players, playercount, "c" )
for ( j = 0 ; j < playercount ; j++)
{
if (get_user_flags(players[j]) & ADMIN_LEVEL_E && is_user_connected(players[j]) )
{
ChatColor( players[j], "^1[^4%s^1] %s : %s", prefix, szName, szMessage )
}
}
g_Warning[id] ++;
client_cmd(id, "spk buttons/button2")
szMessage = "[сообщение удалено]"
if(is_user_connected(id))
{
if(is_user_connected(id)) ChatColor(id, "^1[^4%s^1] Сообщение ^3удалено^1. Предупреждение: ^4%i", prefix, g_Warning[id])
}
if(g_Warning[id] > 4)
{
g_Warning[id] = 0;
server_cmd("amx_gag %s 3", szName);
}
}
if(!is_swear_message(id, szMessage))
{
SysTime = get_systime(0)
i_Gag[id] = SysTime + 2
Flood[id] = true
}
if(strlen( szMessage ) >= 192)
{
if(is_user_connected(id))
ChatColor(id, "^1[^4%s^1] Длинное сообщение...",prefix)
return PLUGIN_HANDLED
}
if(is_user_alive(id))
{
if(iPlayerPrefix[id])
{
if(get_user_team(id) == 1)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!y(!tТеррорист!y) %s", iPlayerPrefixText[id][1])
}else
if(get_user_team(id) == 2)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!y(!tКонтер!y-!tТеррорист!y) %s", iPlayerPrefixText[id][1])
}else
if(get_user_team(id) == 3)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!y(!tЗритель!y) %s", iPlayerPrefixText[id][1])
}
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!t%s!y : ", szName)
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!%s%s", iPlayerColorText[id][1], szMessage)
}
else
{
if(get_user_team(id) == 1)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!y(!tТеррорист!y)")
}else
if(get_user_team(id) == 2)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!y(!tКонтер!y-!tТеррорист!y)")
}else
if(get_user_team(id) == 3)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!y(!tЗритель!y)")
}
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!t%s!y : ", szName)
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "%s", szMessage)
}
new iPlayers[32]
new iPlayer, iNum
get_players(iPlayers, iNum)
for(new i; i < iNum; i++)
{
iPlayer = iPlayers[i]
if(!is_user_connected(iPlayer) || get_user_team(iPlayer) != get_user_team(id))
continue
ChatColor(iPlayer, szNewMessage)
}
}else{
if(iPlayerPrefix[id])
{
if(get_user_team(id) == 1)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!g-!yМертв!g- !y(!tТеррорист!y) %s", iPlayerPrefixText[id][1])
}else
if(get_user_team(id) == 2)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!g-!yМертв!g- !y(!tКонтер!y-!tТеррорист!y) %s", iPlayerPrefixText[id][1])
}else
if(get_user_team(id) == 3)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!y(!tЗритель!y) %s", iPlayerPrefixText[id][1])
}
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!t%s!y : ", szName)
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!%s%s", iPlayerColorText[id][1], szMessage)
}
else
{
if(get_user_team(id) == 1)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!g-!yМертв!g- !y(!tТеррорист!y)")
}else
if(get_user_team(id) == 2)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!g-!yМертв!g- !y(!tКонтер!y-!tТеррорист!y)")
}else
if(get_user_team(id) == 3)
{
szLen = format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!y(!tЗритель!y)")
}
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "!t%s!y : ", szName)
szLen += format(szNewMessage[szLen], charsmax( szNewMessage ) - 1, "%s", szMessage)
}
new iPlayers[32]
new iPlayer, iNum
get_players(iPlayers, iNum)
for(new i; i < iNum; i++)
{
iPlayer = iPlayers[i]
if(!is_user_connected(iPlayer) || get_user_team(iPlayer) != get_user_team(id))
continue
ChatColor(iPlayer, szNewMessage)
}
}
return PLUGIN_HANDLED_MAIN
}
/*
** Colored Chat SAY COMMANDS
** Chat addons
** END
*/
/*
** Colored Chat TRANSLIT FUNCTION
** Chat addons
*/
public replace_message(szMessage[], len)
{
while (replace(szMessage, len, "q", "")) {}
while (replace(szMessage, len, "w", "")) {}
while (replace(szMessage, len, "e", "")) {}
while (replace(szMessage, len, "r", "")) {}
while (replace(szMessage, len, "t", "")) {}
while (replace(szMessage, len, "y", "")) {}
while (replace(szMessage, len, "u", "")) {}
while (replace(szMessage, len, "i", "")) {}
while (replace(szMessage, len, "o", "")) {}
while (replace(szMessage, len, "p", "")) {}
while (replace(szMessage, len, "[", "")) {}
while (replace(szMessage, len, "]", "")) {}
while (replace(szMessage, len, "a", "")) {}
while (replace(szMessage, len, "s", "")) {}
while (replace(szMessage, len, "d", "")) {}
while (replace(szMessage, len, "f", "")) {}
while (replace(szMessage, len, "g", "")) {}
while (replace(szMessage, len, "h", "")) {}
while (replace(szMessage, len, "j", "")) {}
while (replace(szMessage, len, "k", "")) {}
while (replace(szMessage, len, "l", "")) {}
while (replace(szMessage, len, ";", "")) {}
while (replace(szMessage, len, "'", "")) {}
while (replace(szMessage, len, "z", "")) {}
while (replace(szMessage, len, "x", "")) {}
while (replace(szMessage, len, "c", "")) {}
while (replace(szMessage, len, "v", "")) {}
while (replace(szMessage, len, "b", "")) {}
while (replace(szMessage, len, "n", "")) {}
while (replace(szMessage, len, "m", "")) {}
while (replace(szMessage, len, ",", "")) {}
while (replace(szMessage, len, ".", "")) {}
while (replace(szMessage, len, "Q", "")) {}
while (replace(szMessage, len, "W", "")) {}
while (replace(szMessage, len, "E", "")) {}
while (replace(szMessage, len, "R", "")) {}
while (replace(szMessage, len, "T", "")) {}
while (replace(szMessage, len, "Y", "")) {}
while (replace(szMessage, len, "U", "")) {}
while (replace(szMessage, len, "I", "")) {}
while (replace(szMessage, len, "O", "")) {}
while (replace(szMessage, len, "P", "")) {}
while (replace(szMessage, len, "{", "")) {}
while (replace(szMessage, len, "}", "")) {}
while (replace(szMessage, len, "A", "")) {}
while (replace(szMessage, len, "S", "")) {}
while (replace(szMessage, len, "D", "")) {}
while (replace(szMessage, len, "F", "")) {}
while (replace(szMessage, len, "G", "")) {}
while (replace(szMessage, len, "H", "")) {}
while (replace(szMessage, len, "J", "")) {}
while (replace(szMessage, len, "K", "")) {}
while (replace(szMessage, len, "L", "")) {}
while (replace(szMessage, len, ":", "")) {}
while (replace(szMessage, len, "Z", "")) {}
while (replace(szMessage, len, "X", "")) {}
while (replace(szMessage, len, "C", "")) {}
while (replace(szMessage, len, "V", "")) {}
while (replace(szMessage, len, "B", "")) {}
while (replace(szMessage, len, "N", "")) {}
while (replace(szMessage, len, "M", "")) {}
while (replace(szMessage, len, "<", "")) {}
while (replace(szMessage, len, ">", "")) {}
}
public string_cleaner( str[] )
{
new i, len = strlen ( str )
while ( contain ( str, " " ) != -1 )
replace ( str, len, " ", "" )
len = strlen ( str )
while ( contain ( str, "|<" ) != -1 )
replace ( str, len, "|<", "k" )
len = strlen ( str )
while ( contain ( str, "|>" ) != -1 )
replace ( str, len, "|>", "p" )
len = strlen ( str )
while ( contain ( str, "()" ) != -1 )
replace ( str, len, "()", "o" )
len = strlen ( str )
while ( contain ( str, "[]" ) != -1 )
replace ( str, len, "[]", "o" )
len = strlen ( str )
while ( contain ( str, "{}" ) != -1 )
replace ( str, len, "{}", "o" )
len = strlen ( str )
while ( contain ( str, "-" ) != -1 )
replace ( str, len, "-", "" )
len = strlen ( str )
while ( contain ( str, "-" ) != -1 )
replace ( str, len, "-", "" )
len = strlen ( str )
while ( contain ( str, "_" ) != -1 )
replace ( str, len, "_", "" )
len = strlen ( str )
while ( contain ( str, "=" ) != -1 )
replace ( str, len, "=", "" )
len = strlen ( str )
while ( contain ( str, "/" ) != -1 )
replace ( str, len, "/", "" )
len = strlen ( str )
while ( contain ( str, "." ) != -1 )
replace ( str, len, ".", "" )
len = strlen ( str )
while ( contain ( str, "," ) != -1 )
replace ( str, len, ",", "" )
len = strlen ( str )
for ( i = 0 ; i < len ; i++ )
{
if ( str[i] == '@' )
str[i] = 'a'
if ( str[i] == '$' )
str[i] = 's'
if ( str[i] == '0' )
str[i] = 'o'
if ( str[i] == '<' )
str[i] = 'c'
}
}
public replase_rus(szMessage[], len )
{
if(!equal(szMessage, "/rus") && !equal(szMessage, "/pn") && !equal(szMessage, "/rs") && !equal(szMessage, "rtv") && !equal(szMessage, "/voteban") && !equal(szMessage, "/vips") && !equal(szMessage, "/mute") && !equal(szMessage, "/admin"))
{
for(new i; i < i_MaxSimbols; i++)
{
if(contain(szMessage, g_OriginalSimb[i]) != -1)
{
replace_all(szMessage, len, g_OriginalSimb[i], g_TranslitSimb[i])
}
}
}
}
/*
** Colored Chat TRANSLIT FUNCTION
** Chat addons
** END
*/
/*
** Colored Chat STOCK FUNCTION
** Chat addons
*/
stock CheckFlag(id, szFlag[64])
{
new szFlags
new StringFlags[32]
szFlags = get_user_flags(id)
get_flags(szFlags, StringFlags, charsmax( StringFlags ))
if(containi(StringFlags, szFlag) != -1)
return true
return false
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
//Stock
stock is_empty_message(const Message[])
{
if(Message[0] == ' ' || equal(Message, "") || !strlen(Message))
{
return 1
}
return 0
}
stock is_spam_message(id, const szMessage[])
{
new i = 0
if (is_immune(id))
{
return 0
}
while(i < SpamNum)
{
if(containi(szMessage, Spam[i++]) != -1)
{
return 1
}
}
return 0
}
stock is_swear_message(id, const szMessage[])
{
new i = 0
if (is_immune(id))
{
return 0
}
if ( iPlayerRus[id] )
{
while(i < SwearNum_RU )
{
if(containi(szMessage, Swear_RU[i++]) != -1)
{
return 1
}
}
}
else
{
while(i < SwearNum_ENG )
{
if(containi(szMessage, Swear_ENG[i++]) != -1)
{
return 1
}
}
}
return 0
}
stock is_immune(id)
{
if(g_antimat[id])
{
return 1
}
return 0
}
stock is_user_Flood(id)
{
SysTime = get_systime(0)
if(SysTime < i_Gag[id])
{
if(Flood[id] && !g_antimat[id])
{
if(is_user_connected(id))
ChatColor(id, "^1[^4%s^1] Прекратите ^3флудить ^1в чат!",prefix);
i_Gag[id] = SysTime + 2;
client_cmd(id, "spk buttons/button2")
}
return 1
}
else if(Flood[id])
{
Flood[id] = false
}
return 0
}
stock is_user_gaged(id)
{
SysTime = get_systime(0)
if(SysTime < i_Gag[id] && !g_admin[id])
{
i_ShowGag = i_Gag[id] - SysTime
if(is_user_connected(id))
ChatColor(id, "^1[^4%s^1] Вам запрещено писать еще ^3%d минут(ы)",i_ShowGag/60+1)
client_cmd(id, "spk buttons/button2")
}
}
/*
** Colored Chat Stock FUNCTION
** Chat addons
** END
*/
public message_cleaner(szMessage[], len, Type)
{
if(Type == 1)
{
string_cleaner( szMessage )
}
if(Type == 2)
{
replace_message(szMessage, len)
}
if (Type == 3)
{
new i = 0
while(i < 10)
{
if(containi(szMessage, Say_word[i]) != -1)
{
replace ( szMessage, len, Say_word[i++], "" )
}
i++
}
}
}
public is_spam_nick(id)
{
new nick[32];
new i = 0;
get_user_name(id, nick, sizeof nick -1);
if (is_immune(id))
{
return 0
}
while(i < SpamNum)
{
if(containi(nick, Spam[i++]) != -1)
{
return 1
}
}
return 0
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/