PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fun>
#include <fakemeta_util>
#include <cstrike>
#include <HamSandwich>
#define MAXCLASSES 5
#define PREFIX "New Age"
enum {
PLAYERLEVEL_1,
PLAYERLEVEL_2,
PLAYERLEVEL_3, // How many Levels
PLAYERLEVEL_4,
PLAYERLEVEL_5,
PLAYERLEVEL_6
}
enum {
CLASS_Chainer = 0,
CLASS_Rusher,
CLASS_Defender, // Add your Classes there..
CLASS_Sniper,
CLASS_Soldier,
}
new const CLASSES[MAXCLASSES][] = {
"Chainer",
"Rusher",
"Defender",
"Sniper",
"Soldier"
};
new const Float:gSpeedByClass[ MAXCLASSES ] =
{
250.0,
600.0,
400.0,
450.0,
200.0
}
new const LEVELS[7] = {
100,
200,
400,
800,
1600,
3200,
4000
};
new PlayerXP[33], PlayerLevel[33], PlayerClass[33];
new gCvar_Kill, gCvar_Knife, gCvar_HS, gCvar_Enable, g_Vault;
new iconstatus;
new const Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;
public plugin_init()
{
register_plugin("New Age", "1.0", "Drakeris");
register_event("DeathMsg", "eDeath", "a");
// register_event("ResetHUD", "resetModel", "b")
//register_event("ResetHUD", "skill", "be");
RegisterHam( Ham_Spawn, "player", "skill", 1 );
RegisterHam( Ham_Player_ResetMaxSpeed, "player", "Player_ResetMaxSpeed", 1 );
gCvar_Enable = register_cvar("xp_save", "1");
gCvar_Kill = register_cvar("xp_per_kill", "20");
gCvar_HS = register_cvar("xp_hs_bonus", "20");
gCvar_Knife = register_cvar("xp_Knife_bonus", "20");
g_Vault = nvault_open("animod");
//register_concmd("amx_paimt_exp", "cmd_paimt_exp", ADMIN_SLAY, "<target> <amount>");
//register_concmd("amx_dot_exp", "cmd_dot_exp", ADMIN_SLAY, "<target> <amount>");
register_clcmd("say /class", "ChangeClass");
register_clcmd("say class", "ChangeClass");
register_clcmd("say /level", "ShowHud");
register_clcmd("say level", "ShowHud");
register_forward(FM_PlayerPreThink,"fw_prethink");
iconstatus = get_user_msgid("StatusIcon");
}
// Precache
public plugin_precache()
{
// Models
precache_model("models/v_mp.mdl")
precache_model("models/he/v_hegrenade.mdl")
// Sounds
}
public Player_ResetMaxSpeed ( const Player )
{
if ( is_user_alive( Player ) && pev( Player, pev_maxspeed ) != 1 )
{
set_pev( Player, pev_maxspeed, gSpeedByClass[ PlayerClass[ Player ] ] );
}
}
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(gCvar_Kill);
if(headshot)
PlayerXP[attacker] += get_pcvar_num(gCvar_HS);
if(weapon == CSW_KNIFE)
PlayerXP[attacker] += get_pcvar_num(gCvar_Knife);
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
client_print(attacker, print_chat, "[%s] Congratulations! You are a level %i %s!", PREFIX, PlayerLevel[attacker], CLASSES[PlayerClass[attacker]]);
PlayerLevel[attacker] += 1;
}
ShowHud(attacker);
SaveData(attacker);
}
public ShowHud(id)
{
set_hudmessage(255, 0, 0, 0.75, 0.01, 0, 6.0, 15.0);
show_hudmessage(id, "Level: %i^nXP: %i^nClass: %s", PlayerLevel[id], PlayerXP[id], CLASSES[PlayerClass[id]]);
}
public ChangeClass(id)
{
new menu = menu_create("Class Menu" , "Class_Handle");
menu_additem(menu ,"Rusher", "1" , 0);
menu_additem(menu ,"Defender", "2" , 0);
menu_additem(menu ,"Sniper", "3" , 0);
menu_additem(menu ,"Soldier", "4" , 0);
menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
menu_display(id , menu , 0);
return PLUGIN_CONTINUE;
}
public Class_Handle(id , menu , item)
{
if(item == MENU_EXIT)
menu_destroy(menu);
new szCommand[6] , szName[64];
new access , callback;
menu_item_getinfo(menu , item , access , szCommand , 5 , szName , 63 , callback);
new i = str_to_num(szCommand);
if(PlayerClass[id] != i)
{
PlayerClass[id] = i;
client_print(id,print_chat,"[%s] Tu pasirinkai %s", PREFIX, CLASSES[i]);
}
else
{
client_print(id,print_chat,"[%s] Tu jau esi %s", PREFIX, CLASSES[i]);
}
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
public client_connect(id)
{
if(get_pcvar_num(gCvar_Enable) == 1)
LoadData(id);
}
public client_disconnect(id)
{
if(get_pcvar_num(gCvar_Enable) == 1)
SaveData(id);
PlayerXP[id] = 0;
PlayerLevel[id] = 0;
PlayerClass[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]);
nvault_set(g_Vault, vaultkey, vaultdata);
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]);
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;
}
// doti/paimti XP addaon by Drakeris
public cmd_doti_exp( id, level,cid )
{
if( ! cmd_access ( id, level, cid, 3 ) )
return PLUGIN_HANDLED;
new target[32], amount[21], reason[21];
read_argv( 1, target, 31 );
read_argv(2, amount, 20 );
read_argv( 3, reason, 20 );
new player = cmd_target( id, target, 8 );
if( ! player )
return PLUGIN_HANDLED;
new admin_name[32], player_name[32];
get_user_name( id, admin_name, 31 );
get_user_name( player, player_name, 31 );
new expnum = str_to_num( amount );
PlayerXP[player] += expnum;
switch( get_cvar_num ( "amx_show_activity" ) )
{
case 1: client_print( 0, print_chat, "ADMINAS: Dave %i Tasku %s.", expnum, player_name );
case 2: client_print( 0, print_chat, "ADMINAS %s: Dave %i tasku %s.", admin_name, expnum, player_name );
}
client_print( player, print_chat, "[%s] You received %i points. (Total: %d)", PREFIX, expnum, PlayerXP[player] );
SaveData( id );
return PLUGIN_CONTINUE;
}
public cmd_paimti_exp( id, level,cid ) {
if( ! cmd_access ( id, level, cid, 3 ) )
return PLUGIN_HANDLED;
new target[32], amount[21], reason[21];
read_argv( 1, target, 31 );
read_argv( 2, amount, 20 );
read_argv( 3, reason, 20 );
new player = cmd_target( id, target, 8 );
if( !player )
return PLUGIN_HANDLED;
new admin_name[32], player_name[32];
get_user_name( id, admin_name, 31 );
get_user_name( player, player_name, 31 );
new expnum = str_to_num( amount );
PlayerXP[player] -= expnum;
switch(get_cvar_num("amx_show_activity"))
{
case 1: client_print( 0, print_chat, "ADMINAS: ateme %i taskus is %s.", expnum, player_name );
case 2: client_print( 0, print_chat, "ADMINAS %s: ateme %i taskus is %s.", admin_name, expnum, player_name );
}
client_print( player, print_chat, "[%s] Tu praradai %i exp (isviso: %d)", PREFIX, expnum, PlayerXP[player] );
SaveData( id );
return PLUGIN_CONTINUE;
}
public skill(id)
{
if(PlayerClass[id] == CLASS_Rusher)
{
set_user_health(id, 120); // Jei tu esi homeris tau duoda 100hp
strip_user_weapons(id)
new Entity = give_item(id,"weapon_mp5navy");
cs_set_weapon_ammo(Entity, 35);
cs_set_user_bpammo(id, CSW_MP5NAVY, 100);
set_user_armor(id, 150);
set_user_gravity(id, 0.8 )
set_pev(id, pev_viewmodel2, "models/v_mp.mdl");
message_begin(MSG_ONE,iconstatus,{0,0,0},id);
write_byte(1); // status (0=hide, 1=show, 2=flash)
write_string("train_forward3"); // sprite name
write_byte(0); // red
write_byte(255); // green
write_byte(0); // blue
message_end();
}
else if(PlayerClass[id] == CLASS_Defender)
{
set_user_health(id, 125); // Jei tu esi Bartas tau duoda 125hp
set_user_gravity(id, 0.7 )
set_user_armor(id, 200);
strip_user_weapons(id)
fm_give_item(id,"weapon_shield")
fm_give_item(id,"weapon_p228")
message_begin(MSG_ONE,iconstatus,{0,0,0},id);
write_byte(1); // status (0=hide, 1=show, 2=flash)
write_string("cross"); // sprite name
write_byte(0); // red
write_byte(255); // green
write_byte(0); // blue
message_end();
}
else if(PlayerClass[id] == CLASS_Soldier)
{
set_user_health(id, 125) // Jei tu esi Soldieris tau duoda 125hp
set_pev(id, pev_viewmodel2, "models/he/v_hegrenade.mdl")
set_user_gravity(id, 0.9 )
strip_user_weapons(id)
give_item(id,"weapon_hegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 20);
message_begin(MSG_ONE,iconstatus,{0,0,0},id);
write_byte(1); // status (0=hide, 1=show, 2=flash)
write_string("d_skull"); // sprite name
write_byte(0); // red
write_byte(255); // green
write_byte(0); // blue
message_end();
}
else if(PlayerClass[id] == CLASS_Sniper)
{
set_user_health(id, 100); // Jei tu esi Sniper tau duoda 000hp
strip_user_weapons(id)
new Entity = give_item(id,"weapon_awp");
cs_set_weapon_ammo(Entity, 15);
cs_set_user_bpammo(id, CSW_AWP, 40);
message_begin(MSG_ONE,iconstatus,{0,0,0},id);
write_byte(1); // status (0=hide, 1=show, 2=flash)
write_string("d_awp"); // sprite name
write_byte(0); // red
write_byte(255); // green
write_byte(0); // blue
message_end();
}
}