Kód:
/*****************************
Pluign: XP Mód
Készítő: Bence98007
Verzió: 1.0
******************************/
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#define MAXSZINT 69
new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
new xp_kill,xp_kes,xp_hs,xp_mentes
new g_vault
new const CLASSES[MAXSZINT][] = {
"Private",
"Private I",
"Private II",
"Private First Class",
"Private First Class I",
"Private First Class II",
"Specialist",
"Specialist I",
"Specialist II",
"Corporal",
"Corporal I",
"Corporal II",
"Sergeant",
"Sergeant I",
"Sergeant II",
"Staff Sergeant",
"Staff Sergeant I",
"Staff Sergeant II",
"Sergeant First Class",
"Sergeant First Class I",
"Sergeant First Class II",
"Master Sergeant",
"Master Sergeant I",
"Master Sergeant II",
"First Sergeant",
"First Sergeant I",
"First Sergeant II",
"Sergeant Major",
"Sergeant Major I",
"Sergeant Major II",
"Command Sergeant Major",
"Command Sergeant Major I",
"Command Sergeant Major II",
"2nd Lieutenant",
"2nd Lieutenant I",
"2nd Lieutenant II",
"1st Lieutenant",
"1st Lieutenant I",
"1st Lieutenant II",
"Captain",
"Captain I",
"Captain II",
"Major",
"Major I",
"Major II",
"Lieutenant Colonel",
"Lieutenant Colonel I",
"Lieutenant Colonel II",
"Lieutenant Colonel III",
"Colonel",
"Colonel I",
"Colonel II",
"Colonel III",
"Brigadier General",
"Brigadier General I",
"Brigadier General II",
"Brigadier General III",
"Major General",
"Major General I",
"Major General II",
"Major General III",
"Lieutenant General",
"Lieutenant General I",
"Lieutenant General II",
"Lieutenant General III",
"General",
"General I",
"General II",
"General III",
"Commander"
}
new const LEVELS[7] = {
0,
100,
300,
500,
700,
900,
1100,
1300,
1500,
1700,
1900,
2100,
2300,
2500,
2700,
2900,
3100,
3300,
3500,
3700,
3900,
4100,
4300,
4500,
4700,
4900,
5100,
5300,
5500,
5700,
5900,
6100,
6300,
6500,
6700,
6900,
6100,
7300,
7500,
7700,
7900,
8100,
8300,
8500,
8700,
8900,
9100,
9300,
9500,
9700,
9900,
10100,
11300,
11500,
11700,
11900,
12100,
12300,
12500,
12700,
12900,
13100,
13300,
13500,
13700,
13900,
14000,
}
public plugin_init()
{
register_plugin("XP-mod", "1.0", "Bence98007")
register_event("DeathMsg", "eDeath", "a")
xp_mentes = register_cvar("xpmentes","1")
xp_kill=register_cvar("XP_kill", "20")
xp_hs=register_cvar("XP_hs","22")
xp_kes=register_cvar("XP_kes","30")
g_vault = nvault_open("xpmod")
register_clcmd("say /xp", "ShowHud")
register_clcmd("say_team /xp", "ShowHud")
}
public eDeath()
{
new attacker = read_data( 1 )
new iVictim = read_data( 2 )
new headshot = read_data( 3 )
if(PlayerClass[attacker] == 0)
return PLUGIN_CONTINUE
new clip, ammo, weapon = get_user_weapon(attacker,clip,ammo);
PlayerXP[attacker] += get_pcvar_num(xp_kill)
if(headshot)
PlayerXP[attacker] += get_pcvar_num(xp_hs)
if(weapon == CSW_KNIFE)
PlayerXP[attacker] += get_pcvar_num(xp_kes)
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
client_print(attacker, print_chat, "[XP-Mod] Grat! Szinted: %i Rangod: %s !", PlayerLevel[attacker],CLASSES[PlayerClass[attacker]])
PlayerLevel[attacker] += 1
}
ShowHud(attacker)
}
public ShowHud(id)
{
set_hudmessage(85, 255, 0, 0.01, 0.90, 0, 6.0, 12.0)
show_hudmessage(id, "[Szinted] %i [XP]: %i [Rangod] %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]])
}
public client_connect(id)
{
if(get_pcvar_num(xp_mentes) == 1)
{
LoadData(id)
}
}
public client_disconnect(id)
{
if(get_pcvar_num(xp_mentes) == 1)
{
SaveData(id)
}
}
public SaveData(id)
{
new name[32]
get_user_name(id, name, 31)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%sXPmod", name)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public LoadData(id)
{
new name[32]
get_user_name(id, name, 31)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%sXPmod", name)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new playerxp[32], playerlevel[32]
parse(vaultdata, playerxp, 31, playerlevel, 31)
PlayerXP[id] = str_to_num(playerxp)
PlayerLevel[id] = str_to_num(playerlevel)
return PLUGIN_CONTINUE
}