PHP Code:
#include <amxmodx>
#include <nvault>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#define MAXCLASSES 8
#define PREFIX "ExterminationMod"
#define OFFSET_CLIPAMMO 51
#define OFFSET_LINUX_WEAPONS 4
#define fm_cs_set_weapon_ammo(%1,%2) set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
#define m_pActiveItem 373
enum {
PLAYERLEVEL_1 ,
PLAYERLEVEL_2 ,
PLAYERLEVEL_3 ,
PLAYERLEVEL_4 ,
PLAYERLEVEL_5 ,
PLAYERLEVEL_6 ,
PLAYERLEVEL_7
}
enum {
CLASS_NONE = 0 ,
CLASS_SURVIVOR ,
CLASS_NEMESIS ,
CLASS_DEPREDADOR ,
CLASS_ZOMBIE ,
CLASS_BOOMBER ,
CLASS_ALIEN ,
CLASS_PERSONAJEPERFECTO
}
new const CLASSES [ MAXCLASSES ][] = {
"None" ,
"Survivor",
"Nemesis" ,
"Depredador" ,
"Zombie" ,
"Boomber" ,
"Alien" ,
"PersonajePerfecto"
};
new const LEVELS [20] = {
100 ,
200 ,
400 ,
800 ,
1600 ,
3200 ,
6400
};
const NOCLIP_WPN_BS = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new const g_MaxClipAmmo[] = {
0,
13, //CSW_P228
0,
10, //CSW_SCOUT
0, //CSW_HEGRENADE
7, //CSW_XM1014
0, //CSW_C4
30,//CSW_MAC10
30, //CSW_AUG
0, //CSW_SMOKEGRENADE
15,//CSW_ELITE
20,//CSW_FIVESEVEN
25,//CSW_UMP45
30, //CSW_SG550
35, //CSW_GALIL
25, //CSW_FAMAS
12,//CSW_USP
20,//CSW_GLOCK18
10, //CSW_AWP
30,//CSW_MP5NAVY
100,//CSW_M249
8, //CSW_M3
30, //CSW_M4A1
30,//CSW_TMP
20, //CSW_G3SG1
0, //CSW_FLASHBANG
7, //CSW_DEAGLE
30, //CSW_SG552
30, //CSW_AK47
0, //CSW_KNIFE
50//CSW_P90
}
new bool:speed1[33]
new PlayerXP [ 33 ], PlayerLevel [ 33 ], PlayerClass [ 33 ];
new gCvar_Kill , gCvar_Knife , gCvar_HS , gCvar_Enable , g_Vault ;
new g_msgSayText
new FirstMenu[33]
new const warn1[] = { "warn1.wav" }
public plugin_precache ()
{
precache_model("models/player/survivor/survivor.mdl")
precache_model("models/player/nemesis/nemesis.mdl")
precache_model("models/player/depredador/depredador.mdl")
precache_model("models/player/zombie/zombie.mdl")
precache_model("models/player/boomber/boomber.mdl")
precache_model("models/player/alien/alien.mdl")
precache_model("models/player/personajeperfecto/personajeperfecto.mdl")
precache_sound("warn1.wav")
}
public plugin_init ()
{
register_plugin ( "ExterminationMod" , "1.0" , "fxfighter" );
register_event ( "DeathMsg" , "eDeath" , "a" );
register_event ( "ResetHUD" , "skill" , "be" );
register_event("CurWeapon","change_weapon","be","1=1")
register_event("CurWeapon" , "Event_CurWeapon" , "be" , "1=1" )
gCvar_Enable = register_cvar ( "xp_save" , "1" );
gCvar_Kill = register_cvar ( "xp_per_kill" , "2" );
gCvar_HS = register_cvar ( "xp_hs_bonus" , "5" );
gCvar_Knife = register_cvar ( "xp_Knife_bonus" , "10" );
g_Vault = nvault_open ( "ExterminationMod" );
g_msgSayText = get_user_msgid("SayText")
register_clcmd("chooseteam", "blockteam")
register_clcmd("jointeam", "blockteam")
register_clcmd ( "say /class" , "ElegirClase" );
register_clcmd ( "say_team /class" , "ElegirClase" );
register_clcmd ( "say /exp" , "ShowHud" );
register_clcmd ( "say_team /exp" , "ShowHud" );
RegisterHam( Ham_Spawn, "player", "fwPlayerSpawnPost", 1 );
}
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] Felicidades! Tu eres nivel %i %s!" , PREFIX , PlayerLevel [ attacker ], CLASSES [ PlayerClass [ attacker ]]);
PlayerLevel [ attacker ] += 1 ;
}
ShowHud(attacker);
SaveData(attacker);
}
public ShowHud ( id )
{
set_hudmessage(255, 0, 0, -1.0, 0.0, 0, 6.0, 12.0);
show_hudmessage(id, "[Nivel]: %i^n------------^n[Exp]: %i^n------------^n[Clase]: %s^n------------" , PlayerLevel [ id ], PlayerXP [ id ], CLASSES [ PlayerClass [ id ]]);
}
public ExterminationMenu (id)
{
if(FirstMenu[id])
{
new menu = menu_create ( "\rExterminationMod Menu" , "menu_handler" );
menu_additem ( menu , "\yElegir Tu Personaje" , "1" , 0 );
menu_setprop ( menu , MPROP_EXIT , MEXIT_ALL );
menu_display ( id , menu , 0 );
return PLUGIN_CONTINUE ;
}
{
FirstMenu[id] = true
return PLUGIN_CONTINUE ;
}
}
public menu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
ElegirClase(id);
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
ElegirClase(id)
{
new menu = menu_create("\yElige Tu Clase", "submenu_handler")
menu_additem ( menu , "\ySurvivor \d Nivel 1 Requerido" , "1" , 0 );
menu_additem ( menu , "\yNemesis \d Nivel 2 Requerido" , "2" , 0 );
menu_additem ( menu , "\yDepredador \d Nivel 3 Requerido" , "3" , 0 );
menu_additem ( menu , "\yZombie \d Nivel 4 Requerido" , "4" , 0 );
menu_additem ( menu , "\yBoomber \d Nivel 5 Requerido" , "5" , 0 );
menu_additem ( menu , "\yAlien \d Nivel 6 Requerido" , "6" , 0 );
menu_additem ( menu , "\yPersonajePerfecto \d Nivel 7 Requerido" , "7" , 0 );
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
}
public submenu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
if( is_user_connected(id) )
ExterminationMenu(id);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch (key)
{
case 1:
{
strip_user_weapons(id)
give_item(id, "weapon_knife")
give_item(id, "weapon_m249")
cs_set_user_bpammo (id, CSW_M249, 200)
cs_set_user_model(id, "models/player/survivor/survivor.mdl")
client_cmd(id, "spk %s", warn1)
ChatColor(id, "Has Elegido A La Clase: .::Survivor::.")
new iWeapon = read_data(2)
if( !( NOCLIP_WPN_BS & (1<<iWeapon) ) )
{
cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ iWeapon ] )
}
}
case 2:
{
strip_user_weapons(id)
give_item(id, "weapon_knife")
set_user_health(id, 2000)
set_user_maxspeed(id, 320.0)
cs_set_user_model(id, "nemesis")
client_cmd(id, "spk %s", warn1)
ChatColor(id, "!gHas Elegido A La Clase: .::Nemesis::.")
}
case 3:
{
strip_user_weapons(id)
give_item(id, "weapon_knife")
give_item(id, "weapon_m241")
set_user_armor(id, 100)
set_user_gravity(id, 0.5)
cs_set_user_model(id, "depredador")
client_cmd(id, "spk %s", warn1)
ChatColor(id, "!g/Has Elegido A La Clase: .::Depredador::.")
}
case 4:
{
strip_user_weapons(id)
set_user_health(id, 500)
set_user_maxspeed(id, 400.0)
cs_set_user_model(id, "zombie")
client_cmd(id, "spk %s", warn1)
ChatColor(id, "!gHas Elegido A La Clase: .::Zombie::.")
}
case 5:
{
strip_user_weapons(id)
give_item(id, "weapon_knife")
set_user_health(id, 1500)
set_user_armor(id, 200)
client_cmd(id, "spk %s", warn1)
ChatColor(id, "!gHas Elegido A La Clase: .::Boomber::.")
}
case 6:
{
strip_user_weapons(id)
give_item(id, "weapon_knife")
set_user_health(id, 250)
set_user_armor(id, 100)
set_user_maxspeed(id, 350.0)
client_cmd(id, "spk %s", warn1)
ChatColor(id, "!gHas Elegido A La Clase: .::Alien::.")
}
case 7:
{
strip_user_weapons(id)
give_item(id, "weapon_knife")
set_user_health(id, 2500)
set_user_armor(id, 200)
set_user_maxspeed(id, 400.0)
set_user_gravity(id, 0.5)
client_cmd(id, "spk %s", warn1)
ChatColor(id, "!gHas Elegido A La Clase: .::PersonajePerfecto::.")
}
}
menu_destroy(menu);
ExterminationMenu(id);
return PLUGIN_HANDLED;
}
public change_weapon(id)
{
set_task(0.1, "change_weapon", id)
if(speed1[id])
{
set_user_maxspeed(id, 700.0)
}
}
public blockteam(id)
{
if(cs_get_user_team(id) == CS_TEAM_SPECTATOR || cs_get_user_team(id) == CS_TEAM_UNASSIGNED)
return PLUGIN_CONTINUE;
else
{
ExterminationMenu(id)
}
return PLUGIN_HANDLED;
}
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 ;
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
if (id) players[0] = id
else get_players(players, count, "ch")
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
Sorry For My Bad English , Use google translator.