Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta>
#include <hamsandwich>
#include <fakemeta_util>
new HpXp[33]
new StrXp[33]
new DefXp[33]
new AttXp[33]
new TotalXp[33]
new HpLevel[33]
new StrLevel[33]
new DefLevel[33]
new AttLevel[33]
new Level[33]
new max_players
new g_vault
new TotalLevel[33]
new const Levels[99] = {
0,
200,
400,
600,
800,
1000,
1250,
1500,
1750,
2000,
2250,
2500,
2750,
3000,
3300,
3600,
3900,
4200,
4500,
5000,
5500,
6000,
7500,
8000,
8500,
9000,
9500,
10000,
10500,
11000,
11500,
12000,
12500,
13000,
13500,
14000,
14500,
15000,
15500,
16000,
16500,
17000,
17500,
18000,
18500,
19000,
19500,
20000,
20500,
21000,
21500,
22000,
22500,
23000,
23500,
24000,
25000,
26000,
27000,
28000,
29000,
30000,
31000,
32000,
33000,
34000,
35000,
36000,
37000,
38000,
39000,
40000,
41000,
42000,
43000,
44000,
45000,
46000,
47000,
48000,
49000,
50000,
51500,
53000,
54500,
56000,
57500,
59000,
60500,
62000,
65000,
68000,
71000,
74000,
77000,
80000,
85000,
90000,
95000
//100000,
}
new const CombatLevels[40] = {
3,
9,
12,
15,
18,
21,
24,
27,
30,
33,
36,
39,
42,
45,
48,
51,
54,
57,
60,
63,
66,
69,
72,
75,
78,
81,
84,
87,
90,
93,
96,
99,
102,
105,
108,
111,
114,
117,
120,
123
}
new pc_head,pc_normal,pc_knife
public plugin_init() {
register_plugin("Runescape Mod", "0.1", "Tor0en")
g_vault = nvault_open("Rs")
register_event( "DeathMsg", "Death", "a")
RegisterHam(Ham_Spawn, "player", "event_spawn", 1)
pc_head = register_cvar("Rs_Xp_Head", "30")
pc_normal = register_cvar("Rs_Xp_NormalXp", "20")
pc_knife = register_cvar("Rs_Xp_KnifeKill", "40")
register_clcmd( "say /RS","RunesScapeStat")
register_clcmd( "say_team /RS","RunesScapeStat")
register_logevent("R_End", 2, "1=Round_End")
max_players = get_maxplayers()
}
public ShowHud(id)
{
set_hudmessage(255, 0, 0, 0.0, 0.1, 0, 6.0, 9999.0)
show_hudmessage(id, "Combat LvL: %i ^nTotal Lvl: %i^nTotal Xp: %i ^nHitPoint Lvl: %i^nHitPoint Xp: %i ^nAttack Lvl: %i ^nAttack Xp: %i ^nStrength Lvl: %i^nStrength Xp: %i^nDefence Lvl: %i^nDefence Xp: %i",TotalLevel[id],TotalLevel[id],HpLevel[id],HpXp[id],AttLevel[id],AttXp[id],StrLevel[id],StrXp[id],DefLevel[id],DefXp[id])
}
public R_End()
{
new id,Float:health
for(new i;i<=max_players;i++)
{
id = i
if(is_user_alive(id))
{
//gets his health its a float
pev(id,pev_health,health)
DefXp[id] = 100-floatround(health)
}
}
}
public Death( )
{
new iVictim = read_data( 2 )
new weapon, hitplace, attacker = get_user_attacker(iVictim,weapon,hitplace)
//get the victim,gun,hitplace and attacker
if(hitplace == HIT_HEAD)AttXp[attacker] += get_pcvar_num(pc_head)
if(hitplace != HIT_HEAD && hitplace)HpXp[attacker] += get_pcvar_num(pc_normal)
if(weapon == CSW_KNIFE)StrXp[attacker] += get_pcvar_num(pc_knife)
if(DefXp[attacker] >= Levels[DefLevel[attacker]])
{
DefLevel[attacker] += 1
client_print(attacker, print_chat, "[Runescape] Congratulations! You are now Defence Level %i!", DefLevel[attacker])
}
if(Level[attacker] >= CombatLevels[Level[attacker]])
{
Level[attacker] += 1
client_print(attacker, print_chat, "[Runescape] Congratulations! You are now Combat Level %i!", Level[attacker])
}
if(StrXp[attacker] >= Levels[StrLevel[attacker]])
{
StrLevel[attacker] += 1
TotalLevel[attacker] += 1
client_print(attacker, print_chat, "[Runescape] Congratulations! You are now Strength Level %i!", StrLevel[attacker])
}
{
StrLevel[attacker] += 1
TotalLevel[attacker] += 1
client_print(attacker, print_chat, "[Runescape] Congratulations! You are now Strength Level %i!", StrLevel[attacker])
}
if(AttXp[attacker] >= Levels[AttLevel[attacker]])
{
AttLevel[attacker] += 1
TotalLevel[attacker] += 1
client_print(attacker, print_chat, "[Runescape] Congratulations! You are now Attack Level %i!", AttLevel[attacker])
}
if(HpXp[attacker] >= Levels[HpLevel[attacker]])
{
HpLevel[attacker] += 1
TotalLevel[attacker] += 1
client_print(attacker, print_chat, "[Runescape] Congratulations! Your Hp Level is now %i!", HpLevel[attacker])
}
ShowHud(attacker)
}
public SaveData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Rs",AuthID)
format(vaultdata,255,"%i %i %i %i %i %i %i %i %i %i",TotalXp[id],HpXp[id],DefXp[id],StrXp[id],AttXp[id],DefLevel[id],StrLevel[id],AttLevel[id],HpLevel[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_HANDLED
}
public LoadData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Rs",AuthID)
format(vaultdata,255,"%i %i %i %i %i %i %i %i %i %i ",HpXp[id],DefXp[id],StrXp[id],AttXp[id],DefLevel[id],StrLevel[id],AttLevel[id],HpLevel[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
new playerhpxp[33],playerdefxp[33],playerattxp[33],playerstrxp[33],playerhplevel[33],playerattlevel[33],playerdeflevel[33],playerstrlevel[33]
parse(vaultdata, playerhpxp, 32, playerdefxp, 32, playerattxp, 32, playerstrxp, 32, playerhplevel, 32, playerattlevel, 32, playerdeflevel, 32, playerstrlevel, 32)
HpXp[id] = str_to_num(playerhpxp)
StrXp[id] = str_to_num(playerstrxp)
DefXp[id] = str_to_num(playerdefxp)
AttXp[id] = str_to_num(playerattxp)
HpLevel[id] = str_to_num(playerhplevel)
StrLevel[id] = str_to_num(playerstrlevel)
DefLevel[id] = str_to_num(playerdeflevel)
AttLevel[id] = str_to_num(playerattlevel)
return PLUGIN_HANDLED
}
public client_disconnect(id)
{
SaveData(id)
HpXp[id] = 0
StrXp[id] = 0
DefXp[id] = 0
AttXp[id] = 0
TotalXp[id] = 0
HpLevel[id] = 0
StrLevel[id] = 0
DefLevel[id] = 0
AttLevel[id] = 0
Level[id] = 0
}
public client_putinserver(id)LoadData(id)
public event_spawn(id)
{
if(!is_user_alive(id))return
if(!HpLevel[id])HpLevel[id] = 10
ShowHud(id)
set_pev(id,pev_health,HpLevel[id]*10.0)
if(!DefLevel[id])DefLevel[id] = 1
fm_set_user_armor(id, DefLevel[id]*10)
/*
if(!StrLevel[id])StrLevel[id] = 1
pev_takedamage(id, StrLevel[id]
*/
}