PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <nvault>
#define IsPlayer(%1) (1 <= %1 <= g_players)
#define TOTALLEVELS 12
//Cash Natives
native cm_get_user_cash(id);
native cm_set_user_cash(id, cm);
//Cash Natives end
new const RANK[TOTALLEVELS] =
{
25,
50,
100,
200,
300,
500,
750,
1000,
1250,
1500,
1750,
2000,
}
new const CM[TOTALLEVELS] =
{
50,
100,
150,
200,
300,
1000,
1200,
1300,
1400,
1500,
2500,
20000
}
new const RANKNAMES[TOTALLEVELS][] =
{
"New player",
"Beginner",
"Learning",
"Knifer",
"Rambo with knife",
"Butcher",
"Matrix",
"Diiiirrrge",
"Freak with Knife",
"Chuck Norris",
"Kill Bill",
"Respected Player"
}
new gCM[33], gLevel[33];
new points_kill, points_hs;
new g_vault, g_players;
public plugin_init()
{
register_plugin("HideNSeek Rank", "1.2", "ETTAN");
register_event("DeathMsg", "eDeath", "a");
points_kill = register_cvar("hnsrank_kill", "1");
points_hs = register_cvar("hnsrank_hs","1");
g_vault = nvault_open("HNSRANK");
g_players = get_maxplayers();
register_clcmd("say /rank", "ShowHud");
register_clcmd("say_team /rank", "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, "You gained %d Points!", gpoints_kill );
}
else if(read_data(3))
{
gCM[killer] += (gpoints_kill + gpoints_hs);
Print(killer, "You gained %d Points!^x01 (Headshot)", (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, "Congratulations to^3 %s^1! Person is now [Lvl:^3 %i^1/%i] with title^3 %s^1!", szName, gLevel[id], TOTALLEVELS, RANKNAMES[gLevel[id]-1]);
Print(0, "^3%s^1 was rewarded^3 %i^1 Money for leveling up!", szName, CM[gLevel[id]]);
cm_set_user_cash( id, CM[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), "Unranked");
}
new szName[33];
get_user_name(id, szName, charsmax(szName));
Print(0, "^3%s^1 has:^3 %d/%d Points^1! Title:^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 AuthID[35];
get_user_authid(id,AuthID,34);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-EG", AuthID);
format(vaultdata,255,"%i#%i#",gCM[id],gLevel[id]);
nvault_set(g_vault,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
LoadData(id)
{
new AuthID[35];
get_user_authid(id,AuthID,34);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-EG",AuthID);
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[Cool-Gaming] HideNSeek 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;
}
return 0;
}