PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#tryinclude <cstrike_pdatas>
#if !defined _cbaseentity_included
#assert Cstrike Pdatas and Offsets library required! Read the below instructions: \
1. Download it at forums.alliedmods.net/showpost.php?p=1712101#post1712101 \
2. Put it into amxmodx/scripting/include/ folder \
3. Compile this plugin locally, details: wiki.amxmodx.org/index.php/Compiling_Plugins_%28AMX_Mod_X%29 \
4. Install compiled plugin, details: wiki.amxmodx.org/index.php/Configuring_AMX_Mod_X#Installing
#endif
#define PLUGIN "Free Weapons Menu"
#define VERSION "0.0.1"
enum _:ammoIndexes
{
ammo_none,
ammo_338magnum = 1, // 30
ammo_762nato, // 90
ammo_556natobox, // 200
ammo_556nato, // 90
ammo_buckshot, // 32
ammo_45acp, // 100
ammo_57mm, // 100
ammo_50ae, // 35
ammo_357sig, // 52
ammo_9mm, // 120
ammo_flashbang, // 2
ammo_hegrenade, // 1
ammo_smokegrenade, // 1
ammo_c4 // 1
}
enum _:hudHide ( <<= 1 )
{
HUD_HIDE_CAL = 1,
HUD_HIDE_FLASH,
HUD_HIDE_ALL,
HUD_HIDE_RHA,
HUD_HIDE_TIMER,
HUD_HIDE_MONEY,
HUD_HIDE_CROSS,
HUD_DRAW_CROSS
}
new bool:g_bIsRestarting
new g_iWeaponsMenu
new HamHook:g_iHhCBasePlayerSpawnP
public plugin_init()
{
register_plugin( PLUGIN, VERSION, "ConnorMcLeod" )
register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0")
register_event("TextMsg", "Event_TextMsg_Restart", "a", "2&#Game_C", "2&#Game_w")
DisableHamForward( g_iHhCBasePlayerSpawnP = RegisterHam(Ham_Spawn, "player", "OnCBasePlayer_Spawn_Post", true) )
CreateWeaponsMenu()
}
public Event_TextMsg_Restart()
{
g_bIsRestarting = true
}
public Event_HLTV_New_Round()
{
static iRoundCount = 1
if( g_bIsRestarting )
{
g_bIsRestarting = false
iRoundCount = 1
DisableHamForward( g_iHhCBasePlayerSpawnP )
}
else if( ++iRoundCount == 3 )
{
EnableHamForward( g_iHhCBasePlayerSpawnP )
}
}
CreateWeaponsMenu()
{
g_iWeaponsMenu = menu_create("\yWeapons Menu", "Weapons_Menu_Handler")
menu_setprop(g_iWeaponsMenu, MPROP_NUMBER_COLOR, "\w");
menu_additem(g_iWeaponsMenu, "AK47 + Deagle + HE")
menu_additem(g_iWeaponsMenu, "M4A1 + Deagle + HE")
menu_additem(g_iWeaponsMenu, "AWP + Deagle + HE")
}
public OnCBasePlayer_Spawn_Post( id )
{
if( is_user_alive(id) )
{
menu_display( id , g_iWeaponsMenu )
}
}
public Weapons_Menu_Handler(id, menu, item)
{
if( is_user_alive(id) && (CS_TEAM_T <= cs_get_user_team(id) <= CS_TEAM_CT) )
{
switch( item )
{
case 0:
{
GiveUniqueWeapon(id, "weapon_ak47", CSW_AK47, 1, 90)
}
case 1:
{
GiveUniqueWeapon(id, "weapon_m4a1", CSW_M4A1, 1, 90)
}
case 2:
{
GiveUniqueWeapon(id, "weapon_awp", CSW_AWP, 1, 30)
}
default:
{
return
}
}
GiveUniqueWeapon(id, "weapon_deagle", CSW_DEAGLE, 1, 35)
GiveUniqueWeapon(id, "weapon_hegrenade", CSW_DEAGLE, 1, 1)
}
}
GiveUniqueWeapon(id, szName[], iId, iSlot, iBpAmmo)
{
if( !user_has_weapon(id, iId) )
{
if( get_pdata_cbase(id, m_rgpPlayerItems_CBasePlayer[ iSlot ]) )
{
RemovePlayerSlotsItem(id, iSlot)
}
give_item(id, szName)
}
cs_set_user_bpammo(id, iId, iBpAmmo)
}
RemovePlayerSlotsItem(id, iSlot)
{
if( !(1 <= iSlot <= 5) )
{
return 0
}
new iActiveItem = get_pdata_cbase(id, m_pActiveItem)
if( iSlot == 1 && get_pdata_bool(id, m_bHasShield) )
{
RemoveUserShield( id )
if( 2 <= ExecuteHamB(Ham_Item_ItemSlot, iActiveItem) <= 4 )
{
ExecuteHamB(Ham_Item_Deploy, iActiveItem)
}
return 1
}
new iItem, iWeapons = pev(id, pev_weapons)
while( ( iItem = get_pdata_cbase(id, m_rgpPlayerItems_CBasePlayer[iSlot]) ) > 0 )
{
if( iItem == iActiveItem )
{
ExecuteHamB(Ham_Weapon_RetireWeapon, iItem) // only to call GetNextBestWeapon so player still have a weapon in hands.
}
iWeapons &= ~get_pdata_int(iItem, m_iId, XO_CBASEPLAYERITEM)
ExecuteHamB(Ham_RemovePlayerItem, id, iItem)
ExecuteHamB(Ham_Item_Kill, iItem)
}
set_pev(id, pev_weapons, iWeapons)
if( iSlot == 1 )
{
set_pdata_int(id, m_fHasPrimary, 0)
}
else if( iSlot == 4 )
{
set_pdata_int(id, m_rgAmmo_CBasePlayer[ammo_flashbang], 0)
set_pdata_int(id, m_rgAmmo_CBasePlayer[ammo_hegrenade], 0)
set_pdata_int(id, m_rgAmmo_CBasePlayer[ammo_smokegrenade], 0)
}
return 1
}
RemoveUserShield( id )
{
if ( get_pdata_bool(id, m_bHasShield) )
{
set_pdata_bool(id, m_bHasShield, false)
set_pdata_int(id, m_fHasPrimary, 0)
set_pdata_bool(id, m_bUsesShield, false)
set_pev(id, pev_gamestate, 1)
new iHideHUD = get_pdata_int(id, m_iHideHUD)
if( iHideHUD & HUD_HIDE_CROSS )
{
set_pdata_int(id, m_iHideHUD, iHideHUD & ~HUD_HIDE_CROSS)
}
return 1
}
return 0
}