#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#define FILE_NAME "ccp_file.ini"
new configsDir[64]
new prefix[33] = {0,...}
new SzSayText, SzMaxPlayers
new CsTeams:g_team
new const say_info[2][CsTeams][] =
{
{"*SPEC* ", "*DEAD* ", "*DEAD* ", "*SPEC* "},
{"", "", "", ""}
}
new const sayteam_info[2][CsTeams][] =
{
{"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", "(Spectator) "},
{"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", "(Spectator) "}
}
public plugin_init()
{
register_plugin("[RaZzoR PLUGIN] Custom Chat Prefixes", "1.0", "RaZzoR")
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_say_team")
register_concmd("ccp_add_prefix", "add_prefix", ADMIN_BAN, "<prefix_szine> <nev_szine> <uzenet_szine> <[prefix]> <jog/steam_id/ip/nev>")
get_configsdir(configsDir, 63)
format(configsDir, 63, "%s/%s", configsDir, FILE_NAME)
SzSayText = get_user_msgid("SayText")
SzMaxPlayers = get_maxplayers()
register_message(SzSayText, "MsgDuplicate")
}
public MsgDuplicate(id){ return PLUGIN_HANDLED; }
public client_putinserver(id)
prefix[id] = 0
public client_disconnect(id)
prefix[id] = 0
public hook_say(id)
{
new SzMessages[192], SzPrefix[192], SzName[192], SzText[192]
new line = 0
new linetext[255], linetextlength
new message_color[32], prefix_color[32], name_color[32], prefix[32], mode[32], steamid[32], name[32], ip[32]
g_team = cs_get_user_team(id)
get_user_authid(id, steamid, 31)
get_user_name(id, name, 31)
get_user_ip(id, ip, 31, 1)
read_args(SzMessages, 191)
remove_quotes(SzMessages)
if(equal(SzMessages, "") || !is_user_connected(id))
return PLUGIN_CONTINUE
if(file_exists(configsDir))
{
while((line = read_file(configsDir, line, linetext, 256, linetextlength)))
{
if(linetext[0] == ';')
continue
parse(linetext, prefix_color, 31, name_color, 31, message_color, 31, prefix, 31, mode, 31)
if(get_user_flags(id) & read_flags(mode) || (equal(mode, ip)) || (equal(mode, steamid)) || (equal(mode, name)))
{
if(equal(prefix_color, "green"))
format(SzPrefix, 191, "^1%s^4%s", say_info[is_user_alive(id)][g_team], prefix)
else if(equal(prefix_color, "team"))
format(SzPrefix, 191, "^1%s^3%s", say_info[is_user_alive(id)][g_team], prefix)
else if(equal(prefix_color, "def"))
format(SzPrefix, 191, "^1%s^1%s", say_info[is_user_alive(id)][g_team], prefix)
if(equal(name_color, "green"))
format(SzName, 191, "^4%s", name)
else if(equal(name_color, "team"))
format(SzName, 191, "^3%s", name)
else if(equal(name_color, "def"))
format(SzName, 191, "^1%s", name)
if(equal(message_color, "green"))
format(SzText, 191, "^4%s", SzMessages)
else if(equal(message_color, "team"))
format(SzText, 191, "^3%s", SzMessages)
else if(equal(message_color, "def"))
format(SzText, 191, "^1%s", SzMessages)
format(SzMessages, 191, "%s %s ^1: %s", SzPrefix, SzName, SzText)
prefix[id] = 1
}
}
}
if(prefix[id] < 1)
format(SzMessages, 191, "^1%s^3%s ^1: ^1%s", say_info[is_user_alive(id)][g_team], name, SzMessages)
for(new i = 1; i <= SzMaxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i))
{
message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i)
write_byte(id)
write_string(SzMessages)
message_end()
}
}
return PLUGIN_CONTINUE
}
public hook_say_team(id)
{
new SzMessages[192], SzPrefix[192], SzName[192], SzText[192]
new line = 0
new linetext[255], linetextlength
new message_color[32], prefix_color[32], name_color[32], prefix[32], mode[32], steamid[32], name[32], ip[32]
g_team = cs_get_user_team(id)
get_user_authid(id, steamid, 31)
get_user_name(id, name, 31)
get_user_ip(id, ip, 31, 1)
read_args(SzMessages, 191)
remove_quotes(SzMessages)
if(equal(SzMessages, "") || !is_user_connected(id))
return PLUGIN_CONTINUE
if(file_exists(configsDir))
{
while((line = read_file(configsDir, line, linetext, 256, linetextlength)))
{
if(linetext[0] == ';')
continue
parse(linetext, prefix_color, 31, name_color, 31, message_color, 31, prefix, 31, mode, 31)
if(get_user_flags(id) & read_flags(mode) || (equal(mode, ip)) || (equal(mode, steamid)) || (equal(mode, name)))
{
if(equal(prefix_color, "green"))
format(SzPrefix, 191, "^1%s^4%s", sayteam_info[is_user_alive(id)][g_team], prefix)
else if(equal(prefix_color, "team"))
format(SzPrefix, 191, "^1%s^3%s", sayteam_info[is_user_alive(id)][g_team], prefix)
else if(equal(prefix_color, "def"))
format(SzPrefix, 191, "^1%s^1%s", sayteam_info[is_user_alive(id)][g_team], prefix)
if(equal(name_color, "green"))
format(SzName, 191, "^4%s", name)
else if(equal(name_color, "team"))
format(SzName, 191, "^3%s", name)
else if(equal(name_color, "def"))
format(SzName, 191, "^1%s", name)
if(equal(message_color, "green"))
format(SzText, 191, "^4%s", SzMessages)
else if(equal(message_color, "team"))
format(SzText, 191, "^3%s", SzMessages)
else if(equal(message_color, "def"))
format(SzText, 191, "^1%s", SzMessages)
format(SzMessages, 191, "%s %s ^1: %s", SzPrefix, SzName, SzText)
prefix[id] = 1
}
}
}
if(prefix[id] < 1)
format(SzMessages, 191, "^1%s^3%s ^1: ^1%s", sayteam_info[is_user_alive(id)][g_team], name, SzMessages)
for(new i = 1; i <= SzMaxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(get_user_team(i) != get_user_team(id))
continue
if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i))
{
message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i)
write_byte(id)
write_string(SzMessages)
message_end()
}
}
return PLUGIN_CONTINUE
}
public add_prefix(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_CONTINUE
new arg_name_c[32], arg_prefix_c[32], arg_message_c[32], arg_prefix[32], arg_mode[32]
new Buffer[256]
read_argv(1, arg_name_c, 31)
read_argv(2, arg_prefix_c, 31)
read_argv(3, arg_message_c, 31)
read_argv(4, arg_prefix, 31)
read_argv(5, arg_mode, 31)
format(Buffer, sizeof Buffer - 1, "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"^n", arg_name_c, arg_prefix_c, arg_message_c, arg_prefix, arg_mode)
new file = fopen(configsDir, "at+")
fprintf(file, Buffer)
fclose(file)
return PLUGIN_CONTINUE
}