PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#define PLUGIN "WesternMod"
#define VERSION "1.0"
#define AUTHOR "TitANious"
#define my_menu 3.0
#define OFFSET_PRIMARYWEAPON 116
#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
#define MAX_PLAYER 41
#define mpPlayer 35
new const m_rgpPlayerItems_plr[] = {268, 269, 270, 271};
new const CUSTOM_SCOUT[] = "models/new/v_scout.mdl"
new const CUSTOM_AWP[] = "models/new/v_awp.mdl"
new const CUSTOM_m3[] = "models/new/v_m3.mdl"
new const CUSTOM_SG550[] = "models/new/v_sg550.mdl"
new const CUSTOM_p228[] = "models/new/v_p228.mdl"
new const CUSTOM_ELITE[] = "models/new/v_elite.mdl"
new const CUSTOM_xm1014[] = "models/new/v_xm1014.mdl"
new const CUSTOM_usp[] = "models/new/v_usp.mdl"
new const CUSTOM_fiveseven[] = "models/new/v_fiveseven.mdl"
new const CUSTOM_deagle[] = "models/new/v_deagle.mdl"
new const CUSTOM_g3sg1[] = "models/new/v_g3sg1.mdl"
new const CUSTOM_GLOCK18[] = "models/new/v_glock18.mdl"
new g_MaxPlayers;
new g_fwSpawn;
new gBuyzone;
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"
}
public plugin_precache()
{
g_fwSpawn = register_forward(FM_Spawn, "fw_Spawn")
gBuyzone = fm_create_entity("func_buyzone");
engfunc(EngFunc_SetSize, gBuyzone, gBuyzoneMin, gBuyzoneMax)
dllfunc(DLLFunc_Spawn, gBuyzone)
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
unregister_forward(FM_Spawn, g_fwSpawn)
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost")
register_forward(FM_Touch,"fwTouch");
RegisterHam(Ham_Item_Deploy, "weapon_scout", "Scout_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_awp", "awp_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_m3", "m3_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_sg550", "sg550_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_g3sg1", "g3sg1_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_deagle", "deagle_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_p228", "p228_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_elite", "elite_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_glock18", "glock18_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_xm1014", "xm1014_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_usp", "usp_Deploy", 1)
RegisterHam(Ham_Item_Deploy, "weapon_fiveseven", "fiveseven_Deploy", 1)
g_MaxPlayers = get_maxplayers();
}
public Scout_Deploy( iScout)
{
new id = get_pdata_cbase(iScout, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_SCOUT)
}
public awp_Deploy( iawp)
{
new id = get_pdata_cbase(iawp, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_AWP)
}
public m3_Deploy( im3)
{
new id = get_pdata_cbase(im3, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_m3)
}
public Sg550_Deploy( isg550)
{
new id = get_pdata_cbase(isg550, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_SG550)
}
public g3sg1_Deploy( ig3sg1)
{
new id = get_pdata_cbase(ig3sg1, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_g3sg1)
}
public deagle_Deploy( ideagle)
{
new id = get_pdata_cbase(ideagle, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_deagle)
}
public p228_Deploy( ip228)
{
new id = get_pdata_cbase(ip228, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_p228)
}
public elite_Deploy( ielite)
{
new id = get_pdata_cbase(ielite, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_ELITE)
}
public glock18_Deploy( iglock18)
{
new id = get_pdata_cbase(iglock18, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_GLOCK18)
}
public xm1014_Deploy( ixm1014)
{
new id = get_pdata_cbase(ixm1014, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_xm1014)
}
public usp_Deploy( iusp)
{
new id = get_pdata_cbase(iusp, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_usp)
}
public fiveseven_Deploy( ifiveseven)
{
new id = get_pdata_cbase(ifiveseven, mpPlayer, 4)
set_pev(id, pev_viewmodel2, CUSTOM_fiveseven)
}
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 fwHamPlayerSpawnPost(id)
{
set_task(my_menu, "WesternMod", id);
return HAM_IGNORED;
}
public StripPlayerWeapons(id)
{
ham_strip_weapon(id)
set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0)
}
public WesternMod(id)
{
new menu = menu_create("\rWestern Mod Menu:", "handleWesternMod")
menu_additem(menu, "\wLucky Luke", "1", 0)
menu_additem(menu, "\wBilly the Kid", "2", 0)
menu_additem(menu, "\wClint Eastwood", "3", 0)
menu_additem(menu, "\wJohnny Thunder", "4", 0)
menu_additem(menu, "\wPow Wow Smith", "5", 0)
menu_additem(menu, "\wWarren Olney", "6", 0)
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public handleWesternMod(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:
{
StripPlayerWeapons(id)
fm_give_item( id, "weapon_knife" )
fm_give_item( id, "weapon_awp" )
fm_give_item( id, "ammo_338magnum" )
fm_give_item( id, "ammo_338magnum" )
fm_give_item( id, "ammo_338magnum" )
fm_give_item( id, "ammo_338magnum" )
fm_give_item( id, "ammo_338magnum" )
fm_give_item( id, "weapon_deagle")
fm_give_item( id, "ammo_50ae")
fm_give_item( id, "ammo_50ae")
fm_give_item( id, "ammo_50ae")
fm_give_item( id, "ammo_50ae")
set_user_maxspeed(id, 300.0)
}
case 2:
{
StripPlayerWeapons(id)
fm_give_item( id, "weapon_knife" )
fm_give_item( id, "weapon_g3sg1" )
fm_give_item( id, "ammo_762nato")
fm_give_item( id, "ammo_762nato")
fm_give_item( id, "ammo_762nato")
fm_give_item( id, "ammo_762nato")
fm_give_item( id, "ammo_762nato")
fm_give_item( id, "ammo_762nato")
fm_give_item( id, "weapon_p228")
fm_give_item( id, "ammo_357sig")
fm_give_item( id, "ammo_357sig")
fm_give_item( id, "ammo_357sig")
fm_give_item( id, "ammo_357sig")
set_user_gravity ( id, 0.6)
}
case 3:
{
StripPlayerWeapons(id)
fm_give_item( id, "weapon_knife" )
fm_give_item( id, "weapon_sg550" )
fm_give_item( id, "ammo_556nato")
fm_give_item( id, "ammo_556nato")
fm_give_item( id, "ammo_556nato")
fm_give_item( id, "ammo_556nato")
fm_give_item( id, "ammo_556nato")
fm_give_item( id, "weapon_elite")
fm_give_item( id, "ammo_9mm")
fm_give_item( id, "ammo_9mm")
fm_give_item( id, "ammo_9mm")
fm_give_item( id, "ammo_9mm")
set_user_armor( id, 255)
}
case 4:
{
StripPlayerWeapons(id)
fm_give_item( id, "weapon_knife" )
fm_give_item( id, "weapon_scout" )
fm_give_item( id, "ammo_762nato" )
fm_give_item( id, "ammo_762nato" )
fm_give_item( id, "ammo_762nato" )
fm_give_item( id, "ammo_762nato" )
fm_give_item( id, "ammo_762nato" )
fm_give_item( id, "weapon_glock18")
fm_give_item( id, "ammo_9mm")
fm_give_item( id, "ammo_9mm")
fm_give_item( id, "ammo_9mm")
fm_give_item( id, "ammo_9mm")
set_user_health( id, 255)
}
case 5:
{
StripPlayerWeapons(id)
fm_give_item( id, "weapon_knife" )
fm_give_item( id, "weapon_m3")
fm_give_item( id, "ammo_buckshot")
fm_give_item( id, "ammo_buckshot")
fm_give_item( id, "ammo_buckshot")
fm_give_item( id, "ammo_buckshot")
fm_give_item( id, "weapon_usp")
fm_give_item( id, "ammo_45acp")
fm_give_item( id, "ammo_45acp")
fm_give_item( id, "ammo_45acp")
fm_give_item( id, "ammo_45acp")
set_user_armor( id, 255)
set_user_health( id, 255)
set_user_maxspeed(id, 200.0)
}
case 6:
{
StripPlayerWeapons(id)
fm_give_item( id, "weapon_knife" )
fm_give_item( id, "weapon_xm1014")
fm_give_item( id, "ammo_buckshot")
fm_give_item( id, "ammo_buckshot")
fm_give_item( id, "ammo_buckshot")
fm_give_item( id, "ammo_buckshot")
fm_give_item( id, "weapon_fiveseven")
fm_give_item( id, "ammo_57mm")
fm_give_item( id, "ammo_57mm")
fm_give_item( id, "ammo_57mm")
fm_give_item( id, "ammo_57mm")
set_user_armor( id, 255)
set_user_health( id, 255)
set_user_maxspeed(id, 200.0)
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public fwTouch( ent , id )
{
if ( !( 1 <= id <= g_MaxPlayers ) || !pev_valid( ent ) || !( pev( ent , pev_flags ) & FL_ONGROUND ) )
return FMRES_IGNORED;
//This will block picking up all weapons except backpack (c4)
static szEntModel[32];
pev( ent , pev_model , szEntModel , 31 );
return equal( szEntModel , "models/w_backpack.mdl" ) ? FMRES_IGNORED : FMRES_SUPERCEDE;
}
stock ham_strip_weapon(id)
{
for(new i; i<sizeof(m_rgpPlayerItems_plr); i++)
{
new iWeapon;
iWeapon = get_pdata_cbase(id, m_rgpPlayerItems_plr[i], 5);
while( pev_valid( iWeapon ) )
{
new szWeapon[20];
pev(iWeapon, pev_classname, szWeapon, charsmax(szWeapon));
new wId = get_weaponid(szWeapon);
if(!wId) return 0;
new wEnt;
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",szWeapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0;
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
ExecuteHamB(Ham_Item_Kill,wEnt);
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));
}
}
return 1;
}
stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
if (!pev_valid(ent))
return 0
new Float:origin[3]
pev(index, pev_origin, origin)
set_pev(ent, pev_origin, origin)
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, ent)
new save = pev(ent, pev_solid)
dllfunc(DLLFunc_Touch, ent, index)
if (pev(ent, pev_solid) != save)
return ent
engfunc(EngFunc_RemoveEntity, ent)
return -1
}