- #include < amxmodx > 
- #include < engine > 
- #include < fakemeta > 
- #include < hamsandwich > 
- #include < cstrike > 
- #include < fun > 
-   
- #pragma semicolon 1 
-   
- #define MaxWeapon 11 
- #define MaxAwp 3 
- #define MinPlayer 4 
-   
- new const g_sPrefix[ ] = ""; 
-   
- new const g_iWeapons[ MaxWeapon ] = { 22, 28, 18, 3, 8, 15, 14, 19, 5, 21, 20 }; 
- new const g_iMaxAmmo[ 31 ] = { 0, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100 }; 
- new g_sWeapon[ MaxWeapon ][ 16 ], g_sWeaponFull[ MaxWeapon ][ 32 ], g_iWPCt, g_iWPTe; 
-   
- new bool: g_bWeaponMenu[ 33 ], bool: g_bC4; 
-   
- public plugin_init( ) 
- { 
-     register_plugin( "WeaponMenu", "1.0", "Demon" ); 
-     register_cvar( "WeaponMenu", "By Demon", FCVAR_SERVER ); 
-     
-     register_dictionary( "WeaponMenu.txt" ); 
-     
-     new sWeapName[ 32 ], sLeft[ 16 ], sRight[ 16 ]; 
-     
-     for ( new i; i < MaxWeapon; ++i ) 
-     { 
-         get_weaponname( g_iWeapons[ i ], sWeapName, 31 ); 
-         RegisterHam( Ham_Weapon_Reload, sWeapName, "Reload_Post", 1 ); 
-         
-         copy( g_sWeaponFull[ i ], 31, sWeapName ); 
-         
-         strtok( sWeapName, sRight, 15, sLeft, 15, '_' ); 
-                 
-         strtoupper( sLeft ); 
-         copy( g_sWeapon[ i ], 15, sLeft ); 
-     } 
-     RegisterHam( Ham_Weapon_Reload, "weapon_deagle", "Reload_Post", 1 ); 
-     
-     RegisterHam( Ham_Spawn, "player", "PlayerSpawn", 1 ); 
-     
-     register_event( "HLTV", "eNewRound", "a", "1=0", "2=0" ); 
-     
-     new iEntity = create_entity( "info_map_parameters" ); 
-     DispatchKeyValue( iEntity, "buying", "3" ); 
-     DispatchSpawn( iEntity ); 
-     
-     iEntity = create_entity( "player_weaponstrip" ); 
-     DispatchKeyValue( iEntity, "targetname", "stripper" ); 
-     DispatchSpawn( iEntity ); 
-     
-     iEntity = create_entity( "game_player_equip" ); 
-     DispatchKeyValue( iEntity, "weapon_knife"  , "1" ); 
-     DispatchKeyValue( iEntity, "targetname", "equipment" ); 
-     DispatchSpawn( iEntity ); 
-     
-     iEntity = create_entity( "multi_manager" ); 
-     DispatchKeyValue( iEntity, "equipment" , "0.3" ); 
-     DispatchKeyValue( iEntity, "stripper"  , "0.2" ); 
-     DispatchKeyValue( iEntity, "targetname", "game_playerspawn" ); 
-     DispatchKeyValue( iEntity, "spawnflags", "1" ); 
-     DispatchSpawn( iEntity ); 
-     
-     register_concmd( "say /gun", "cmdWeaponMenu" ); 
-     register_concmd( "say /fegyver", "cmdWeaponMenu" ); 
-     register_concmd( "say_team /gun", "cmdWeaponMenu" ); 
-     register_concmd( "say_team /fegyver", "cmdWeaponMenu" ); 
- } 
-   
- public Reload_Post( iWeapon ) 
- { 
-     static iId; 
-     iId = get_pdata_cbase( iWeapon, 41, 4 ); 
-     
-     if ( !is_user_connected( iId ) ) return; 
-     
-     if ( get_pdata_int( iWeapon, 54, 4 ) || get_pdata_int( iWeapon, 55, 4 ) ) 
-     { 
-         new iWeapId = cs_get_weapon_id( iWeapon ); 
-         
-         cs_set_user_bpammo( iId, iWeapId, g_iMaxAmmo[ iWeapId ] ); 
-     } 
- } 
-   
- public PlayerSpawn( iId ) { set_task( 0.1, "CheckC4", iId ); } 
-   
- public CheckC4( iId ) 
- { 
-     if ( !g_bC4 ) 
-     { 
-         if ( user_has_weapon( iId, CSW_C4 ) ) 
-         { 
-             g_bC4 = true; 
-             set_task( 0.4, "GiveC4", iId + 8888 ); 
-         } 
-     } 
-     set_task( 0.33, "WeaponMenu", iId ); 
- } 
-   
- public GiveC4( iId ) { iId -= 8888; give_item( iId, "weapon_c4" ); cs_set_user_plant( iId, 1, 1 ); } 
-   
- public WeaponMenu( iId ) 
- { 
-     if ( !is_user_alive( iId )  ) return; 
-     
-     g_bWeaponMenu[ iId ] = false; 
-     
-     static sMenuItem[ 128 ]; 
-     
-     formatex( sMenuItem, 127, "%L", iId, "MENU_TITLE" ); 
-     
-     new iMenu = menu_create( sMenuItem, "WeaponMenuH" ); 
-     
-     for ( new i; i < MaxWeapon; ++i ) 
-     { 
-         if ( g_iWeapons[ i ] != 18 ) formatex( sMenuItem, 127, "\r[\y%s\r]", g_sWeapon[ i ] ); 
-         else formatex( sMenuItem, 127, "\r[\y%s\r] \r[\dMAX: \y%d\r]", g_sWeapon[ i ], MaxAwp ); 
-         
-         menu_additem( iMenu, sMenuItem, _, 0 ); 
-     } 
-     
-     menu_setprop( iMenu, MPROP_EXIT, MEXIT_ALL ); 
-     menu_display( iId, iMenu ); 
- } 
-   
- public WeaponMenuH( iId, iMenu, iItem ) 
- { 
-     if( iItem == MENU_EXIT || !is_user_alive( iId ) ) 
-     { 
-         menu_destroy( iMenu ); 
-         return PLUGIN_HANDLED; 
-     } 
-     
-     new sMenuName[ 78 ], sInfo[ 8 ], iKey, iMenuNum; 
-     menu_item_getinfo( iMenu, iItem, iKey, sInfo, charsmax( sInfo ), sMenuName, charsmax( sMenuName ), iMenuNum ); 
-     
-     new iWpn = g_iWeapons[ iItem ]; 
-     
-     if ( iWpn == 18 ) 
-     { 
-         new iTeams[ CsTeams ]; 
-         GetPlayerCount( iTeams ); 
-         
-         if ( iTeams[ CS_TEAM_T ] < MinPlayer || iTeams[ CS_TEAM_CT ] < MinPlayer ) { 
-             
-             ChatColor( iId, "%L", iId, "AWP_ALLOWFROM", MinPlayer, MinPlayer ); 
-             WeaponMenu( iId ); 
-             
-             return PLUGIN_HANDLED; 
-         } 
-         
-         new CsTeams: userTeam = cs_get_user_team( iId ); 
-         if( userTeam == CS_TEAM_CT ) 
-         { 
-             if ( g_iWPCt > 0 ) --g_iWPCt; 
-             else 
-             { 
-                 client_print( iId, print_center, "%L", iId, "AWP_TOOMANY" ); 
-                 WeaponMenu( iId ); 
-                 
-                 return PLUGIN_HANDLED; 
-             } 
-         } 
-         else if ( userTeam == CS_TEAM_T ) 
-         { 
-             if ( g_iWPTe > 0 ) --g_iWPTe; 
-             else 
-             { 
-                 client_print( iId, print_center, "%L", iId, "AWP_TOOMANY" ); 
-                 WeaponMenu( iId ); 
-                 
-                 return PLUGIN_HANDLED; 
-             } 
-         } 
-     } 
-     
-     give_item( iId, g_sWeaponFull[ iItem ] ); 
-     give_item( iId, "weapon_deagle" ); 
-     give_item( iId, "weapon_flashbang" ); 
-     give_item( iId, "weapon_hegrenade" ); 
-     give_item( iId, "item_assaultsuit" ); 
-     give_item( iId, "item_thighpack" ); 
-     
-     cs_set_user_bpammo( iId, iWpn, g_iMaxAmmo[ iWpn ] ); 
-     cs_set_user_bpammo( iId, CSW_DEAGLE, g_iMaxAmmo[ CSW_DEAGLE ] ); 
-     cs_set_user_bpammo( iId, CSW_FLASHBANG, 2 ); 
-     
-     g_bWeaponMenu[ iId ] = true; 
-     
-     ChatColor( iId,  "%L", iId, "CHOOSED", g_sWeapon[ iItem ] ); 
-         
-     menu_destroy( iMenu ); 
-     return PLUGIN_HANDLED; 
- } 
-   
- public eNewRound ( ) { g_iWPCt = g_iWPTe = MaxAwp; g_bC4 = false; } 
- public cmdWeaponMenu( iId ) { if ( !g_bWeaponMenu[ iId ] ) WeaponMenu( iId ); } 
-   
- public pfn_keyvalue( iEntity ) 
- { 
-     new sClassName[ 20 ], sKeyName[ 16 ], sValue[ 20 ]; 
-   
-     copy_keyvalue( sClassName, charsmax( sClassName ), sKeyName, charsmax( sKeyName ), sValue, charsmax( sValue ) ); 
-   
-     if ( equal( sClassName, "info_map_parameters" ) || equal( sClassName, "func_buyzone" ) || equal( sClassName, "game_player_equip" ) || equal( sClassName, "player_weaponstrip" ) ) 
-     { 
-         remove_entity( iEntity ); 
-         return PLUGIN_HANDLED; 
-     } 
-     else if ( equal( sClassName, "multi_manager" ) && equal( sKeyName, "targetname" ) && equal( sValue, "game_playerspawn" ) ) 
-     { 
-         remove_entity( iEntity ); 
-         return PLUGIN_HANDLED; 
-     } 
-   
-     return PLUGIN_CONTINUE; 
- } 
-   
- stock GetPlayerCount( iTeamPlayers[ CsTeams ] ) 
- { 
-     static iPlayers[ 32 ], iPlayerCount; 
-     
-     get_players( iPlayers, iPlayerCount ); 
-     
-     for ( new i = 0 ; i < iPlayerCount ; ++i ) ++iTeamPlayers[ cs_get_user_team( iPlayers[ i ] ) ]; 
- } 
-   
- stock ChatColor( iId, const sMessage[ ], any:... ) 
- { 
-     static iPlrNum, iPlayers[ 32 ], sMsg[ 256 ], iIdMsg, iMsgLen = charsmax( sMsg ); 
-     
-     vformat( sMsg, iMsgLen, sMessage, 3 ); 
-     format( sMsg, iMsgLen, "!g[%s]!y %s", g_sPrefix, sMsg ); 
-     
-     replace_all( sMsg, iMsgLen, "!g", "^4" ); 
-     replace_all( sMsg, iMsgLen, "!y", "^1" ); 
-     replace_all( sMsg, iMsgLen, "!t", "^3" ); 
-   
-     if ( !iIdMsg ) iIdMsg = get_user_msgid( "SayText" ); 
-   
-     if ( iId ) 
-     { 
-         iPlayers[ 0 ] = iId; 
-         iPlrNum = 1; 
-     } 
-     else get_players( iPlayers, iPlrNum, "ch" ); 
-   
-     for ( new i, iPId; i < iPlrNum; ++i ) 
-     { 
-         iPId = iPlayers[ i ]; 
-         
-         if ( !is_user_connected( iPId ) ) continue; 
-         
-         message_begin( MSG_ONE, iIdMsg, _, iPId ); 
-         write_byte( iPId ); 
-         write_string( sMsg ); 
-         message_end( ); 
-     } 
- }