mert ha valaki retryzik megint 0-rol kezdi.
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <nvault>
#define IsPlayer(%1) (1 <= %1 <= g_players)
#define TOTALLEVELS 12
//HNS XP API - End
new const RANK[TOTALLEVELS] =
{
4,
8,
15,
25,
55,
66,
80,
90,
100,
125,
150,
165,
}
new const RANKNAMES[TOTALLEVELS][] =
{
"Ujonc",
"Kezdo",
"Tanulo",
"Gyakorlot",
"Fel Pro",
"Pro",
"Profi Bunny-s",
"Torekvo",
"Kovulet",
"Fonok",
"Tag",
"Tiszteletbeli Tag"
}
new gCM[33], gLevel[33];
new points_kill, points_hs;
new g_vault, g_players;
public plugin_init()
{
register_plugin("HideNSeek Rank", "1.0", "Larcyn");
register_event("DeathMsg", "eDeath", "a");
points_kill = register_cvar("hnsrank_kill", "2");
points_hs = register_cvar("hnsrank_hs","3");
g_vault = nvault_open("HNSRANK");
g_players = get_maxplayers();
register_clcmd("say /szint", "ShowHud");
register_clcmd("say_team /szint", "ShowHud");
}
public plugin_end()
{
nvault_close(g_vault);
}
public eDeath()
{
new killer = read_data(1);
new victim = read_data(2);
new gpoints_kill = get_pcvar_num(points_kill);
new gpoints_hs = get_pcvar_num(points_hs);
if( IsPlayer(killer) && is_user_connected(killer) )
{
if( victim != killer )
{
if( cs_get_user_team(victim) != cs_get_user_team(killer) )
{
if( is_user_alive(killer) )
{
if(!read_data(3))
{
gCM[killer] += gpoints_kill
Print(killer, "[H4RD~Z3d] %d Pont!", gpoints_kill );
}
else if(read_data(3))
{
gCM[killer] += (gpoints_kill + gpoints_hs);
Print(killer, "[H4RD~Z3d] %d Pont", (gpoints_hs + gpoints_kill ) );
}
CheckLevel(killer);
SaveData(killer);
}
}
}
}
return PLUGIN_HANDLED;
}
public CheckLevel(id)
{
if( gCM[id] >= RANK[gLevel[id]] )
{
gLevel[id]++;
new szName[33];
get_user_name(id, szName, charsmax(szName));
Print(0, "[H4RD~Z3d] Gratulalunk^3 %s^1! Most [Lvl:^3 %i^1/%i] ez lett^3 %s^1!", szName, gLevel[id], TOTALLEVELS, RANKNAMES[gLevel[id]-1]);
}
}
public ShowHud(id)
{
new iLevelName[100];
if( gLevel[id] > 0 )
{
formatex(iLevelName, charsmax(iLevelName), "%s", RANKNAMES[gLevel[id]]);
}
else
{
formatex(iLevelName, charsmax(iLevelName), "Zoldfulu");
}
new szName[33];
get_user_name(id, szName, charsmax(szName));
Print(0, "^3%s^1 o:^3 %d/%d Pont^1! szint:^3 %s^1!", szName, gCM[id], RANK[gLevel[id]], iLevelName);
}
public client_connect(id)
{
LoadData(id);
}
public client_disconnect(id)
{
SaveData(id);
gCM[id] = 0;
gLevel[id] = 0;
}
public SaveData(id)
{
new name[35];
get_user_name(id,name,34);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-HB", name);
format(vaultdata,255,"%i#%i#",gCM[id],gLevel[id]);
nvault_set(g_vault,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
LoadData(id)
{
new name[35];
get_user_name(id,name,34);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-EG",name);
format(vaultdata,255,"%i#%i#",gCM[id],gLevel[id]);
nvault_get(g_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new playercm[32], playerlevel[32];
parse(vaultdata, playercm, 31, playerlevel, 31);
gCM[id] = str_to_num(playercm);
gLevel[id] = str_to_num(playerlevel);
return PLUGIN_CONTINUE;
}
Print(iPlayer, const sMsg[], any:...)
{
static i; i = iPlayer ? iPlayer : get_Player();
if ( !i ) return;
new sMessage[256];
new len = formatex(sMessage, sizeof(sMessage) - 1, "^x04[[H4RD~Z3d] Rank:^x03 ");
vformat(sMessage[len], sizeof(sMessage) - 1 - len, sMsg, 3);
sMessage[192] = '^0';
static msgid_SayText;
if ( !msgid_SayText ) msgid_SayText = get_user_msgid("SayText");
new const team_Names[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
};
new sTeam = get_user_team(i);
team_Info(i, iPlayer, team_Names[0]);
message_begin(iPlayer ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_SayText, _, iPlayer);
write_byte(i);
write_string(sMessage);
message_end();
team_Info(i, iPlayer, team_Names[sTeam]);
}
team_Info(receiver, sender, sTeam[])
{
static msgid_TeamInfo;
if ( !msgid_TeamInfo ) msgid_TeamInfo = get_user_msgid("TeamInfo");
message_begin(sender ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_TeamInfo, _, sender);
write_byte(receiver);
write_string(sTeam);
message_end();
}
get_Player()
{
for ( new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++ )
{
return iPlayer;
}
}