PHP Code:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <amxmisc>
#define TASK_MENU_DISLPAY_TIME 5.0
#define OFFSET_PRIMARYWEAPON 116
#define OFFSET_PRIMARYWEAPON 116
#define OFFSET_C4_SLOT 372
#define PREFIX "[KMX]"
#define MULTIPLY 1.5
new g_Hudhelp
new g_MaxPlayers;
new g_fwSpawn;
new gBuyzone;
new g_Enable;
new g_GameName;
new g_ExtraDamage[33];
new healthbonus = 25 // Your value
new Float:gBuyzoneMin[3] = {-8192.0, -8192.0, -8192.0}
new Float:gBuyzoneMax[3] = {-8191.0, -8191.0, -8191.0}
new const entitys[][] =
{
"func_buyzone"
}
new const iWeapBits =
1 << CSW_KNIFE |
1 << CSW_HEGRENADE;
#pragma unused iWeapBits // remove this line if you will use this var
new g_iMaxPlayers;
public plugin_init ( )
{
register_plugin("Knife Mod X", "1.0.0", "malec321");
unregister_forward(FM_Spawn, g_fwSpawn)
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
register_forward(FM_GetGameDescription,"fw_GameDesc");
set_task(1.0, "mod_ihelp", 0, "", 0, "b");
register_menucmd(register_menuid("Menu"), 1023, "KM_Menu");
register_clcmd("say /kmhelp", "help_motd");
register_clcmd("say kmhelp", "help_motd");
register_clcmd("say_team /kmhelp", "help_motd");
register_clcmd("say_team kmhelp", "help_motd");
register_clcmd("help", "help_motd");
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");
register_clcmd("drop", "blockDrop")
register_forward(FM_Touch,"fwTouch");
g_MaxPlayers = get_maxplayers();
g_Enable = register_cvar("amx_km_enable", "1");
g_GameName = register_cvar("amx_gamename", "Knife Mod X");
g_Hudhelp = register_cvar("amx_hudhelp", "1");
RegisterHam ( Ham_TakeDamage, "player", "ham_player_damage" );
g_fwSpawn = register_forward(FM_Spawn, "fw_Spawn")
g_iMaxPlayers = get_maxplayers( );
gBuyzone = create_entity("func_buyzone");
engfunc(EngFunc_SetSize, gBuyzone, gBuyzoneMin, gBuyzoneMax)
dllfunc(DLLFunc_Spawn, gBuyzone)
}
public ham_player_damage ( e_Victim, e_Inflictor, e_Attacker, Float:f_Damage, m_DamageBits )
{
if ( 1 <= e_Attacker <= g_iMaxPlayers && g_ExtraDamage[e_Attacker] && m_DamageBits && ( DMG_NEVERGIB | DMG_BULLET ) )
{
pev ( e_Victim, pev_dmg_take, f_Damage );
SetHamParamFloat ( 4, f_Damage * MULTIPLY );
}
}
public fw_Spawn(entity)
{
if (!pev_valid(entity)) return FMRES_IGNORED;
new classname[32]
pev(entity, pev_classname, classname, sizeof classname - 1)
for (new i = 0; i < sizeof entitys; i++)
{
if (equal(classname, entitys[i]))
{
engfunc(EngFunc_RemoveEntity, entity)
return FMRES_SUPERCEDE;
}
}
return FMRES_IGNORED;
}
public fwTouch( ent , id )
{
if ( !( 1 <= id <= g_MaxPlayers ) || !pev_valid( ent ) || !( pev( ent , pev_flags ) & FL_ONGROUND ) )
return FMRES_IGNORED;
static szEntModel[32];
pev( ent , pev_model , szEntModel , 31 );
return equal( szEntModel , "models/w_backpack.mdl" ) ? FMRES_IGNORED : FMRES_SUPERCEDE;
}
public blockDrop() return PLUGIN_HANDLED
StripUserWeapons(id)
{
new iC4Ent = get_pdata_cbase(id, OFFSET_C4_SLOT)
if( iC4Ent > 0 )
{
set_pdata_cbase(id, OFFSET_C4_SLOT, FM_NULLENT)
}
strip_user_weapons(id)
set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0)
set_user_footsteps (id, 0)
set_user_rendering(id,kRenderFxGlowShell,0,0, 0,kRenderTransAlpha,255);
if( iC4Ent > 0 )
{
entity_set_int(id, EV_INT_weapons, entity_get_int(id, EV_INT_weapons) | (1<<CSW_C4))
set_pdata_cbase(id, OFFSET_C4_SLOT, iC4Ent)
cs_set_user_bpammo(id, CSW_C4, 1)
cs_set_user_plant(id, 1)
}
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
{
if(!is_user_admin(id))
set_task(3.0, "minmodel_enforcer",id,_,_,"b");
}
}
public minmodel_enforcer(id)
{
client_cmd(id, "cl_minmodels 0")
}
public fwHamPlayerSpawnPost(id)
{
if(get_pcvar_num(g_Enable) == 0)
return HAM_SUPERCEDE;
{
if(task_exists(id))
remove_task(id)
}
cs_reset_user_model(id)
strip_user_weapons(id)
give_item(id, "weapon_knife")
set_user_hitzones(0, 0, 255)
set_task(TASK_MENU_DISLPAY_TIME, "choose_menu", id);
set_task(0.2, "minmodel_enforcer",id,_,_,"b")
set_user_rendering(id,kRenderFxGlowShell,0,0, 0,kRenderTransAlpha,255);
return HAM_IGNORED;
}
public client_disconnect(id) {
if(task_exists(id))
remove_task(id);
}
public choose_menu(id)
{
if(!is_user_alive(id) && is_user_bot(id) && is_user_hltv(id))
return PLUGIN_HANDLED;
new menu = menu_create("\rChoose your Hero!", "We_Menu")
new CallBack = menu_makecallback("MenuCallBack");
menu_addtext(menu, "\rChoose one!", 0)
menu_additem(menu, "\wHealth Class", "1", 0)
menu_additem(menu, "\wGravity Class", "2", 0)
menu_additem(menu, "\wStealth Class", "3", 0)
menu_additem(menu, "\wGodmode Class", "4", 0)
menu_additem(menu, "\wShield Class", "5", 0)
menu_additem(menu, "\wGrenade Class(HE)", "6", 0)
menu_additem(menu, "\wSpeed Class", "7", 0)
menu_additem(menu, "\wExtra DMG Class", "8", 0)
menu_additem(menu, "\wRegen Class", "9", 0)
menu_additem(menu, "\wHeadshot Class", "10", 0)
menu_additem(menu, "\wUltimate Class\r[ADMIN]", "11", 0, CallBack)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
return PLUGIN_HANDLED;
}
public MenuCallBack(id, menu, item)
{
return is_user_admin(id) ? ITEM_ENABLED : ITEM_DISABLED;
}
//Class
public destroy_menu(id, menu)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
public KM_Menu(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
set_task(15.0, "destroy_menu", id)
new data[6], iName[64]
new access, callback
new g_ExtraDamage[ 33 ];
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1: // Health Class
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1)
give_item ( id, "weapon_knife" )
set_user_health( id, 150 )
client_print(id, print_chat,"%s You have chosen the Health Class.", PREFIX);
}
case 2: // Gravity Class
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1)
give_item ( id, "weapon_knife" )
set_user_gravity( id, 1.0 / 300 )
client_print(id, print_chat,"%s You have chosen the Gravity Class.", PREFIX);
}
case 3:// Stealth Class
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1);
give_item ( id, "weapon_knife" )
set_user_rendering(id,kRenderFxGlowShell,0,0, 0,kRenderTransAlpha,36);
client_print(id, print_chat,"%s You have chosen the Stealth Class.", PREFIX);
}
case 4:// Godmode Class
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1)
give_item ( id, "weapon_knife" )
set_user_godmode( id, 1 )
set_task(5.0, "clear_godmode", id);
client_print(id, print_chat,"%s You have chosen the Godmode Class.", PREFIX);
}
case 5:// Invis Shield Class
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1)
give_item ( id, "weapon_knife" )
give_item ( id, "weapon_shield" )
client_print(id, print_chat,"%s You have chosen the Shield Class (INVISIBLE SHIELD).", PREFIX);
}
case 6:// Grenade Class ( HE )
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1)
give_item ( id, "weapon_knife" )
give_item ( id, "weapon_hegrenade" )
cs_set_user_bpammo (id, CSW_HEGRENADE, 2)
client_print(id, print_chat,"%s You have the Grenade Class.", PREFIX);
}
case 7:// Speed Class
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1)
give_item ( id, "weapon_knife")
set_user_maxspeed(id, 1.0 / 320)
client_print(id, print_chat, "%s You have chosen the Speed Class.", PREFIX);
}
case 8:// Extra Dmg Class
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1)
give_item ( id, "weapon_knife" )
g_ExtraDamage[ id ] = 1;
client_print(id, print_chat,"%s You have chosen the Extra Damage Class.", PREFIX);
}
case 9:// Regen Class
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1)
give_item (id, "weapon_knife")
set_user_health(id, 75)
set_task(1.0, "hp_regen", id)
client_print(id, print_chat, "%s You have chosen the Regenerate Class.", PREFIX)
}
case 10:// Hitbox Class
{
StripUserWeapons(id)
cs_set_user_defuse(id, 1)
give_item (id, "weapon_knife")
set_user_hitzones(0, id, 2)
client_print(id, print_chat, "%s You have chosen the Hitbox Class(CAN ONLY BE HIT IN HEAD)", PREFIX)
}
case 11:// Ultimate Class [ADMIN ONLY]
{
StripUserWeapons(id)
cs_set_user_defuse (id, 1)
give_item (id, "weapon_knife")
give_item (id, "weapon_hegreande")
set_user_health (id, 150)
set_user_armor (id, 150)
set_user_gravity (id, 1.0 / 450)
set_user_maxspeed (id, 1.0 / 300)
set_user_rendering(id,kRenderFxGlowShell,0,0, 0,kRenderTransAlpha,36);
client_print(id, print_chat,"%s You have chosen the Ultimate Class [ADMIN].", PREFIX);
}
}
return 0;
}
public remove_godmode(id)
{
set_user_godmode( id, 0);
set_task(3.0, "make_godmode", id);
set_hudmessage(255,255,255,0.75,0.05,0, 1.0, 1.0, 0.1, 0.2, 13);
show_hudmessage(id, "You are NOT in godmode!^n RUN! .")
}
public make_godmode(id)
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
set_task(5.0, "remove_godmode", id);
set_hudmessage(255,255,255,0.75,0.05,0, 1.0, 1.0, 0.1, 0.2, 13);
show_hudmessage(id, "You are in godmode!")
}
public hp_regen(id)
{
new regenadd = 2;
new health = get_user_health(id);
if(health < healthbonus)
set_user_health(id, health + regenadd);
set_task(5.0, "hp_regen", id);
}
//Describe Game
public fw_GameDesc()
{
if(get_pcvar_num(g_Enable) == 0)
return FMRES_IGNORED;
new gamename[32];
get_pcvar_string(g_GameName, gamename, 31);
forward_return(FMV_STRING, gamename);
return FMRES_SUPERCEDE;
}
//Hug MSG
public mod_ihelp()
{
if(get_pcvar_num(g_Hudhelp) == 1)
{
set_hudmessage(42, 255, 0, 0.0, 0.87, 0, 6.0, 14.8);
show_hudmessage(0, "Knife Mod X^n Version 1.0^nBy AleX");
}
return PLUGIN_CONTINUE;
}
//help motd..
public help_motd(id)
{
const SIZE = 2048;
new msg[SIZE+1],len = 0;
len += formatex(msg[len], SIZE - len, "<html><body style=^"background-color:blue;color:black;font-size:16^"");
len += formatex(msg[len], SIZE - len, "Knife Mod X<br>");
len += formatex(msg[len], SIZE - len, "Health Cass:<br>");
len += formatex(msg[len], SIZE - len, "Has 150 HP.<br>");
len += formatex(msg[len], SIZE - len, "Gravity Class:<br>");
len += formatex(msg[len], SIZE - len, "Has 300 Gravity ( LOW ).<br>");
len += formatex(msg[len], SIZE - len, "Stealth Class:<br>");
len += formatex(msg[len], SIZE - len, "You can bearly see him!<br>");
len += formatex(msg[len], SIZE - len, "Godmode Class:<br>");
len += formatex(msg[len], SIZE - len, "Goes godmode for 3 seconds and 5 seconds without it.<br>");
len += formatex(msg[len], SIZE - len, "Shield Class:<br>");
len += formatex(msg[len], SIZE - len, "Gets a shield that you cant see but others can.<br>");
len += formatex(msg[len], SIZE - len, "Grenade Class:<br>");
len += formatex(msg[len], SIZE - len, "Gets a HE Grenade!<br>");
len += formatex(msg[len], SIZE - len, "Speed Class:<br>");
len += formatex(msg[len], SIZE - len, "Has 310 Speed ( FAST )!<br>");
len += formatex(msg[len], SIZE - len, "Extra Dmg Class:<br>");
len += formatex(msg[len], SIZE - len, "Has more than normal knife damage.<br>");
len += formatex(msg[len], SIZE - len, "Regenerate Class:<br>");
len += formatex(msg[len], SIZE - len, "Starts with 75 HP and regenerates to 125 slowly.<br>");
len += formatex(msg[len], SIZE - len, "Hitbox Class:<br>");
len += formatex(msg[len], SIZE - len, "Can only get hit in the head.<br>");
len += formatex(msg[len], SIZE - len, "Ultimate Class:<br>");
len += formatex(msg[len], SIZE - len, "Pretty much has everything[ADMIN ONLY]<br>");
len += formatex(msg[len], SIZE - len, "</body></html>");
show_motd(id, msg, "Knife Mod X HELP");
return PLUGIN_CONTINUE;
}
Ive been workin on this plugin and so far everything works the /kmhelp just one problem.. The menu doesnt open on round start =/