Преработка на ранк система

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
SkandaU
Извън линия
Потребител
Потребител
Мнения: 213
Регистриран на: 09 Яну 2017, 12:37
Се отблагодари: 45 пъти
Получена благодарност: 22 пъти

Преработка на ранк система

Мнение от SkandaU » 07 Фев 2017, 17:14

Код за потвърждение: Избери целия код

#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"...
Изображение

Аватар
RideeR ;]
Извън линия
Потребител
Потребител
Мнения: 170
Регистриран на: 05 Окт 2016, 21:30
Получена благодарност: 3 пъти

Re: Преработка на ранк система

Мнение от RideeR ;] » 07 Фев 2017, 19:26

Не би трябвало да имаш проблеми с тази ранк система, ако искаш просто изтегли някоя друга и готово...

Аватар
SkandaU
Извън линия
Потребител
Потребител
Мнения: 213
Регистриран на: 09 Яну 2017, 12:37
Се отблагодари: 45 пъти
Получена благодарност: 22 пъти

Re: Преработка на ранк система

Мнение от SkandaU » 07 Фев 2017, 20:02

Забелязах, че има библиотека csstats.. а предишния ми плъгин беше такава и не рестартираше ранговете в сървъра.
Повечето ранк система са хамави и не запазват.
Изображение

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Преработка на ранк система

Мнение от OciXCrom » 07 Фев 2017, 21:44

Щом има csstats, то означава, че взима убийствата от обикновената ранк система на CS - statsx, тъй че трябва да рестартираш нея.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Google [Bot], Semrush [Bot] и 4 госта