Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <geoip>
#include <csstats>
#include <nvault>
#define PLUGIN "Ultimate Admin Prefix + Ranks + City/Country Chat & TryAgain"
#define VERSION "1.0"
#define AUTHOR "Wicked-, m0skVi4a ;], Arion/juan, hackera_vd"
#define ID_HUD ( taskid - TASK_HUD )
enum
{
TASK_HUD = 2000
}
new message[192]
new sayText
new teamInfo
new maxPlayers
new gRanksPoints[33]
new gRanksPrefixes[33][33]
new gPlayerPoints[33]
new gPlayerRank[33]
new hud
new g_AdminListen
new g_AdminListenFlag
new g_bad_prefix
new g_use_csstats
new g_PlayerChat
new g_AdminChat
new g_PlayerWhiteChat
new g_AdminWhiteChat
new g_LoadFlag
new g_maxprefixes
new g_maxbadprefixes
new g_say_characters
new g_maxranks
new alive[11]
new temp_cvar[2]
new configs_dir[64]
new ranks_file[128]
new file_prefixes[128]
new file_bad_prefixes[128]
new g_name[32]
new str_id[16]
new temp_key[35]
new temp_prefix[32]
new text[128]
new error[256]
new type[2]
new key[32]
new prefix[32]
new line, length
new bool:g_toggle[33];
new g_custom
new g_custom_flag
new g_prefix_characters
new i
new CsTeams:g_team
new temp_value
new data[1024]
new pre_ips_count = 0, pre_names_count = 0, pre_steamids_count, pre_flags_count = 0, bad_prefix_count = 0
new Trie:pre_ips_collect, Trie:pre_names_collect, Trie:pre_steamids_collect, Trie:pre_flags_collect, Trie:bad_prefixes_collect, Trie:client_prefix
new gVault, vKey[64], vData[64]
new const separator[] = "************************************************"
new const g_team_names[CsTeams][] = {
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
new const forbidden_say_symbols[] = {
".",
"!",
"%",
"$"
}
new const forbidden_prefixes_symbols[] = {
"/",
"\",
"%",
"$",
".",
":",
"?",
"!",
"@",
"#",
"%"
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_AdminListen = register_cvar("amx_listen", "1")
g_AdminListenFlag = register_cvar("amx_listen_flag", "c")
g_LoadFlag = register_cvar("amx_load_flag", "d")
g_bad_prefix = register_cvar("amx_bad_prefixes", "1")
g_use_csstats = register_cvar("amx_use_csstats", "1")
g_AdminWhiteChat = register_cvar("amx_admin_whitechat", "0")
g_PlayerWhiteChat = register_cvar("amx_player_whitechat", "0")
g_maxprefixes = register_cvar("amx_max_prefixes", "33")
g_maxbadprefixes = register_cvar("amx_max_badprefixes", "33")
g_custom = register_cvar("amx_custom_current", "1")
g_custom_flag = register_cvar("amx_custom_current_flag", "d")
g_say_characters = register_cvar("amx_say_characters", "1")
g_prefix_characters = register_cvar("amx_prefix_characters", "1")
register_concmd("amx_reload_prefixes", "LoadPrefixes")
register_concmd("amx_reload_badprefixes", "LoadBadPrefixes")
register_concmd("amx_put", "SetPlayerPrefix")
pre_ips_collect = TrieCreate()
pre_names_collect = TrieCreate()
pre_steamids_collect = TrieCreate()
pre_flags_collect = TrieCreate()
bad_prefixes_collect = TrieCreate()
client_prefix = TrieCreate()
g_AdminChat = register_cvar("amx_admin_chat","!n%alive%team!t[!g%prefix!t]!g[!n%rank!g] !t%name :!g %message")
g_PlayerChat = register_cvar("amx_player_chat","!n%alive%team!g[!n%rank!g]%city !t%name :!n %message")
sayText = get_user_msgid("SayText")
teamInfo = get_user_msgid("TeamInfo")
maxPlayers = get_maxplayers()
hud = CreateHudSyncObj()
register_message(sayText, "avoid_duplicated")
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_teamsay")
get_configsdir(configs_dir, charsmax(configs_dir))
formatex(ranks_file, 127, "%s/Ranks.ini", configs_dir);
formatex(file_prefixes, charsmax(file_prefixes), "%s/Prefixes.ini", configs_dir)
formatex(file_bad_prefixes, charsmax(file_bad_prefixes), "%s/Bad_Prefixes.ini", configs_dir)
register_dictionary("UltimateAPRCCC.txt")
LoadRanksPoints()
LoadPrefixes(0)
LoadBadPrefixes(0)
}
public LoadRanksPoints()
{
if(file_exists(ranks_file))
{
g_maxranks = file_size(ranks_file,1)
if(g_maxranks > 63)
return set_fail_state("[UAPRCCC] There can not be more than 63 ranks in configs/Ranks.ini!");
new gPoints[16], buffer
for(new i=1;i <= g_maxranks;i++)
{
read_file(ranks_file,i-1,data,1023,buffer);
if(!equal(data,"//",2) && !equal(data,"") && !equal(data,";",1))
{
parse(data, gRanksPrefixes[i],32, gPoints,15);
gRanksPoints[i] = str_to_num(gPoints);
}
}
}
else
return set_fail_state("[UAPRCCC] File config/Ranks.ini not found!");
return PLUGIN_CONTINUE;
}
public LoadPrefixes(id)
{
get_pcvar_string(g_LoadFlag, temp_cvar, charsmax(temp_cvar))
if(!(get_user_flags(id) & read_flags(temp_cvar)))
{
console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION")
return PLUGIN_HANDLED
}
TrieClear(pre_ips_collect)
TrieClear(pre_names_collect)
TrieClear(pre_steamids_collect)
TrieClear(pre_flags_collect)
line = 0, length = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;
if(!file_exists(file_prefixes))
{
formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", file_prefixes)
set_fail_state(error)
}
server_print(separator)
while(read_file(file_prefixes, line++ , text, charsmax(text), length) && (pre_ips_count + pre_names_count + pre_steamids_count + pre_flags_count) <= get_pcvar_num(g_maxprefixes))
{
if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
continue
parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
trim(prefix)
if(!type[0] || !prefix[0] || !key[0])
continue
replace_all(prefix, charsmax(prefix), "!g", "^x04")
replace_all(prefix, charsmax(prefix), "!t", "^x03")
replace_all(prefix, charsmax(prefix), "!n", "^x01")
switch(type[0])
{
case 'f':
{
pre_flags_count++
TrieSetString(pre_flags_collect, key, prefix)
server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", prefix, key[0])
}
case 'i':
{
pre_ips_count++
TrieSetString(pre_ips_collect, key, prefix)
server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", prefix, key)
}
case 's':
{
pre_steamids_count++
TrieSetString(pre_steamids_collect, key, prefix)
server_print("%L", LANG_SERVER, "PREFIX_LOAD_STEAMID", prefix, key)
}
case 'n':
{
pre_names_count++
TrieSetString(pre_names_collect, key, prefix)
server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", prefix, key)
}
default:
{
continue
}
}
}
if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_steamids_count <= 0 && pre_names_count <= 0)
server_print("%L", LANG_SERVER, "PREFIX_NO")
get_user_name(id, g_name, charsmax(g_name))
if(id)
server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", g_name)
console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED")
server_print(separator)
for(new i = 1; i <= maxPlayers; i++)
{
num_to_str(i, str_id, charsmax(str_id))
TrieDeleteKey(client_prefix, str_id)
PutPrefix(i)
}
return PLUGIN_HANDLED
}
public LoadBadPrefixes(id)
{
if(!get_pcvar_num(g_bad_prefix))
{
console_print(id, "%L", LANG_SERVER, "BADP_OFF")
return PLUGIN_HANDLED
}
get_pcvar_string(g_LoadFlag, temp_cvar, charsmax(temp_cvar))
if(!(get_user_flags(id) & read_flags(temp_cvar)))
{
console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION")
return PLUGIN_HANDLED
}
TrieClear(bad_prefixes_collect)
line = 0, length = 0, bad_prefix_count = 0;
if(!file_exists(file_bad_prefixes))
{
console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", file_bad_prefixes)
return PLUGIN_HANDLED
}
server_print(separator)
while(read_file(file_bad_prefixes, line++ , text, charsmax(text), length) && bad_prefix_count <= get_pcvar_num(g_maxbadprefixes))
{
if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
continue
parse(text, prefix, charsmax(prefix))
if(!prefix[0])
continue
bad_prefix_count++
TrieSetCell(bad_prefixes_collect, prefix, 1)
server_print("%L", LANG_SERVER, "BADP_LOAD", prefix)
}
if(bad_prefix_count <= 0)
server_print("%L", LANG_SERVER, "BADP_NO")
get_user_name(id, g_name, charsmax(g_name))
server_print("%L", LANG_SERVER, "BADP_LOADED_BY", g_name)
console_print(id, "%L", LANG_SERVER, "BADP_LOADED")
server_print(separator)
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
if(!get_pcvar_num(g_use_csstats))
{
gVault = nvault_open("UAPRCCC");
if(gVault == INVALID_HANDLE)
set_fail_state("[UAPRCCC] nValut ERROR: =-> Invalid-Handle");
new gPlayerName[32];
get_user_name(id, gPlayerName, charsmax(gPlayerName));
formatex(vKey, charsmax(vKey), "%s", gPlayerName);
gPlayerPoints[id] = nvault_get(gVault, vKey);
nvault_close(gVault);
}
get_player_rank(id);
num_to_str(id, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, "")
g_toggle[id] = true
PutPrefix(id);
set_task(1.0, "showrank", id+TASK_HUD, _, _,"b",_)
}
public showrank(taskid)
{
static id
id = ID_HUD
if(is_user_alive(id))
{
set_hudmessage(0, 180, 0, -1.0, 0.02, 1, 6.0, 1.1, 0.0, 0.0, -1)
ShowSyncHudMsg(id, hud, "Rank: %s || XP: %i / %i || Next Rank: %s",gRanksPrefixes[gPlayerRank[id]], gRanksPoints[id],gRanksPoints[id+1],gRanksPrefixes[gPlayerRank[id] + 1])
}
}
public client_disconnect(id)
{
if(!get_pcvar_num(g_use_csstats))
{
gVault = nvault_open("UAPRCCC");
if(gVault == INVALID_HANDLE)
set_fail_state( "[UAPRCCC] nValut ERROR: =-> Invalid-Handle" );
new gPlayerName[32];
get_user_name(id, gPlayerName, charsmax(gPlayerName));
formatex(vKey, charsmax(vKey), "%sPOINTS", gPlayerName);
formatex(vData, charsmax(vData), "%d", gPlayerPoints[id]);
nvault_set(gVault, vKey, vData);
nvault_close(gVault);
}
}
public get_player_rank(id)
{
new currentPlayerRank = 1;
if(get_pcvar_num(g_use_csstats))
{
static stats[8], hits[8]
get_user_stats(id, stats, hits)
while(currentPlayerRank < g_maxranks)
{
if(stats[0] >= gRanksPoints[currentPlayerRank+1])
++currentPlayerRank;
else
break;
}
}
else
{
while(currentPlayerRank < g_maxranks)
{
if(gPlayerPoints[id] >= gRanksPoints[currentPlayerRank+1])
++currentPlayerRank;
else
break;
}
}
gPlayerRank[id] = currentPlayerRank
}
public SetPlayerPrefix(id)
{
if(!get_pcvar_num(g_custom) || !get_pcvar_string(g_custom_flag, temp_cvar, charsmax(temp_cvar)))
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF")
return PLUGIN_HANDLED
}
if(!(get_user_flags(id) & read_flags(temp_cvar)))
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION")
return PLUGIN_HANDLED
}
new input[128], target;
new arg_type[2], arg_prefix[32], arg_key[35];
new temp_str[16];
read_args(input, charsmax(input))
remove_quotes(input)
parse(input, arg_type, charsmax(arg_type), arg_key, charsmax(arg_key), arg_prefix, charsmax(arg_prefix))
trim(arg_prefix)
if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(arg_prefix) && !equali(arg_prefix, ""))
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", arg_prefix)
return PLUGIN_HANDLED
}
if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(arg_prefix))
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", arg_prefix, forbidden_prefixes_symbols[i])
return PLUGIN_HANDLED
}
switch(arg_type[0])
{
case 'f':
{
target = 0
temp_str = "Flag"
}
case 'i':
{
target = find_player("d", arg_key)
temp_str = "IP"
}
case 's':
{
target = find_player("c", arg_key)
temp_str = "SteamID"
}
case 'n':
{
target = find_player("a", arg_key)
temp_str = "Name"
}
default:
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_INVALID", arg_type)
return PLUGIN_HANDLED
}
}
get_user_name(id, g_name, charsmax(g_name))
if(equali(arg_prefix, ""))
{
find_and_delete(arg_type, arg_key)
if(target)
PutPrefix(target)
console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", temp_str, arg_key)
server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", g_name, temp_str, arg_key)
return PLUGIN_HANDLED
}
find_and_delete(arg_type, arg_key)
formatex(text, charsmax(text), "^"%s^" ^"%s^" ^"%s^"", arg_type, arg_key, arg_prefix)
write_file(file_prefixes, text, -1)
switch(arg_type[0])
{
case 'f': TrieSetString(pre_flags_collect, arg_key, arg_prefix)
case 'i': TrieSetString(pre_ips_collect, arg_key, arg_prefix)
case 's': TrieSetString(pre_steamids_collect, arg_key, arg_prefix)
case 'n': TrieSetString(pre_names_collect, arg_key, arg_prefix)
}
if(target)
{
num_to_str(target, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, arg_prefix)
}
console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", temp_str, arg_key, arg_prefix)
server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", g_name, temp_str, arg_key, arg_prefix)
return PLUGIN_HANDLED
}
public client_infochanged(id)
{
if(!is_user_connected(id))
return PLUGIN_CONTINUE
new g_old_name[32];
get_user_info(id, "name", g_name, charsmax(g_name))
get_user_name(id, g_old_name, charsmax(g_old_name))
if(!equal(g_name, g_old_name))
{
num_to_str(id, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, "")
set_task(0.5, "PutPrefix", id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public PutPrefix(id)
{
num_to_str(id, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, "")
new sflags[32], temp_flag[2];
get_flags(get_user_flags(id), sflags, charsmax(sflags))
for(new i = 0; i <= charsmax(sflags); i++)
{
formatex(temp_flag, charsmax(temp_flag), "%c", sflags[i])
if(TrieGetString(pre_flags_collect, temp_flag, temp_prefix, charsmax(temp_prefix)))
TrieSetString(client_prefix, str_id, temp_prefix)
}
get_user_ip(id, temp_key, charsmax(temp_key), 1)
if(TrieGetString(pre_ips_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
TrieSetString(client_prefix, str_id, temp_prefix)
get_user_authid(id, temp_key, charsmax(temp_key))
if(TrieGetString(pre_steamids_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
TrieSetString(client_prefix, str_id, temp_prefix)
get_user_name(id, temp_key, charsmax(temp_key))
if(TrieGetString(pre_names_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
TrieSetString(client_prefix, str_id, temp_prefix)
return PLUGIN_CONTINUE;
}
public avoid_duplicated(msgId, msgDest, receiver) return PLUGIN_HANDLED;
public hook_say(id)
{
read_args(message, 191)
remove_quotes(message)
if(equal(message, "/prefix"))
{
if(g_toggle[id])
{
g_toggle[id] = false
client_print(id, print_chat, "%L", LANG_PLAYER, "PREFIX_OFF")
}
else
{
g_toggle[id] = true
client_print(id, print_chat, "%L", LANG_PLAYER, "PREFIX_ON")
}
return PLUGIN_HANDLED_MAIN
}
num_to_str(id, str_id, charsmax(str_id))
if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
{
if(check_say_characters(message))
return PLUGIN_HANDLED_MAIN
}
get_user_name(id, g_name, charsmax(g_name))
if(is_user_alive(id))
alive = ""
else
alive = "*DEAD* "
new UserIp[16], UserCity[45], UserCountry[45], szUserCity[45], szUserCountry[45];
get_user_ip(id, UserIp, 15);
geoip_city(UserIp, UserCity, charsmax(UserCity));
geoip_country(UserIp, UserCountry, charsmax(UserCountry));
formatex(szUserCity, charsmax(szUserCity), "[%s]", UserCity)
formatex(szUserCountry, charsmax(szUserCountry), "[%s]", UserCountry)
//start
get_user_name(id, g_name, 32)
new bool:is_admin;
new g_string[192]
if(temp_prefix[0] && g_toggle[id])
{
get_pcvar_string(g_AdminChat,g_string,191)
is_admin = true
}
else
{
get_pcvar_string(g_PlayerChat,g_string,191)
is_admin = false
}
replace(g_string,191,"%alive",alive)
replace(g_string,191,"%team","")
replace(g_string,191,"%name",g_name)
replace(g_string,191,"%rank",gRanksPrefixes[gPlayerRank[id]])
replace(g_string,191,"%prefix",temp_prefix)
replace(g_string,191,"%city",szUserCity)
replace(g_string,191,"%country",szUserCountry)
replace(g_string,191,"%message",message)
format(message, 191, "%s", g_string)
replace_all(message,191,"!g","^x04")
replace_all(message,191,"!t","^x03")
replace_all(message,191,"!n","^x01")
get_pcvar_string(g_AdminListenFlag, temp_cvar, charsmax(temp_cvar))
for(new i = 1; i <= maxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i) || get_pcvar_num(g_AdminListen) && get_user_flags(i) & read_flags(temp_cvar))
{
if(is_admin && get_pcvar_num(g_AdminWhiteChat))
{
g_team = cs_get_user_team(i)
change_team_info(i, g_team_names[CS_TEAM_SPECTATOR])
send_message(message, i, i)
change_team_info(i, g_team_names[g_team])
}
else if(get_pcvar_num(g_PlayerWhiteChat))
{
g_team = cs_get_user_team(i)
change_team_info(i, g_team_names[CS_TEAM_SPECTATOR])
send_message(message, i, i)
change_team_info(i, g_team_names[g_team])
}
else
send_message(message, id, i)
}
}
return PLUGIN_CONTINUE;
}
public hook_teamsay(id)
{
read_args(message, 191)
remove_quotes(message)
if(equal(message, "/prefix"))
{
if(g_toggle[id])
{
g_toggle[id] = false
client_print(id, print_chat, "%L", LANG_PLAYER, "PREFIX_OFF")
}
else
{
g_toggle[id] = true
client_print(id, print_chat, "%L", LANG_PLAYER, "PREFIX_ON")
}
return PLUGIN_HANDLED_MAIN
}
if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
{
if(check_say_characters(message))
return PLUGIN_HANDLED_MAIN
}
num_to_str(id, str_id, charsmax(str_id))
if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
{
if(check_say_characters(message))
return PLUGIN_HANDLED_MAIN
}
get_user_name(id, g_name, charsmax(g_name))
if(is_user_alive(id))
alive = "^x01"
else
alive = "^x01*DEAD*"
new UserIp[16], UserCity[45], UserCountry[45], szUserCity[45], szUserCountry[45];
get_user_ip(id, UserIp, 15);
geoip_city(UserIp, UserCity, charsmax(UserCity));
geoip_country(UserIp, UserCountry, charsmax(UserCountry));
formatex(szUserCity, charsmax(szUserCity), "[%s]", UserCity)
formatex(szUserCountry, charsmax(szUserCountry), "[%s]", UserCountry)
get_user_name(id, g_name, 32)
new GetUserTeam = get_user_team(id);
new GetUserTeamName[19];
switch(GetUserTeam)
{
case 1 : copy (GetUserTeamName, 13, "(Terrorists)");
case 2 : copy (GetUserTeamName, 21, "(Counter-Terrorists)");
default: copy (GetUserTeamName, 12, "(Spectator)");
}
new bool:is_admin;
new g_string[192]
if(temp_prefix[0] && g_toggle[id])
{
get_pcvar_string(g_AdminChat,g_string,191)
is_admin = true
}
else
{
get_pcvar_string(g_PlayerChat,g_string,191)
is_admin = false
}
replace(g_string,191,"%alive",alive)
replace(g_string,191,"%team",GetUserTeamName)
replace(g_string,191,"%name",g_name)
replace(g_string,191,"%rank",gRanksPrefixes[gPlayerRank[id]])
replace(g_string,191,"%prefix",temp_prefix)
replace(g_string,191,"%city",szUserCity)
replace(g_string,191,"%country",szUserCountry)
replace(g_string,191,"%message",message)
format(message, 191, "%s", g_string)
replace_all(message,191,"!g","^x04")
replace_all(message,191,"!t","^x03")
replace_all(message,191,"!n","^x01")
get_pcvar_string(g_AdminListenFlag, temp_cvar, charsmax(temp_cvar))
for(new i = 1; i <= maxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(get_user_team(id) == get_user_team(i) || get_pcvar_num(g_AdminListen) && get_user_flags(i) & read_flags(temp_cvar))
{
if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i) || get_pcvar_num(g_AdminListen) && get_user_flags(i) & read_flags(temp_cvar))
{
if(is_admin && get_pcvar_num(g_AdminWhiteChat))
{
g_team = cs_get_user_team(i)
change_team_info(i, g_team_names[CS_TEAM_SPECTATOR])
send_message(message, i, i)
change_team_info(i, g_team_names[g_team])
}
else if(get_pcvar_num(g_PlayerWhiteChat))
{
g_team = cs_get_user_team(i)
change_team_info(i, g_team_names[CS_TEAM_SPECTATOR])
send_message(message, i, i)
change_team_info(i, g_team_names[g_team])
}
else
send_message(message, id, i)
}
}
}
return PLUGIN_CONTINUE
}
send_message(const message[], const id, const i)
{
message_begin(MSG_ONE, sayText, {0, 0, 0}, i)
write_byte(id)
write_string(message)
message_end()
}
change_team_info(const id, const team[])
{
message_begin(MSG_ONE, teamInfo,_, id)
write_byte(id)
write_string(team)
message_end()
}
public Hook_Deathmessage()
{
new killer = read_data(1);
new victim = read_data(2);
if(killer == victim)
return PLUGIN_CONTINUE;
if(!killer)
return PLUGIN_CONTINUE;
gPlayerPoints[killer]++
get_player_rank(killer)
return PLUGIN_CONTINUE;
}
public changeTeamInfo(player, team[])
{
message_begin(MSG_ONE, teamInfo, _, 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
}
bool:is_bad_prefix(const check_prefix[])
{
if(TrieGetCell(bad_prefixes_collect, check_prefix, temp_value)) return true
return false
}
bool:check_say_characters(const check_message[])
{
for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
{
if(check_message[0] == forbidden_say_symbols[i])
{
return true
}
}
return false
}
bool:check_prefix_characters(const check_prefix[])
{
for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
{
if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
{
return true
}
}
return false
}
find_and_delete(const arg_type[], const arg_key[])
{
line = 0, length = 0;
while(read_file(file_prefixes, line++ , text, charsmax(text), length))
{
if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
continue
parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
trim(prefix)
if(!type[0] || !prefix[0] || !key[0])
continue
if(!equal(arg_type, type) || !equal(arg_key, key))
continue
write_file(file_prefixes, "", line - 1)
}
switch(arg_type[0])
{
case 'f': TrieDeleteKey(pre_flags_collect, arg_key)
case 'i': TrieDeleteKey(pre_ips_collect, arg_key)
case 's': TrieDeleteKey(pre_steamids_collect, arg_key)
case 'n': TrieDeleteKey(pre_names_collect, arg_key)
}
}
Значи опитах да се изкарам hud съобщение с цел информация за плъгина, но все нещо се бъгваше при ХП.
Накрая стигнах и до извода, че и при зададени убийства не вдига ранк.
Има ли начин да се оправи това?
Дърпа информация от текстов файл в конфинг... всеки ред изглежда така "Newbie" "5", "Advanced" "10"...