Всем привет, нашел в интернете плагин начал его под себя делать, все было хорошо, потом вылезла эта ошибка initialization data exceeds declared size, не подскажите как можно убрать ее?
Код:
/* Anti Decompiler :) */
#pragma compress 1
#include <amxmodx>
#include <amxmisc>
#include <celltrie>
#include <cstrike>
#include <fakemeta>
#include <fvault>
#include <geoip>
#include <hamsandwich>
#define PLUGIN "Patents"
#define VERSION "1.0"
#define AUTHOR "."
#define VIP_FLAG ADMIN_RESERVATION
#define FLAG_RELOADPREFIX ADMIN_CFG
#define PREFIXCHAT "!g[o]"
#define PREFIXMENUS "\r[\wo\r]"
#define MAX_PREFIXES 17
#define MAXLEVEL_CSGO 17
#define TASK_HUDRANK 1234569
#define TASK_MSGWELCOME 877415
#define TASK_TOPSENTRY 88833
native reg_get_user_logged(id)
native reg_get_user_account(id, account[], len)
forward reg_user_login_post(id)
forward reg_user_logout_post(id)
#define xRegGetUserLogged(%1) reg_get_user_logged(%1)
#define xRegGetUserAccount(%1,%2,%3) reg_get_user_account(%1,%2,%3)
#define xRegUserLoginPost(%1) reg_user_login_post(%1)
#define xRegUserLogoutPost(%1) reg_user_logout_post(%1)
enum xDataPatents
{
xRankName[32],
xRankXp
};
enum _:xTop15Data
{
szAuthID[35],
szSkillP_Data[128]
}
new text[128], prefix[32], type[2], key[32], length, line, pre_ips_count, pre_names_count, pre_steamids_count, pre_flags_count
new xPlayerID[33], xMsgSync[1], xPlayerXP[33], xPlayerLevel[33], xPlayerName[32], xPlayerHudInfo[33], xGetAuth[64], xPlayerKills[33], xPlayerDeaths[33], xMotd[5000], xSayTyped[192],
xSayMessage[192], xPlayerViewMsg[33], temp_cvar[2], file_prefixes[128], str_id[16], temp_key[35], temp_prefix[32], CsTeams:xUserTeam, Trie:pre_ips_collect, Trie:pre_names_collect,
Trie:pre_steamids_collect, Trie:pre_flags_collect, Trie:client_prefix, xUserCity[50], xUserRegion[50], xMaxPlayers, xSayTxt, xCvarSaveType, xCvarXpKillNormal, xCvarXpKillKnife, xCvarXpKillHs,
xCvarXpDiedMin, xCvarXpDiedMax, xCvarXpKillHeGrenade, xCvarXpKillVipMore, xCvarPrefixOn, xCvarPrefixAdminViewSayFlag, xCvarPrefixBlockChars, xCvarXpNegative, xCvarWelcomeMsg, xCvarPttRankStyle,
xMyPosRankSave[33], xCvarTop10SayGreen, xCvarTop10SayAmount, xPlayerHudGeoIp[33]
new const db_top10_data[] = "db_top10_data"
new const db_top10_names[] = "db_top10_nomes"
new const db_patents[] = "db_patentes"
new const xSayTeamInfoPrefix[2][CsTeams][] =
{
{ "*SPEC* ", "*MORTO* ", "*MORTO* ", "*SPEC* " },
{ "", "", "", "" }
}
new const xSayTeamInfoTeamPrefix[2][CsTeams][] =
{
{ "(SPEC) ", "*MORTO* (T) ", "*MORTO* (CT) ", "(SPEC) " },
{ "(SPEC) ", "(T) ", "(CT) ", "(SPEC) " }
}
new const xBlockSymbolsSayPrefix[] = { "/", "!" /*"%","$"*/ }
new const xPatents[][xDataPatents] =
{
//Rank XP/Lvl
{ "Серебро I", 0 }, // Lvl 1
{ "Серебро II", 30 }, // Lvl 2
{ "Серебро III", 80 }, // Lvl 3
{ "Серебро IV", 100 }, // Lvl 4
{ "Серебро-Элита", 150 }, // Lvl 5
{ "Серебро-Великий Магистр", 250 }, // Lvl 6
{ "Золотая Звезда I", 350 }, // Lvl 7
{ "Золотая Звезда II", 450 }, // Lvl 8
{ "Золотая Звезда III", 500 }, // Lvl 9
{ "Золотая Звезда Магистр", 550 }, // Lvl 10
{ "Магистр-хранитель I", 650 }, // Lvl 11
{ "Магистр-хранитель II", 750 }, // Lvl 12
{ "Магистр-хранитель Элита", 850 }, // Lvl 13
{ "Биг Стар", 1000 }, // Lvl 14
{ "Беркут", 1250 }, // Lvl 15
{ "Беркут с венками", 1500 }, // Lvl 16
{ "Суприм", 1800 }, // Lvl 17
{ "Всемирная Элита", 2100 } // Lvl 18
};
new const xPatentsImages[][] =
{
"https://cs-lite.do.am/YNsKq6L.png", // Prata 1
"https://cs-lite.do.am/qpxpoiF.png", // Prata 2
"https://cs-lite.do.am/XjEijn0.png", // Prata 3
"https://cs-lite.do.am/zBhxhuM.png", // Prata 4
"https://cs-lite.do.am/54GJCIJ.png", // Prata 5
"https://cs-lite.do.am/u96lJcr.png", // Prata Elite
"https://cs-lite.do.am/FcojmRO.png", // Ouro 1
"https://cs-lite.do.am/Pn7uAv6.png", // Ouro 2
"https://cs-lite.do.am/WkiTWK3.png", // Ouro 3
"https://cs-lite.do.am/2kkT0rm.png", // Ouro 4
"https://cs-lite.do.am/rvKcJG0.png", // Ak 1
"https://cs-lite.do.am/fJR82Jw.png", // Ak 2
"https://cs-lite.do.am/Cd66iWa.png", // Ak Cruzada
"https://cs-lite.do.am/1G3x6fe.png", // Xerife
"https://cs-lite.do.am/Cqsadv3.png", // Aguia 1
"https://cs-lite.do.am/4gGGg5R.png", // Aguia 2
"https://cs-lite.do.am/LL2yZ4j.png", // Supremo
"https://cs-lite.do.am/pgUf0Ch.png" // Global Elite
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
xCvarSaveType = register_cvar("csr_ptt_savetype_data", "1") // 1= Steam + NoSteam com Sxe || 2= Por conta/registro
xCvarPttRankStyle = register_cvar("csr_ptt_rank_style", "1") // 1= Rank CSGO (ingame) || 2= Rank CSGO Perfil
xCvarTop10SayGreen = register_cvar("csr_ptt_top10_saygreen", "1")
xCvarTop10SayAmount = register_cvar("csr_ptt_top10_say_amount", "10")
xCvarXpKillNormal = register_cvar("csr_ptt_xp_kill_normal", "2")
xCvarXpKillKnife = register_cvar("csr_ptt_xp_kill_knife", "4")
xCvarXpKillHs = register_cvar("csr_ptt_xp_kill_hs", "3")
xCvarXpKillHeGrenade = register_cvar("csr_ptt_xp_kill_hegrenade", "5")
xCvarXpDiedMin = register_cvar("csr_ptt_xp_died_min", "1")
xCvarXpDiedMax = register_cvar("csr_ptt_xp_died_max", "2")
xCvarXpKillVipMore = register_cvar("csr_ptt_xp_kill_vip_more", "1")
xCvarPrefixOn = register_cvar("csr_ptt_prefix_on", "1")
xCvarPrefixAdminViewSayFlag = register_cvar("csr_ptt_prefix_admin_view_say_flag", "a")
xCvarPrefixBlockChars = register_cvar("csr_ptt_prefix_block_chars", "1")
xCvarXpNegative = register_cvar("csr_ptt_xp_negative", "1")
xCvarWelcomeMsg = register_cvar("csr_ptt_welcome_msg", "1")
register_concmd("amx_reloadprefix", "xLoadPrefix")
xRegisterSay("hudinfo", "xMenuOptHuds")
xRegisterSay("hudxp", "xMenuOptHuds")
xRegisterSay("hudlocal", "xMenuOptHuds")
xRegisterSay("infolocal", "xMenuOptHuds")
xRegisterSay("huds", "xMenuOptHuds")
xRegisterSay("top10", "xMotdTop10")
xRegisterSay("top15", "xMotdTop10")
xRegisterSay("rank", "xSkillTop10")
xRegisterSay("xp", "xMenuPatents")
xRegisterSay("xps", "xMenuPatents")
xRegisterSay("exp", "xMenuPatents")
xRegisterSay("patente", "xMenuPatents")
xRegisterSay("patentes", "xMenuPatents")
register_event("DeathMsg", "xDeathMsg", "a")
register_event("HLTV", "xNewRound", "a", "1=0", "2=0")
register_event("TeamInfo", "xTeamInfo", "a")
register_forward(FM_ClientPutInServer, "xClientPutInServer")
register_forward(FM_ClientDisconnect, "xClientDisconnect")
register_forward(FM_ClientUserInfoChanged, "xClientUserInfoChanged", 1)
//RegisterHam(Ham_Spawn, "player", "xPlayerSpawnPost", 1)
xSayTxt = get_user_msgid("SayText")
xMaxPlayers = get_maxplayers()
xMsgSync[0] = CreateHudSyncObj()
register_clcmd("say", "xHookSay")
register_clcmd("say_team", "xHookSayTeam")
xCreateMotdTop10()
set_task(10.0, "xReloadGambiarra",_,_,_, "b")
}
public xReloadGambiarra()
{
xLoadPrefix(0)
}
public plugin_cfg()
{
new configs_dir[64]
get_configsdir(configs_dir, charsmax(configs_dir))
formatex(file_prefixes, charsmax(file_prefixes), "%s/admin_prefixes.ini", configs_dir)
server_cmd("exec %s/csr_patentes.cfg", configs_dir)
pre_ips_collect = TrieCreate()
pre_names_collect = TrieCreate()
pre_steamids_collect = TrieCreate()
pre_flags_collect = TrieCreate()
client_prefix = TrieCreate()
xLoadPrefix(0)
//pause
server_cmd("amx_pausecfg pause ^"statsx^"")
}
public xResetVarsFull(id)
{
xPlayerLevel[id] = 0
xPlayerXP[id] = 0
xPlayerHudInfo[id] = false
xPlayerKills[id] = 0
xPlayerDeaths[id] = 0
xPlayerID[id] = 0
xPlayerViewMsg[id] = false
xMyPosRankSave[id] = 0
xPlayerHudGeoIp[id] = false
}
public xRegUserLogoutPost(id) xResetVarsFull(id)
public xClientDisconnect(id) xResetVarsFull(id)
public xRegUserLoginPost(id)
{
xResetVarsFull(id)
xLoadRanks(id)
xLoadKillsDeaths(id)
xSaveTop10Names(id)
}
public xClientPutInServer(id)
{
xResetVarsFull(id)
if(xIsUserNoSxe(id) && get_pcvar_num(xCvarSaveType) == 1)
{
set_task(15.0, "xMsgNoSave", id, _, _, "a", 5)
return PLUGIN_HANDLED
}
xLoadRanks(id)
xLoadKillsDeaths(id)
xSaveTop10Names(id)
if(get_pcvar_num(xCvarSaveType) == 2)
set_task(15.0, "xMsgLoginInAccount", id, _, _, "a", 5)
set_task(3.0, "xTaskTopsEntry", id+TASK_TOPSENTRY)
// Prefix
num_to_str(id, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, "")
xPutPrefix(id)
return PLUGIN_CONTINUE
}
public plugin_natives()
{
register_native("csr_get_user_rankname", "xNtvGetUserRankName")
register_native("csr_check_user_level", "xNtvCheckUserLvl", 1)
register_native("csr_get_user_xp", "xNtvGetUserXP", 1)
register_native("csr_get_user_pos_top10", "xNtvGetUserPosTop10", 1)
register_native("csr_get_total_top10", "xNtvGetTotalTop10", 1)
set_native_filter("xNtvFilter")
}
public xNtvFilter(const name[], index, trap)
{
if(!trap)
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public xTeamInfo()
{
new id = read_data(1)
if(is_user_connected(id) && get_pcvar_num(xCvarWelcomeMsg) && !xPlayerViewMsg[id])
{
static xUserTeam[32]
read_data(2, xUserTeam, charsmax(xUserTeam))
switch(xUserTeam[0])
{
case 'C':
{
set_task(2.0, "xShowMsgWelcome", id+TASK_MSGWELCOME)
}
case 'T':
{
set_task(2.0, "xShowMsgWelcome", id+TASK_MSGWELCOME)
}
}
}
}
public xTaskTopsEntry(id)
{
id -= TASK_TOPSENTRY
if(!is_user_connected(id))
{
remove_task(id+TASK_TOPSENTRY); return
}
new xMyRank = xMyPosRankSave[id]
static xPName[32]
get_user_name(id, xPName, charsmax(xPName))
get_user_authid(id, xGetAuth, charsmax(xGetAuth))
if(xMyRank <= 10)
{
xClientPrintColor(0, "%s !yJogador !g%s (TOP%d) !yentrou no servidor.", PREFIXCHAT, xPName, xMyRank)
client_cmd(0, "speak buttons/blip1")
}
if(equal(xGetAuth, "STEAM_0:1:79716893", 18))
{
xClientPrintColor(0, "%s !tJogador !y%s !ttambem conhecido como !g[!yEDITOR FODAO!g] !te !g[!yPIKA GROSSA!g] !tentrou no servidor.", PREFIXCHAT, xPName)
client_cmd(0, "speak buttons/blip1")
}
}
public xShowMsgWelcome(id)
{
id -= TASK_MSGWELCOME
if(!is_user_connected(id))
{
remove_task(id+TASK_MSGWELCOME); return
}
new xMyRank = xMyPosRankSave[id]
new xMyTotalRank = xNtvGetTotalTop10()
static xSvName[20]
static xPName[25]
get_user_name(id, xPName, charsmax(xPName))
get_user_name(0, xSvName, charsmax(xSvName))
set_dhudmessage(0, 255, 0, 0.06, 0.33, 2, 0.0, 8.0, 0.08, 0.2)
show_dhudmessage(id, "Ola %s, Bem vindo ao %s...^nSeu rank e: %s de %s, tenha um otimo jogo.", xPName, xSvName, xAddPoint(xMyRank), xAddPoint(xMyTotalRank))
xPlayerViewMsg[id] = true
}
public xNewRound()
{
xCreateMotdTop10()
}
public xMenuOptHuds(id)
{
new xFmtxMenu[300]
formatex(xFmtxMenu, charsmax(xFmtxMenu), "%s \wOpcoes de hud.", PREFIXMENUS)
new xNewMenu = menu_create(xFmtxMenu, "_xMenuOptHuds")
if(xPlayerHudInfo[id]) menu_additem(xNewMenu, "Ocultar \d[\yHud de XP/Patente/Info Telando\d]")
else menu_additem(xNewMenu, "Mostrar \d[\yHud de XP/Patente/Info Telando\d]")
if(xPlayerHudGeoIp[id]) menu_additem(xNewMenu, "Ocultar minha localizacao para os outros nao verem.")
else menu_additem(xNewMenu, "Mostrar minha localizacao para os outros verem.")
menu_setprop(xNewMenu, MPROP_EXITNAME, "Sair")
menu_display(id, xNewMenu, 0)
}
public _xMenuOptHuds(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu); return
}
switch(item)
{
case 0:
{
xHudInfoCmd(id)
xMenuOptHuds(id)
}
case 1:
{
xHudInfoGeoIpCmd(id)
xMenuOptHuds(id)
}
}
}
public xMenuPatents(id)
{
new xFmtxMenu[300]
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1:
{
formatex(xFmtxMenu, charsmax(xFmtxMenu), "%s \wMenu das Patentes.^n^n\
XP: %s \y| \wLevel: %d \y| \wPatente: %s", PREFIXMENUS, xAddPoint(xPlayerXP[id]), xPlayerLevel[id], xPatents[xPlayerLevel[id]][xRankName])
}
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
new xNewMenu = menu_create(xFmtxMenu, "_xMenuPatents")
menu_additem(xNewMenu, "Top 10")
menu_additem(xNewMenu, "Ver patente de um jogador")
menu_additem(xNewMenu, "Lista de patentes disponiveis^n")
menu_additem(xNewMenu, "\yAjuda")
menu_setprop(xNewMenu, MPROP_EXITNAME, "Sair")
menu_display(id, xNewMenu, 0)
}
public _xMenuPatents(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu); return
}
switch(item)
{
case 0:
{
xMenuSelectTop(id)
}
case 1:
{
xViewPatentPlayer(id)
}
case 2:
{
xListPatents(id)
show_motd(id, xMotd, "LISTA DE PATENTES")
xMenuPatents(id)
}
case 3:
{
xMotdHelp(id)
show_motd(id, xMotd, "AJUDA")
xMenuPatents(id)
}
}
}
public xMotdHelp(id)
{
new iLen
iLen = formatex(xMotd, charsmax(xMotd), "<html><head><meta charset=UTF-8>\
<style>body{background: #000 url(^"http://i.imgur.com/FDiuoIk.jpg^") no-repeat fixed center;}table, th, td{border: 1px solid black;border-collapse: collapse;}</style></head><body><table width=100%% cellpadding=2 cellspacing=0 border=1><tr align=center bgcolor=#eeeeee><th width=110%%>AJUDA</tr>")
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<tr align=center style=^"color:#fff;font-size:130%%^">")
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<td>- Primeiramente, para que seus dados fiquem salvos no banco de dados voce precisa estar de sxe ou (estar logado na conta, se ativado!).<br><br> A cada Kill que voce faz, voce ganha <b>[%d XP]</b>, se morrer voce perde de <b>[%d XP]</b> a <b>[%d XP]</b>.<br><br>Jogadores <b>VIPS</b> ganha <b>+%d</b> a mais de XP, ao mesmo perde <b>+%d XP</b>.", get_pcvar_num(xCvarXpKillNormal), get_pcvar_num(xCvarXpDiedMin), get_pcvar_num(xCvarXpDiedMax), get_pcvar_num(xCvarXpKillVipMore), get_pcvar_num(xCvarXpKillVipMore))
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "</table></body></html>")
}
public xListPatents(id)
{
new iLen, i
iLen = formatex(xMotd, charsmax(xMotd), "<meta charset=UTF-8>\
<style>*{margin:0px;}body{color:#fff;background:url(^"http://goo.gl/RBEw1K^")}table{border-collapse:collapse;border: 1px solid #000;text-align:center;}</style>\
<body><table width=100%% height=100%% border=1><tr bgcolor=#4c4c4c style=^"color:#fff;^"><th width=50%%>RANK<th width=50%%>XP")
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1:
{
for(i = 0; i < sizeof(xPatentsImages); i++)
{
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<tr><td>%s<td>%s", xGetListRankName(i), xAddPoint(xGetListRankExp(i)))
}
}
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
}
public xViewPatentPlayer(id)
{
new xFmtxMenu[300]
formatex(xFmtxMenu, charsmax(xFmtxMenu), "%s \wEscolha um jogador para ver a patente.", PREFIXMENUS)
new xNewMenu = menu_create(xFmtxMenu, "_xViewPatentPlayer")
new xPlayers[32], xPnum, xTempId, xSzTempId[10]
get_players(xPlayers, xPnum, "ch")
for(new i; i < xPnum; i++)
{
xTempId = xPlayers[i]
if(id != xTempId)
{
get_user_name(xTempId, xPlayerName, charsmax(xPlayerName))
num_to_str(xTempId, xSzTempId, 9)
menu_additem(xNewMenu, xPlayerName, xSzTempId, 0)
}
}
menu_setprop(xNewMenu, MPROP_BACKNAME, "Voltar")
menu_setprop(xNewMenu, MPROP_NEXTNAME, "Proxima")
menu_setprop(xNewMenu, MPROP_EXITNAME, "Sair")
menu_display(id, xNewMenu)
}
public _xViewPatentPlayer(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu); return
}
new data[20], iname[100], access, callback
menu_item_getinfo(menu, item, access, data, 19, iname, 99, callback)
xPlayerID[id] = str_to_num(data)
get_user_name(xPlayerID[id], xPlayerName, charsmax(xPlayerName))
xViewPatentPlayerMotd(id)
show_motd(id, xMotd, "INFO PLAYER")
xViewPatentPlayer(id)
}
public xViewPatentPlayerMotd(id)
{
new xMyPosTop10
xMyPosTop10 = xMyPosRankSave[xPlayerID[id]]
new iLen
iLen = formatex(xMotd, charsmax(xMotd), "<head><meta charset=UTF-8>\
<style>body{background: #000 url(^"http://i.imgur.com/FDiuoIk.jpg^") no-repeat fixed center;}table, th, td{border: 1px solid black;border-collapse: collapse;}</style></head>\
<body><table width=100%% cellpadding=2 cellspacing=0 border=1>\
<tr align=center bgcolor=#eeeeee><th width=20%%>POS RANK.<th width=40%%>NOME<th width=10%%>KILLS<th width=10%%>MORTES<th width=15%%>XP<th width=20%%>PATENTE</tr>")
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1:
{
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<tr align=center style=^"color:#fff^">")
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<td><img src=^"%s^" width=80 hight=30/>", xAddPoint(xMyPosTop10))
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<td>%s", xPlayerName)
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<td>%s", xAddPoint(xPlayerKills[xPlayerID[id]]))
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<td>%s", xAddPoint(xPlayerDeaths[xPlayerID[id]]))
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<td>%s", xAddPoint(xPlayerXP[xPlayerID[id]]))
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<td><img src=^"%s^" width=80 hight=30/>", xGetUserImgRank(xPlayerLevel[xPlayerID[id]]))
}
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
}
public xMenuSelectTop(id)
{
new xFmtxMenu[300]
formatex(xFmtxMenu, charsmax(xFmtxMenu), "%s \wOque voce deseja ver?", PREFIXMENUS)
new xNewMenu = menu_create(xFmtxMenu, "_xMenuSelectTop")
menu_additem(xNewMenu, "Top 10")
menu_additem(xNewMenu, "Ver minha Posicao")
menu_setprop(xNewMenu, MPROP_EXITNAME, "Sair")
menu_display(id, xNewMenu, 0)
}
public _xMenuSelectTop(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu); return
}
switch(item)
{
case 0:
{
xMotdTop10(id)
xMenuSelectTop(id)
}
case 1:
{
xSkillTop10(id)
xMenuSelectTop(id)
}
}
}
public xSkillTop10(id)
{
new xMyPosTop10
xMyPosTop10 = xMyPosRankSave[id]
xClientPrintColor(id, "%s !ySua posicao e: !g%s !yde !g%s !ycom !g%s !ykills e !g%s !ymortes.", PREFIXCHAT, xAddPoint(xMyPosTop10), xAddPoint(xNtvGetTotalTop10()), xAddPoint(xPlayerKills[id]), xAddPoint(xPlayerDeaths[id]))
}
public xLoadPrefix(id)
{
if(!(get_user_flags(id) & FLAG_RELOADPREFIX))
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)) set_fail_state("Arquivo admin_prefix.ini nao encontrado.")
while(read_file(file_prefixes, line++ , text, charsmax(text), length) && (pre_ips_count + pre_names_count + pre_steamids_count + pre_flags_count) <= MAX_PREFIXES)
{
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), "!y", "^x01")
switch(type[0])
{
case 'f':
{
pre_flags_count++
TrieSetString(pre_flags_collect, key, prefix)
}
case 'i':
{
pre_ips_count++
TrieSetString(pre_ips_collect, key, prefix)
}
case 's':
{
pre_steamids_count++
TrieSetString(pre_steamids_collect, key, prefix)
}
case 'n':
{
pre_names_count++
TrieSetString(pre_names_collect, key, prefix)
}
default:
{
continue
}
}
}
for(new i = 1; i <= xMaxPlayers; i++)
{
num_to_str(i, str_id, charsmax(str_id))
TrieDeleteKey(client_prefix, str_id)
xPutPrefix(i)
}
if(id)
console_print(id, "Prefix re-carregado :)")
return PLUGIN_HANDLED
}
public xHookSay(id)
{
read_args(xSayTyped, charsmax(xSayTyped)); remove_quotes(xSayTyped); trim(xSayTyped)
if(equal(xSayTyped, "") || !is_user_connected(id))
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(xCvarPrefixBlockChars) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(xCvarPrefixBlockChars) == 2) || get_pcvar_num(xCvarPrefixBlockChars) == 3)
{
if(check_say_characters(xSayTyped))
return PLUGIN_HANDLED_MAIN
}
get_user_name(id, xPlayerName, charsmax(xPlayerName))
xUserTeam = cs_get_user_team(id)
new xMyRank, xMyRankName[32]
xMyRank = xMyPosRankSave[id]
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1: formatex(xMyRankName, charsmax(xMyRankName), "%s", xPatents[xPlayerLevel[id]][xRankName])
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
/*
if(temp_prefix[0])
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^4%s ^1» ^4%s ^1« ^3%s: ^4%s", xSayTeamInfoPrefix[is_user_alive(id)][xUserTeam], temp_prefix, xMyRankName, xPlayerName, xSayTyped)
}
else
{
if((get_pcvar_num(xCvarSaveType) == 1 && !xIsUserNoSxe(id)) || (get_pcvar_num(xCvarSaveType) == 2 && xRegGetUserLogged(id)))
{
if(xMyRank <= get_pcvar_num(xCvarTop10SayAmount) && get_pcvar_num(xCvarTop10SayGreen))
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^1» ^4%s ^1« ^3%s: ^4%s", xSayTeamInfoPrefix[is_user_alive(id)][xUserTeam], xMyRankName, xPlayerName, xSayTyped)
}
else
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^1» ^4%s ^1« ^3%s: ^1%s", xSayTeamInfoPrefix[is_user_alive(id)][xUserTeam], xMyRankName, xPlayerName, xSayTyped)
}
}
else
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^3%s: ^1%s", xSayTeamInfoPrefix[is_user_alive(id)][xUserTeam], xPlayerName, xSayTyped)
}
}*/
if((get_pcvar_num(xCvarSaveType) == 1 && !xIsUserNoSxe(id)) || (get_pcvar_num(xCvarSaveType) == 2 && xRegGetUserLogged(id)))
{
if(temp_prefix[0])
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^4%s ^1» ^4%s ^1« ^3%s: ^4%s", xSayTeamInfoPrefix[is_user_alive(id)][xUserTeam], temp_prefix, xMyRankName, xPlayerName, xSayTyped)
}
else
{
if(xMyRank <= get_pcvar_num(xCvarTop10SayAmount) && get_pcvar_num(xCvarTop10SayGreen))
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^1» ^4%s ^1« ^3%s: ^4%s", xSayTeamInfoPrefix[is_user_alive(id)][xUserTeam], xMyRankName, xPlayerName, xSayTyped)
}
else
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^1» ^4%s ^1« ^3%s: ^1%s", xSayTeamInfoPrefix[is_user_alive(id)][xUserTeam], xMyRankName, xPlayerName, xSayTyped)
}
}
}
else
{
if(temp_prefix[0])
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^4%s ^3%s: ^4%s", xSayTeamInfoPrefix[is_user_alive(id)][xUserTeam], temp_prefix, xPlayerName, xSayTyped)
}
else
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^3%s: ^1%s", xSayTeamInfoPrefix[is_user_alive(id)][xUserTeam], xPlayerName, xSayTyped)
}
}
get_pcvar_string(xCvarPrefixAdminViewSayFlag, temp_cvar, charsmax(temp_cvar))
for(new i = 1; i <= xMaxPlayers; 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(xCvarPrefixOn) && get_user_flags(i) & read_flags(temp_cvar))
{
xPrefixSendMessage(xSayMessage, id, i)
}
}
return PLUGIN_HANDLED_MAIN
}
public xHookSayTeam(id)
{
read_args(xSayTyped, charsmax(xSayTyped)); remove_quotes(xSayTyped); trim(xSayTyped)
if(equal(xSayTyped, "") || !is_user_connected(id))
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(xCvarPrefixBlockChars) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(xCvarPrefixBlockChars) == 2) || get_pcvar_num(xCvarPrefixBlockChars) == 3)
{
if(check_say_characters(xSayTyped))
return PLUGIN_HANDLED_MAIN
}
get_user_name(id, xPlayerName, charsmax(xPlayerName))
xUserTeam = cs_get_user_team(id)
new xMyRank, xMyRankName[32]
xMyRank = xMyPosRankSave[id]
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1: formatex(xMyRankName, charsmax(xMyRankName), "%s", xPatents[xPlayerLevel[id]][xRankName])
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
/*
if(temp_prefix[0])
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^4%s ^1» ^4%s ^1« ^3%s: ^4%s", xSayTeamInfoTeamPrefix[is_user_alive(id)][xUserTeam], temp_prefix, xMyRankName, xPlayerName, xSayTyped)
}
else
{
if((get_pcvar_num(xCvarSaveType) == 1 && !xIsUserNoSxe(id)) || (get_pcvar_num(xCvarSaveType) == 2 && xRegGetUserLogged(id)))
{
if(xMyRank <= get_pcvar_num(xCvarTop10SayAmount) && get_pcvar_num(xCvarTop10SayGreen))
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^1» ^4%s ^1« ^3%s: ^4%s", xSayTeamInfoTeamPrefix[is_user_alive(id)][xUserTeam], xMyRankName, xPlayerName, xSayTyped)
}
else
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^1» ^4%s ^1« ^3%s: ^1%s", xSayTeamInfoTeamPrefix[is_user_alive(id)][xUserTeam], xMyRankName, xPlayerName, xSayTyped)
}
}
else
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^3%s: ^1%s", xSayTeamInfoTeamPrefix[is_user_alive(id)][xUserTeam], xPlayerName, xSayTyped)
}
}*/
if((get_pcvar_num(xCvarSaveType) == 1 && !xIsUserNoSxe(id)) || (get_pcvar_num(xCvarSaveType) == 2 && xRegGetUserLogged(id)))
{
if(temp_prefix[0])
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^4%s ^1» ^4%s ^1« ^3%s: ^4%s", xSayTeamInfoTeamPrefix[is_user_alive(id)][xUserTeam], temp_prefix, xMyRankName, xPlayerName, xSayTyped)
}
else
{
if(xMyRank <= get_pcvar_num(xCvarTop10SayAmount) && get_pcvar_num(xCvarTop10SayGreen))
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^1» ^4%s ^1« ^3%s: ^4%s", xSayTeamInfoTeamPrefix[is_user_alive(id)][xUserTeam], xMyRankName, xPlayerName, xSayTyped)
}
else
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^1» ^4%s ^1« ^3%s: ^1%s", xSayTeamInfoTeamPrefix[is_user_alive(id)][xUserTeam], xMyRankName, xPlayerName, xSayTyped)
}
}
}
else
{
if(temp_prefix[0])
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^4%s ^3%s: ^4%s", xSayTeamInfoTeamPrefix[is_user_alive(id)][xUserTeam], temp_prefix, xPlayerName, xSayTyped)
}
else
{
formatex(xSayMessage, charsmax(xSayMessage), "^1%s^3%s: ^1%s", xSayTeamInfoTeamPrefix[is_user_alive(id)][xUserTeam], xPlayerName, xSayTyped)
}
}
get_pcvar_string(xCvarPrefixAdminViewSayFlag, temp_cvar, charsmax(temp_cvar))
for(new i = 1; i <= xMaxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(get_user_team(id) == get_user_team(i) || get_pcvar_num(xCvarPrefixOn) && 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(xCvarPrefixOn) && get_user_flags(i) & read_flags(temp_cvar))
{
xPrefixSendMessage(xSayMessage, id, i)
}
}
}
return PLUGIN_HANDLED_MAIN
}
public xPutPrefix(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_HANDLED
}
public xPrefixSendMessage(const message[], const id, const i)
{
message_begin(MSG_ONE, xSayTxt, {0, 0, 0}, i)
write_byte(id)
write_string(message)
message_end()
}
bool:check_say_characters(const check_message[])
{
for(new i = 0; i < charsmax(xBlockSymbolsSayPrefix); i++)
{
if(check_message[0] == xBlockSymbolsSayPrefix[i])
{
return true
}
}
return false
}
public xNtvGetUserPosTop10(id)
{
new Array:aKey = ArrayCreate(35)
new Array:aData = ArrayCreate(128)
new Array:aAll = ArrayCreate(xTop15Data)
fvault_load(db_top10_data, aKey, aData)
new iArraySize = ArraySize(aKey)
new Data[xTop15Data]
new i
for(i = 0; i < iArraySize; i++)
{
ArrayGetString(aKey, i, Data[szAuthID ], sizeof Data[szAuthID]-1)
ArrayGetString(aData, i, Data[szSkillP_Data], sizeof Data[szSkillP_Data]-1)
ArrayPushArray(aAll, Data)
}
ArraySort(aAll, "xSortData")
new szAuthIdFromArray[64]
new j
for(j = 0; j < iArraySize; j++ )
{
ArrayGetString(aAll, j, szAuthIdFromArray, charsmax(szAuthIdFromArray))
switch(get_pcvar_num(xCvarSaveType))
{
case 1: get_user_authid(id, xGetAuth, charsmax(xGetAuth))
case 2: xRegGetUserAccount(id, xGetAuth, charsmax(xGetAuth))
default: get_user_authid(id, xGetAuth, charsmax(xGetAuth))
}
if(equal(szAuthIdFromArray, xGetAuth)) break
}
ArrayDestroy(aKey)
ArrayDestroy(aData)
ArrayDestroy(aAll)
return j + 1
}
public xNtvGetTotalTop10()
{
new Array:aKey = ArrayCreate(64)
new Array:aData = ArrayCreate(512)
new xTotalVaults = fvault_load(db_top10_data, aKey, aData)
ArrayDestroy(aKey)
ArrayDestroy(aData)
return xTotalVaults
}
public xNtvGetUserXP(id)
{
switch(get_pcvar_num(xCvarSaveType))
{
case 1:
{
if(!is_user_connected(id))
return false
}
case 2:
{
if(!xRegGetUserLogged(id))
return false
}
default:
{
if(!is_user_connected(id))
return false
}
}
return xPlayerXP[id]
}
public xNtvCheckUserLvl(id)
{
switch(get_pcvar_num(xCvarSaveType))
{
case 1:
{
if(!is_user_connected(id))
return false
}
case 2:
{
if(!xRegGetUserLogged(id))
return false
}
default:
{
if(!is_user_connected(id))
return false
}
}
return xCheckLevel(id)
}
public xNtvGetUserRankName(xPluginId, xNumParams)
{
new id = get_param(1)
switch(get_pcvar_num(xCvarSaveType))
{
case 1:
{
if(!is_user_connected(id))
return false
}
case 2:
{
if(!xRegGetUserLogged(id))
return false
}
default:
{
if(!is_user_connected(id))
return false
}
}
new xUserName[64]
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1: formatex(xUserName, charsmax(xUserName), "%s", xPatents[xPlayerLevel[id]][xRankName])
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
new len = get_param(3)
set_string(2, xUserName, len)
return true
}
public xDeathMsg()
{
new xAddXp
new xKiller = read_data(1)
new xVictim = read_data(2)
new xHeadShot = read_data(3)
new xWeapon[24]
read_data(4, xWeapon, charsmax(xWeapon))
if(xKiller != xVictim && is_user_connected(xKiller) && is_user_connected(xVictim))
{
new xDiedXp = random_num(get_pcvar_num(xCvarXpDiedMin), get_pcvar_num(xCvarXpDiedMax))
if(xHeadShot == 1 && !(xWeapon[0] == 'k') && xKiller != xVictim) // Hs
xAddXp = get_pcvar_num(xCvarXpKillHs)
else xAddXp = get_pcvar_num(xCvarXpKillNormal) // Normal
if(xWeapon[1] == 'r' && xKiller != xVictim) // He Grenade
xAddXp = get_pcvar_num(xCvarXpKillHeGrenade)
if(xWeapon[0] == 'k') // Knife
xAddXp = get_pcvar_num(xCvarXpKillKnife)
if(get_user_flags(xKiller) & VIP_FLAG)
{
xPlayerXP[xKiller] += xAddXp + get_pcvar_num(xCvarXpKillVipMore)
if(get_pcvar_num(xCvarXpNegative)) xPlayerXP[xVictim] -= xDiedXp - get_pcvar_num(xCvarXpKillVipMore)
}
else
{
xPlayerXP[xKiller] += xAddXp
if(get_pcvar_num(xCvarXpNegative)) xPlayerXP[xVictim] -= xDiedXp
}
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1:
{
if(xPlayerLevel[xKiller] < MAXLEVEL_CSGO-1)
{
if(xPlayerXP[xKiller] >= xPatents[xPlayerLevel[xKiller]+1][xRankXp])
{
xCheckLevel(xKiller)
get_user_name(xKiller, xPlayerName, charsmax(xPlayerName))
client_cmd(0, "speak ambience/3dmeagle")
xClientPrintColor(0, "%s !yJogador !g%s !ySubiu de level. Level: !g%d, !yPatente: !g%s!y.", PREFIXCHAT, xPlayerName, xPlayerLevel[xKiller], xPatents[xPlayerLevel[xKiller]][xRankName])
}
}
}
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
xPlayerKills[xKiller] ++
xPlayerDeaths[xVictim] ++
xSaveRanks(xKiller)
xSaveRanks(xVictim)
xSaveTop10Data(xKiller)
xSaveTop10Data(xVictim)
}
}
public xMotdTop10(id)
{
xCreateMotdTop10()
show_motd(id, xMotd, "TOP 10")
}
public xCreateMotdTop10()
{
new iLen, xRandomCss
xRandomCss = random_num(0, 1)
switch(xRandomCss)
{
case 0:
{
iLen = formatex(xMotd, charsmax(xMotd), "<meta charset=UTF-8>\
<style>*{margin:0px;}body{color:#fff;background:url(^"https://cdn.oboi7.com/b3aa341633c35906c7dd4c33c1465232f9078e5b/sinij-minimalistichnyj-fony.jpg^")}table{border-collapse:collapse;border: 1px solid #000;text-align:center;}</style>\
<body><table width=100%% height=10%% border=1><tr bgcolor=#4c4c4c style=^"color:#fff;^"><th width=5%%>POS.<th width=50%%>NOME<th width=15%%>KILLS\
<th width=15%%>MORTES<th width=10%%>XP<th width=20%%>PATENTE")
}
case 1:
{
iLen = formatex(xMotd, charsmax(xMotd), "<meta charset=UTF-8>\
<style>*{margin:0px;}body{color:#fff;background:url(^"https://cdn.oboi7.com/b3aa341633c35906c7dd4c33c1465232f9078e5b/sinij-minimalistichnyj-fony.jpg^")}table{border-collapse:collapse;border: 1px solid #000;text-align:center;}</style>\
<body><table width=100%% height=10%% border=1><tr bgcolor=#4c4c4c style=^"color:#fff;^"><th width=5%%>POS.<th width=50%%>NOME<th width=15%%>KILLS\
<th width=15%%>MORTES<th width=10%%>XP<th width=20%%>PATENTE")
}
}
new Array:aKey = ArrayCreate(35)
new Array:aData = ArrayCreate(128)
new Array:aAll = ArrayCreate(xTop15Data)
fvault_load(db_top10_data, aKey, aData)
new iArraySize = ArraySize(aKey)
new Data[xTop15Data]
new i
for( i = 0; i < iArraySize; i++ )
{
ArrayGetString(aKey, i, Data[szAuthID], sizeof Data[szAuthID]-1)
ArrayGetString(aData, i, Data[szSkillP_Data], sizeof Data[szSkillP_Data]-1)
ArrayPushArray(aAll, Data)
}
ArraySort(aAll, "xSortData")
new szPlayerKills[10]
new szPlayerDeahts[10]
new szName[25], xGetDataXps[50]
new iSize = clamp( iArraySize, 0, 10)
new j
for(j = 0; j < iSize; j++)
{
ArrayGetArray( aAll, j, Data )
fvault_get_data( db_top10_names, Data[ szAuthID ], szName, charsmax( szName ) )
replace_all(szName, charsmax(szName), "<", "")
replace_all(szName, charsmax(szName), ">", "")
replace_all(szName, charsmax(szName), "%", "")
parse(Data[szSkillP_Data],szPlayerKills, charsmax(szPlayerKills), szPlayerDeahts, charsmax(szPlayerDeahts))
fvault_get_data(db_patents, Data[ szAuthID ], xGetDataXps, charsmax(xGetDataXps))
new xPlayerXpRank = str_to_num(xGetDataXps)
new xPlayerLvlRank
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1:
{
if(xPlayerLvlRank <= MAXLEVEL_CSGO-1)
{
xPlayerLvlRank = 0
while(xPlayerXpRank >= xPatents[xPlayerLvlRank+1][xRankXp])
{
xPlayerLvlRank ++
if(xPlayerLvlRank == MAXLEVEL_CSGO-1)
break
}
}
iLen += formatex(xMotd[iLen], charsmax(xMotd) - iLen, "<tr><td>%i<td>%s<td>%s<td>%s<td>%s<td><img src=^"%s^" width=80 hight=30/>", j + 1, szName, xAddPoint(str_to_num(szPlayerKills)),
xAddPoint(str_to_num(szPlayerDeahts)), xAddPoint(xPlayerXpRank), xGetUserImgRank(xPlayerLvlRank))
}
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
}
ArrayDestroy(aKey)
ArrayDestroy(aData)
ArrayDestroy(aAll)
}
/*
public xSortData(Array:aArray, iItem1, iItem2, iData[], iDataSize)
{
new Data1[ xTop15Data ]
new Data2[ xTop15Data ]
ArrayGetArray( aArray, iItem1, Data1 )
ArrayGetArray( aArray, iItem2, Data2 )
new szPlayerKills[7], szPlayerDeahts[7]
parse(Data1[ szSkillP_Data ], szPlayerKills, charsmax( szPlayerKills ), szPlayerDeahts, charsmax( szPlayerDeahts ))
new Count1_1 = str_to_num(szPlayerKills)
new Count1_2 = str_to_num(szPlayerDeahts)
new Count1_f
if(Count1_2 >= Count1_1) Count1_f = Count1_1
else Count1_f = ((Count1_1+Count1_2)/2)
new szPlayerKills2[7], szPlayerDeahts2[7]
parse(Data2[ szSkillP_Data ], szPlayerKills2, charsmax( szPlayerKills2 ), szPlayerDeahts2, charsmax( szPlayerDeahts2 ))
new Count2_1 = str_to_num(szPlayerKills2)
new Count2_2 = str_to_num(szPlayerDeahts2)
new Count2_f
if(Count2_2 >= Count2_1) Count1_f = Count2_1
else Count2_f = ((Count2_1+Count2_2)/2)
new iCount1 = Count1_f
new iCount2 = Count2_f
return (iCount1 > iCount2) ? -1 : ((iCount1 < iCount2) ? 1 : 0)
}*/
public xSortData(Array:aArray, iItem1, iItem2, iData[], iDataSize)
{
new Data1[ xTop15Data ]
new Data2[ xTop15Data ]
ArrayGetArray( aArray, iItem1, Data1 )
ArrayGetArray( aArray, iItem2, Data2 )
new szPlayerKills[7], szPlayerDeahts[7]
parse(Data1[ szSkillP_Data ], szPlayerKills, charsmax( szPlayerKills ), szPlayerDeahts, charsmax( szPlayerDeahts ))
new Count1_1 = str_to_num(szPlayerKills)
new Count1_2 = str_to_num(szPlayerDeahts)
new Count1_f
if(Count1_2 >= Count1_1) Count1_f = Count1_1
else Count1_f = ((Count1_1-Count1_2))
new szPlayerKills2[7], szPlayerDeahts2[7]
parse(Data2[ szSkillP_Data ], szPlayerKills2, charsmax( szPlayerKills2 ), szPlayerDeahts2, charsmax( szPlayerDeahts2 ))
new Count2_1 = str_to_num(szPlayerKills2)
new Count2_2 = str_to_num(szPlayerDeahts2)
new Count2_f
if(Count2_2 >= Count2_1) Count1_f = Count2_1
else Count2_f = ((Count2_1-Count2_2))
new iCount1 = Count1_f
new iCount2 = Count2_f
return (iCount1 > iCount2) ? -1 : ((iCount1 < iCount2) ? 1 : 0)
}
public xCheckLevel(id)
{
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1:
{
if(xPlayerLevel[id] <= MAXLEVEL_CSGO-1)
{
xPlayerLevel[id] = 0
while(xPlayerXP[id] >= xPatents[xPlayerLevel[id]+1][xRankXp])
{
xPlayerLevel[id]++
if(xPlayerLevel[id] == MAXLEVEL_CSGO-1)
return false
}
}
}
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
return true
}
public xSaveRanks(id)
{
new xData[30]
if(is_user_bot(id) || is_user_hltv(id))
return PLUGIN_HANDLED
switch(get_pcvar_num(xCvarSaveType))
{
case 1:
{
if(xIsUserNoSxe(id))
return PLUGIN_HANDLED
get_user_authid(id, xGetAuth, charsmax(xGetAuth))
}
case 2: xRegGetUserAccount(id, xGetAuth, charsmax(xGetAuth))
default: get_user_authid(id, xGetAuth, charsmax(xGetAuth))
}
num_to_str(xPlayerXP[id], xData, charsmax(xData))
fvault_set_data(db_patents, xGetAuth, xData)
return PLUGIN_HANDLED
}
public xSaveTop10Data(id)
{
new xData[128]
if(is_user_bot(id) || is_user_hltv(id))
return PLUGIN_HANDLED
switch(get_pcvar_num(xCvarSaveType))
{
case 1:
{
if(xIsUserNoSxe(id))
return PLUGIN_HANDLED
get_user_authid(id, xGetAuth, charsmax(xGetAuth))
}
case 2: xRegGetUserAccount(id, xGetAuth, charsmax(xGetAuth))
default: get_user_authid(id, xGetAuth, charsmax(xGetAuth))
}
formatex(xData, charsmax(xData), "%i %i", xPlayerKills[id], xPlayerDeaths[id])
fvault_set_data(db_top10_data, xGetAuth, xData)
return PLUGIN_HANDLED
}
public xSaveTop10Names(id)
{
if(is_user_bot(id) || is_user_hltv(id))
return PLUGIN_HANDLED
switch(get_pcvar_num(xCvarSaveType))
{
case 1:
{
if(xIsUserNoSxe(id))
return PLUGIN_HANDLED
get_user_authid(id, xGetAuth, charsmax(xGetAuth))
}
case 2: xRegGetUserAccount(id, xGetAuth, charsmax(xGetAuth))
default: get_user_authid(id, xGetAuth, charsmax(xGetAuth))
}
get_user_name(id, xPlayerName, charsmax(xPlayerName))
fvault_set_data(db_top10_names, xGetAuth, xPlayerName)
return PLUGIN_HANDLED
}
public xLoadKillsDeaths(id)
{
new xData[128], xMyKills[50], xMyDeaths[50]
switch(get_pcvar_num(xCvarSaveType))
{
case 1: get_user_authid(id, xGetAuth, charsmax(xGetAuth))
case 2: xRegGetUserAccount(id, xGetAuth, charsmax(xGetAuth))
default: get_user_authid(id, xGetAuth, charsmax(xGetAuth))
}
if(fvault_get_data(db_top10_data, xGetAuth, xData, charsmax(xData)))
{
parse(xData, xMyKills, charsmax(xMyKills), xMyDeaths, charsmax(xMyDeaths))
xPlayerKills[id] = str_to_num(xMyKills)
xPlayerDeaths[id] = str_to_num(xMyDeaths)
}
}
public xLoadRanks(id)
{
xPlayerViewMsg[id] = false
xPlayerHudInfo[id] = true
xPlayerHudGeoIp[id] = true
new xData[30]
switch(get_pcvar_num(xCvarSaveType))
{
case 1: get_user_authid(id, xGetAuth, charsmax(xGetAuth))
case 2: xRegGetUserAccount(id, xGetAuth, charsmax(xGetAuth))
default: get_user_authid(id, xGetAuth, charsmax(xGetAuth))
}
if(fvault_get_data(db_patents, xGetAuth, xData, charsmax(xData)))
xPlayerXP[id] = str_to_num(xData)
xCheckLevel(id)
set_task(1.0, "xHudInfo", id+TASK_HUDRANK, _, _, "b")
xMyPosRankSave[id] = xNtvGetUserPosTop10(id)
}
public xMsgNoSave(id)
{
if(!is_user_connected(id))
{
remove_task(id); return
}
xClientPrintColor(id, "%s !t------------------------------------------------------------------------------------------------------------------------", PREFIXCHAT)
xClientPrintColor(id, "%s !tA.T.E.N.C.A.O !ySeus dados como !gRank, Patente !yetc, nao estao sendo salvos. Entre com !gsXe !ypara salva-los.", PREFIXCHAT)
xClientPrintColor(id, "%s !t------------------------------------------------------------------------------------------------------------------------", PREFIXCHAT)
client_cmd(id, "speak buttons/blip2")
}
public xMsgLoginInAccount(id)
{
if(!is_user_connected(id))
{
remove_task(id); return
}
if(!xRegGetUserLogged(id))
{
xClientPrintColor(id, "%s !t------------------------------------------------------------------------------------------------------------------------", PREFIXCHAT)
xClientPrintColor(id, "%s !tA.T.E.N.C.A.O !ySeus dados como !gRank, Patente !yetc, nao estao sendo salvos. Digite !g.login !ypara salva-los.", PREFIXCHAT)
xClientPrintColor(id, "%s !t------------------------------------------------------------------------------------------------------------------------", PREFIXCHAT)
client_cmd(id, "speak buttons/blip2")
}
}
public xClientUserInfoChanged(id)
{
if(!is_user_connected(id))
return FMRES_IGNORED
new xOldName[32]//, xData[128]
get_user_info(id, "name", xPlayerName, charsmax(xPlayerName))
get_user_name(id, xOldName, charsmax(xOldName))
if(!equal(xPlayerName, xOldName))
{
num_to_str(id, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, "")
set_task(0.5, "xPutPrefix", id)
return FMRES_HANDLED
}
xSaveTop10Names(id)
return FMRES_IGNORED
}
public xHudInfo(id)
{
id -= TASK_HUDRANK
if(!is_user_connected(id))
{
remove_task(id+TASK_HUDRANK); return
}
switch(get_pcvar_num(xCvarPttRankStyle))
{
case 1:
{
if(is_user_alive(id) && xPlayerHudInfo[id])
{
set_hudmessage(0, 191, 255, 0.02, 0.20, 0, 0.01, 1.0, 1.0, 1.0)
if(xPlayerLevel[id] < MAXLEVEL_CSGO-1)
{
if(equali(xPatents[xPlayerLevel[id]][xRankName], xPatents[xPlayerLevel[id]+1][xRankName]))
ShowSyncHudMsg(id, xMsgSync[0], "• Patente: %s^n• Prox. Patente: Suba mais seu level.^n• Level: %d^n• Exp: %s / %s", xPatents[xPlayerLevel[id]][xRankName], xPlayerLevel[id], xAddPoint(xPlayerXP[id]), xAddPoint(xPatents[xPlayerLevel[id]+1][xRankXp]))
else
ShowSyncHudMsg(id, xMsgSync[0], "• Patente: %s^n• Prox. Patente: %s^n• Level: %d^n• Exp: %s / %s", xPatents[xPlayerLevel[id]][xRankName], xPatents[xPlayerLevel[id]+1][xRankName], xPlayerLevel[id], xAddPoint(xPlayerXP[id]), xAddPoint(xPatents[xPlayerLevel[id]+1][xRankXp]))
}
else
{
ShowSyncHudMsg(id, xMsgSync[0], "• Patente: %s^n• Level: %d^n• Exp: %s", xPatents[xPlayerLevel[id]][xRankName], xPlayerLevel[id], xAddPoint(xPlayerXP[id]))
}
}
else if(xPlayerHudInfo[id])
{
static id2
id2 = pev(id, pev_iuser2)
if(!is_user_alive(id2)) return
static xPlayerIp[20]
get_user_ip(id2, xPlayerIp, charsmax(xPlayerIp), 1)
geoip_city(xPlayerIp, xUserCity, charsmax(xUserCity))
geoip_region_name(xPlayerIp, xUserRegion, charsmax(xUserRegion))
get_user_name(id2, xPlayerName, charsmax(xPlayerName))
set_hudmessage(0, 255, 0, 0.02, 0.20, 0, 0.01, 1.0, 1.0, 1.0)
if(!xPlayerHudGeoIp[id2] || equal(xUserCity, "") || equal(xUserRegion, ""))
ShowSyncHudMsg(id, xMsgSync[0], "Observando: %s^n^n• Patente: %s^n• Level: %d^n• Exp: %s", xPlayerName, xPatents[xPlayerLevel[id2]][xRankName], xPlayerLevel[id2], xAddPoint(xPlayerXP[id2]))
else ShowSyncHudMsg(id, xMsgSync[0], "Observando: %s^n^n• Patente: %s^n• Level: %d^n• Exp: %s^n• Cidade: %s^n• Estado: %s", xPlayerName, xPatents[xPlayerLevel[id2]][xRankName], xPlayerLevel[id2], xAddPoint(xPlayerXP[id2]), xUserCity, xUserRegion)
}
}
default: set_pcvar_num(xCvarPttRankStyle, 1)
}
}
public xHudInfoGeoIpCmd(id)
{
if(!xPlayerHudGeoIp[id])
{
xPlayerHudGeoIp[id] = true
xClientPrintColor(id, "%s !yVoce !gAtivou !ya hudinfo de localizacao.", PREFIXCHAT)
}
else
{
xPlayerHudGeoIp[id] = false
xClientPrintColor(id, "%s !yVoce !gDesativou !ya hudinfo de localizacao.", PREFIXCHAT)
}
}
public xHudInfoCmd(id)
{
if(!xPlayerHudInfo[id])
{
xPlayerHudInfo[id] = true
xClientPrintColor(id, "%s !yVoce !gAtivou !ya hudinfo.", PREFIXCHAT)
set_task(1.0, "xHudInfo", id+TASK_HUDRANK, _, _, "b")
}
else
{
xPlayerHudInfo[id] = false
xClientPrintColor(id, "%s !yVoce !gDesativou !ya hudinfo.", PREFIXCHAT)
remove_task(id+TASK_HUDRANK)
}
}
stock xGetListRankExp(num)
{
switch(num)
{
case 0: return xPatents[0][xRankXp]
case 1: return xPatents[1][xRankXp]
case 2: return xPatents[2][xRankXp]
case 3: return xPatents[3][xRankXp]
case 4: return xPatents[4][xRankXp]
case 5: return xPatents[5][xRankXp]
case 6: return xPatents[6][xRankXp]
case 7: return xPatents[7][xRankXp]
case 8: return xPatents[8][xRankXp]
case 9: return xPatents[9][xRankXp]
case 10: return xPatents[10][xRankXp]
case 11: return xPatents[11][xRankXp]
case 12: return xPatents[12][xRankXp]
case 13: return xPatents[13][xRankXp]
case 14: return xPatents[14][xRankXp]
case 15: return xPatents[15][xRankXp]
case 16: return xPatents[16][xRankXp]
case 17: return xPatents[17][xRankXp]
default: return xPatents[0][xRankXp]
}
return xPatents[0][xRankXp]
}
stock xGetListRankName(num)
{
switch(num)
{
case 0: return xPatents[0]
case 1: return xPatents[1]
case 2: return xPatents[2]
case 3: return xPatents[3]
case 4: return xPatents[4]
case 5: return xPatents[5]
case 6: return xPatents[6]
case 7: return xPatents[7]
case 8: return xPatents[8]
case 9: return xPatents[9]
case 10: return xPatents[10]
case 11: return xPatents[11]
case 12: return xPatents[12]
case 13: return xPatents[13]
case 14: return xPatents[14]
case 15: return xPatents[15]
case 16: return xPatents[16]
case 17: return xPatents[17]
default: return xPatents[0]
}
return xPatents[0]
}
stock xGetUserImgRank(num)
{
switch(num)
{
case 0: return xPatentsImages[0]
case 1: return xPatentsImages[1]
case 2: return xPatentsImages[2]
case 3: return xPatentsImages[3]
case 4: return xPatentsImages[4]
case 5: return xPatentsImages[5]
case 6: return xPatentsImages[6]
case 7: return xPatentsImages[7]
case 8: return xPatentsImages[8]
case 9: return xPatentsImages[9]
case 10: return xPatentsImages[10]
case 11: return xPatentsImages[11]
case 12: return xPatentsImages[12]
case 13: return xPatentsImages[13]
case 14: return xPatentsImages[14]
case 15: return xPatentsImages[15]
case 16: return xPatentsImages[16]
case 17: return xPatentsImages[17]
default: return xPatentsImages[0]
}
return xPatentsImages[0]
}
stock xIsUserNoSxe(id)
{
get_user_authid(id, xGetAuth, charsmax(xGetAuth))
if(equal(xGetAuth, "VALVE_4:4", 9))
return true
return false
}
stock xAddPoint(number)
{
new count, i, str[29], str2[35], len
num_to_str(number, str, charsmax(str))
len = strlen(str)
for (i = 0; i < len; i++)
{
if(i != 0 && ((len - i) %3 == 0))
{
add(str2, charsmax(str2), ".", 1)
count++
add(str2[i+count], 1, str[i], 1)
}
else add(str2[i+count], 1, str[i], 1)
}
return str2
}
stock xClientPrintColor(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")
replace_all(msg, 190, "!t2", "^0")
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 xRegisterSay(szsay[], szfunction[])
{
new sztemp[64]
formatex(sztemp, 63 , "say /%s", szsay)
register_clcmd(sztemp, szfunction)
formatex(sztemp, 63 , "say .%s", szsay)
register_clcmd(sztemp, szfunction)
formatex(sztemp, 63 , "say_team /%s", szsay)
register_clcmd(sztemp, szfunction )
formatex(sztemp, 63 , "say_team .%s", szsay)
register_clcmd(sztemp, szfunction)
}
Вложения
-
49.9 KB Просмотры: 7