PHP Code:
#include amxmodx
#include amxmisc
#include fun
#include cstrike
#include hamsandwich
#include fakemeta
// Here define admin Flag for use menu
#define ADMIN_FLAG ADMIN_RCON
// Here define rute of models
new const RutePrecache[] = "models/new_guns";
new kHasWeapons[ 33 ], kItemInUse[ 33 ];
new P_INFO[][] = { "Admin Gun Menu" , "1.0" , "kikizon" };
enum _:PACKDATA { NAME[ 60 ] , WPNENT1[ 22 ], WPNCSW1, BPAMMO1, VMDL1[20], PMDL1[20], WPNENT2[ 22 ], WPNCSW2, BPAMMO2, VMDL2[20], PMDL2[20] }
new const Weapons[][PACKDATA] =
{
{ "Ak47 + Deagle", "weapon_ak47", CSW_AK47, 90, "v_ak47", "p_ak47", "weapon_deagle", CSW_DEAGLE, 35, "v_deagle", "p_deagle" },
{ "M4A1 + Deagle", "weapon_m4a1", CSW_M4A1, 90, "v_m4a1", "p_m4a1", "weapon_deagle", CSW_DEAGLE, 35, "v_deagle", "p_deagle" }
};
new const WEAPONENTNAMES[][] =
{
"", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90"
};
public plugin_precache()
{
static i, buffer[ 128 ];
for( i = 0 ; i < sizeof Weapons ; ++i )
{
formatex( buffer, 127, "%s/%s.mdl", RutePrecache, Weapons[i][VMDL1] );
precache_model( buffer );
formatex( buffer, 127, "%s/%s.mdl", RutePrecache, Weapons[i][VMDL2] );
precache_model( buffer );
formatex( buffer, 127, "%s/%s.mdl", RutePrecache, Weapons[i][PMDL1] );
precache_model( buffer );
formatex( buffer, 127, "%s/%s.mdl", RutePrecache, Weapons[i][PMDL2] );
precache_model( buffer );
}
}
public plugin_init()
{
register_plugin( P_INFO[ 0 ] , P_INFO[ 1 ] , P_INFO[ 2 ] );
RegisterHam( Ham_Spawn , "player" , "ham_PlayerSpawnPost" , true );
static i;
for (i = 1; i < sizeof WEAPONENTNAMES; i++)
if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "ham_ItemDeployPost", 1);
register_clcmd( "say /admingm" , "clcmdAdmingm" );
}
public clcmdAdmingm( index )
{
if( !(get_user_flags( index ) & ADMIN_FLAG) )
{
client_print( index, print_chat, "[ AGM ] You need be admin" );
return;
}
static i, menu; menu = menu_create( "\y[ AGM ] \wItems:", "menu_wpn" );
for( i = 0 ; i < sizeof Weapons ; ++i )
menu_additem( menu, Weapons[i][NAME], "" );
menu_display( index, menu );
}
public menu_wpn( index , menu , item )
{
if( !is_user_alive( index ) || item == MENU_EXIT )
{
menu_destroy( menu );
return PLUGIN_HANDLED;
}
kHasWeapons[ index ] = true;
kItemInUse[ index ] = item;
give_item( index, Weapons[item][ WPNENT1 ] );
give_item( index, Weapons[item][ WPNENT2 ] );
cs_set_user_bpammo( index, Weapons[item][WPNCSW1], Weapons[item][BPAMMO1] );
cs_set_user_bpammo( index, Weapons[item][WPNCSW2], Weapons[item][BPAMMO2] );
menu_destroy( menu );
return PLUGIN_HANDLED;
}
public ham_PlayerSpawnPost( index ) kHasWeapons[ index ] = false;
public ham_ItemDeployPost(wpn)
{
static index; index = get_weapon_ent_owner(wpn);
if (!pev_valid(index)) return;
static WeaponID; WeaponID = cs_get_weapon_id(wpn);
if(!is_user_alive( index ) || !kHasWeapons[ index ] || kItemInUse[ index ] < 0) return;
static buffer[128];
if( WeaponID == Weapons[ kItemInUse[index] ][ WPNCSW1 ] )
{
formatex( buffer, 127, "%s/%s.mdl", RutePrecache, Weapons[kItemInUse[index]][VMDL1] );
set_pev(index, pev_viewmodel2, buffer );
formatex( buffer, 127, "%s/%s.mdl", RutePrecache, Weapons[kItemInUse[index]][PMDL1] );
set_pev(index, pev_weaponmodel2, buffer );
}
if( WeaponID == Weapons[ kItemInUse[index] ][ WPNCSW2 ] )
{
formatex( buffer, 127, "%s/%s.mdl", RutePrecache, Weapons[kItemInUse[index]][VMDL2] );
set_pev(index, pev_viewmodel2, buffer );
formatex( buffer, 127, "%s/%s.mdl", RutePrecache, Weapons[kItemInUse[index]][PMDL2] );
set_pev(index, pev_weaponmodel2, buffer );
}
}
stock get_weapon_ent_owner(ent)
{
if (pev_valid(ent) != 2)
return -1;
return get_pdata_cbase(ent, 41, 4);
}