PHP Code:
#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <fakemeta>
// ^x01 is Yellow
// ^x03 is Team Color. Ie. Red (Terrorist) or blue (Counter-Terrorist).
// ^x04 is Green
enum Color
{
YELLOW = 1, // Yellow
GREEN, // Green Color
TEAM_COLOR // Team Color. Ie. Red (Terrorist) or blue (Counter-Terrorist).
}
new const levelup[] = { "misc/levelup.wav" }
new const RANKS[20][] = {
"First", // 0 Level
"First", // 1 Level
"First", // 2 Level
"Super Natural", // 3 Level
"Super Natural", // 4 Level
"Super Natural", // 5 Level
"Tank", // 6 Level
"Tank", // 7 Level
"Tank", // 8 Level
"Posion", // 9 Level
"Posion", // 10 Level
"Posion", // 11 Level
"Runner", // 12 Level
"Runner", // 13 Level
"Runner", // 14 Level
"Hiper Electro", // 15 Level
"Hiper Electro", // 16 Level
"Hiper Electro", // 17 Level
"Mystic Jumper", // 18 Level
"Mystic Jumper" // 19 Level
}
new const LEVELS[20] = {
100,
300,
600,
1000,
1500,
2100,
2800,
3600,
4500,
5500,
6600,
7800,
9100,
10500,
12000,
13600,
15400,
17300,
19300,
21400
}
new PlayerXP[33],PlayerLevel[33],PlayerRank[33]
new XP_Kill,XP_Knife,XP_Hs,SaveXP
public plugin_precache()
register_forward(FM_Spawn, "fwdSpawn");
public plugin_init()
{
register_plugin("MysticDeath-XP", "1.0", "xFrost");
register_event("DeathMsg", "eDeath", "a")
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
SaveXP = register_cvar("SaveXP","1")
XP_Kill=register_cvar("XP_per_kill", "5")
XP_Hs=register_cvar("XP_hs_bonus","10")
XP_Knife=register_cvar("XP_knife_bonus","5")
register_clcmd("say level", "ShowLevel")
register_clcmd("say_team level", "ShowLevel")
}
public eDeath( )
{
new attacker = read_data( 1 )
new headshot = read_data( 3 )
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_Knife)
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
ColorChat(attacker, GREEN, "[^x01Mystic-XP^x03]^x01 Congratulations!^x04 You are a level^x01 %i!^x03",PlayerLevel[attacker]);
PlayerLevel[attacker] += 0
}
ShowLevel(attacker)
SaveData(attacker)
}
public ShowLevel(id)
{
ColorChat(0, GREEN, "^x03Level ^x04- ^x01[ ^x03%i ^x04/ ^x03 19 ^x01] ^x03XP ^x04- ^x01[ ^x03%i ^x01] ^x03Rank ^x04- ^x01[^x03 %s ^x01] Gun Level: %s",PlayerLevel[id],PlayerXP[id],RANKS[PlayerRank[id]])
return PLUGIN_HANDLED;
}
public client_connect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
LoadData(id)
}
}
public client_disconnect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
SaveData(id)
}
PlayerXP[id] = 0
PlayerLevel[id] = 0
PlayerRank[id] = 0
}
public SaveData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
return PLUGIN_CONTINUE
}
public LoadData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
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
}
public ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
static SayText;
if(!SayText)
SayText = get_user_msgid("SayText");
static message[256];
switch(type)
{
case GREEN: // Green
{
message[0] = 0x04;
}
case TEAM_COLOR: // Team Color. Ie. Red (Terrorist) or blue (Counter-Terrorist).
{
message[0] = 0x03;
}
// Will allow it to work propertly even though they might of send an invalid Color Type.
// Will default to Yellow if it is.
default: // Yellow.
{
message[0] = 0x01;
}
}
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';
if(id)
{
if(is_user_connected(id))
{
message_begin(MSG_ONE, SayText, {0, 0, 0}, id);
write_byte(id);
write_string(message);
message_end();
}
} else {
static players[32]; new count, index;
get_players(players, count);
for(new i = 0; i < count; i++)
{
index = players[i];
message_begin(MSG_ONE, SayText, {0, 0, 0}, index);
write_byte(index);
write_string(message);
message_end();
}
}
}
public fwdSpawn(iEnt)
{
static s_szClassName[32];
pev(iEnt, pev_classname, s_szClassName, 31);
if (equal(s_szClassName, "func_buyzone"))
return FMRES_SUPERCEDE;
return FMRES_IGNORED;
}
public fw_PlayerSpawn_Post(id)
{
if (!is_user_alive(id))
return
switch (PlayerLevel[id])
{
case 0:
{
give_item (id, "weapon_glock18")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
}
case 1:
{
give_item (id, "weapon_usp");
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item(id, "weapon_smokegrenade")
}
case 2:
{
give_item (id, "weapon_p228");
give_item( id, "ammo_350sig")
give_item( id, "ammo_350sig")
give_item( id, "ammo_350sig")
give_item( id, "ammo_350sig")
give_item( id, "ammo_350sig")
give_item(id, "weapon_smokegrenade")
}
case 3:
{
give_item (id, "weapon_fiveseven");
give_item( id, "ammo_57mm")
give_item( id, "ammo_57mm")
give_item( id, "ammo_57mm")
give_item( id, "ammo_57mm")
give_item( id, "ammo_57mm")
give_item(id, "weapon_smokegrenade")
}
case 4:
{
give_item (id, "weapon_deagle");
give_item( id, "ammo_50ae")
give_item( id, "ammo_50ae")
give_item( id, "ammo_50ae")
give_item( id, "ammo_50ae")
give_item( id, "ammo_50ae")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
}
case 5:
{
give_item (id, "weapon_elite");
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item(id, "weapon_hegrenade")
}
case 6:
{
give_item (id, "weapon_tmp");
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item(id, "weapon_smokegrenade")
}
case 7:
{
give_item (id, "weapon_mac10");
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item(id, "weapon_smokegrenade")
}
case 8:
{
give_item (id, "weapon_ump45");
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item( id, "ammo_45acp")
give_item(id, "weapon_smokegrenade")
}
case 9:
{
give_item (id, "weapon_mp5navy");
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item( id, "ammo_9mm")
give_item(id, "weapon_smokegrenade")
}
case 10:
{
give_item (id, "weapon_p90");
give_item( id, "ammo_57mm")
give_item( id, "ammo_57mm")
give_item( id, "ammo_57mm")
give_item( id, "ammo_57mm")
give_item( id, "ammo_57mm")
give_item(id, "weapon_smokegrenade")
}
case 11:
{
give_item (id, "weapon_famas");
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item(id, "weapon_hegrenade")
}
case 12:
{
give_item (id, "weapon_galil");
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item(id, "weapon_smokegrenade")
}
case 13:
{
give_item (id, "weapon_m3");
give_item( id, "ammo_buckshot")
give_item( id, "ammo_buckshot")
give_item( id, "ammo_buckshot")
give_item( id, "ammo_buckshot")
give_item( id, "ammo_buckshot")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
}
case 14:
{
give_item (id, "weapon_ak47");
give_item( id, "ammo_762nato")
give_item( id, "ammo_762nato")
give_item( id, "ammo_762nato")
give_item( id, "ammo_762nato")
give_item( id, "ammo_762nato")
give_item(id, "weapon_smokegrenade")
}
case 15:
{
give_item (id, "weapon_m4a1");
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item(id, "weapon_smokegrenade")
}
case 16:
{
give_item (id, "weapon_sg550");
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item(id, "weapon_smokegrenade")
}
case 17:
{
give_item (id, "weapon_g3sg1");
give_item( id, "ammo_762nato")
give_item( id, "ammo_762nato")
give_item( id, "ammo_762nato")
give_item( id, "ammo_762nato")
give_item( id, "ammo_762nato")
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_smokegrenade")
}
case 18:
{
give_item (id, "weapon_sg552");
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item( id, "ammo_556nato")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")
}
case 19:
{
give_item (id, "weapon_m249");
give_item( id, "ammo_556natobox")
give_item( id, "ammo_556natobox")
give_item( id, "ammo_556natobox")
give_item( id, "ammo_556natobox")
give_item( id, "ammo_556natobox")
give_item(id, "weapon_smokegrenade")
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
}
}
}