- #include < amxmodx > 
- #include < amxmisc > 
- #include < fun > 
- #include < fakemeta > 
- #include < cstrike > 
- #include < hamsandwich > 
- #define VERSION         "0.0.1" 
-   
- #define Max_Players     32 
-   
- #define OFFSET_PRIMARYWEAPON    116 
- #define OFFSET_C4_SLOT      372 
-   
- #define Weapon_Menu_Name    "Fegyver Csomagok" 
-   
- #define Next_Button     "KövetkezĹ‘" 
- #define Back_Button     "Vissza" 
- #define Exit_Button     "KilĂ©pĂ©s" 
-   
- #define Money_Hud       ( 1 << 5 ) 
-   
- new g_iWPCT; 
- new g_iWPTE; 
-   
- new pCvarMaxCTWps; 
- new pCvarMaxTEWps; 
-   
- new pCvarWPBlock; 
-   
- new pCvarFlash; 
- new pCvarHe; 
- new pCvarSmoke; 
-   
- new pCvarKevlar; 
- new pCvarDefuser; 
- new pCvarMoney; 
- new pCvarBlockBuy; 
- new pCvarUnAmmo; 
-   
- new const g_szMessages [ ] [ ] =  
- { 
- "", 
- "Csapatonként csak két ember AWP-zhet!", 
- "^3%s^1 WP^4 csak^1 4v4-től használható!", 
- "A vásárlás letĂltva!", 
- "Te már választottál fegyvert!" 
- }; 
-   
- new const g_szWeaponMenuNames [ ] [ ] =  { 
-   
- "M4A1 Csomag", 
- "AK47 Csomag", 
- "AWP Csomag", 
- "M249 Csomag", 
- "AUG Csomag", 
- "Famas Csomag", 
- "Galil Csomag", 
- "MP5 Csomag", 
- "XM1014 Csomag", 
- "M3 Csomag", 
- "Scout Csomag" 
- }; 
-   
- new const g_szWeaponsName [ ] [ ] = { 
-   
- "weapon_m4a1", 
- "weapon_ak47", 
- "weapon_awp", 
- "weapon_m249", 
- "weapon_aug", 
- "weapon_famas", 
- "weapon_galil", 
- "weapon_mp5navy", 
- "weapon_xm1014", 
- "weapon_m3", 
- "weapon_scout" 
- }; 
-   
- new const g_szPistolName [ ] = "weapon_deagle"; 
-   
- const DoNotReload = ( ( 1 << CSW_HEGRENADE ) | ( 1 << CSW_SMOKEGRENADE ) | ( 1 << CSW_FLASHBANG ) | ( 1 << CSW_KNIFE ) | ( 1 << CSW_C4 ) ); 
- new const maxAmmo[ 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_szBuyCommands[  ][  ] =  
- { 
- "usp", "glock", "deagle", "p228", "elites", "fn57", "m3", "xm1014", "mp5", "tmp", "p90", "mac10", "ump45", "ak47",  
- "galil", "famas", "sg552", "m4a1", "aug", "scout", "awp", "g3sg1", "sg550", "m249", "vest", "vesthelm", "flash", "hegren", 
- "sgren", "defuser", "nvgs", "shield", "primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "12gauge", 
- "autoshotgun", "smg", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum", "d3au1", "krieg550", 
- "buyammo1", "buyammo2" 
- }; 
-   
- new const g_szMenuCommands[  ] [  ] =  
- { 
- "fegyo", 
- "say fegyo", 
- "say_team fegyo", 
-   
- "fegyver", 
- "say fegyver", 
- "say_team fegyver", 
-   
- "say /fegyo", 
- "say_team /fegyo", 
-   
- "say /fegyver", 
- "say_team /fegyver" 
-   
- }; 
- new g_msgHideWeapon; 
- new g_bHasWeapon[ Max_Players ]; 
- new const SZEROPREF[] = "FegyvermenĂĽ" 
- public plugin_init ( ) { 
-   
- register_plugin( "Advanced Weapon Menu", VERSION, "#YouCantStopMe" ); 
- loading_maps(); 
- RegisterHam( Ham_Spawn, "player", "func_OpenWeaponMenu", 1 ); 
-   
- pCvarMaxCTWps   = register_cvar( "awm_max_ct_awp",  "2" ); // Ct-n?l 2 AWP-s lehet. 
- pCvarMaxTEWps   = register_cvar( "awm_max_te_awp",  "2" ); // Terrorist?kn?l 2 AWP-s lehet. 
-   
- pCvarWPBlock    = register_cvar( "awm_allow_wp_player",     "4" ); // Ha mindk?t csapatban van 4-4 j?t?kos akkor engedi az AWP-t 
-   
- pCvarFlash  = register_cvar( "awm_give_flash",  "2" ); // Itt tudod be?ll?tani ,hogy adjon-e f?st gr?n?tot. ( 0 = Nem ad ) Alap: 2 Flash gr?n?t 
- pCvarHe     = register_cvar( "awm_give_he",         "1" ); // Itt tudod be?ll?tani ,hogy adjon-e f?st gr?n?tot. ( 0 = Nem ad ) Alap: 1 Roban? gr?n?t 
- pCvarSmoke  = register_cvar( "awm_give_smoke",  "0" ); // Itt tudod be?ll?tani ,hogy adjon-e f?st gr?n?tot. ( 0 = Nem ad ) 
-   
- pCvarKevlar = register_cvar( "awm_give_kevlar", "2" ); // Itt tudod be?ll?tani ,hogy adjon-e kevl?rt. ( 0 = Nem Ad ) Alap: 2 ( Kevl?r + Sisak ) 
- pCvarDefuser    = register_cvar( "awm_give_defuser",    "1" ); // Itt tudod be?ll?tani ,hogy adjon-e defusert. ( 0 = Nem Ad ) 
-   
- pCvarUnAmmo = register_cvar( "awm_unlimited_ammo",  "1" ); // Itt tudod be?ll?tani ,hogy elfoggyon-e a t?r vagy ne. Alap: 1 ( Teh?t nem fogy el a t?r ) 
-   
- pCvarBlockBuy   = register_cvar( "awm_block_buy",   "1" ); // Itt tudod be?ll?tani ,hogy tiltsa-e a v?s?rl?st vagy ne. Alap 1 ( Teh?t tiltva van ) ( 0 = Nincs tiltva ) 
- pCvarMoney  = register_cvar( "awm_set_money",   "0" ); // Itt tudod be?ll?tani ,hogy mennyi p?nze legyen a j?t?kosoknak. ( 0 = Nincs , elt?nik a hudr?l is ) Alap: 0 
-   
- g_msgHideWeapon = get_user_msgid( "HideWeapon" ); 
-   
- for( new i = 0; i < sizeof( g_szBuyCommands ); i++ ) 
- register_clcmd( g_szBuyCommands[ i ], "cmd_BlockBuy" ); 
-   
- for( new i = 0; i < sizeof( g_szMenuCommands ); i++ ) 
- register_clcmd( g_szMenuCommands[ i ], "cmd_ShowWeaponMenu" ); 
-   
- register_event( "ResetHUD", "onResetHUD", "b" ); 
- register_event( "CurWeapon", "eCurWeapon", "be", "1=1" ); 
-   
- register_message( g_msgHideWeapon, "msgHideWeapon" ); 
-   
- register_logevent( "eRoundEnd", 2, "1=Round_End" ); 
- } 
- public loading_maps()  
- {    
- new fajl[64],linedata[1024],currentmap[64],mapnev[32]; 
- get_mapname(currentmap,charsmax(currentmap)); 
- formatex(fajl, charsmax(fajl), "addons/amxmodx/configs/fegyvermenu_tiltas.ini"); 
-   
- if (!file_exists("addons/amxmodx/configs/fegyvermenu_tiltas.ini")) { 
-     new len,buffer[512]; 
-     len += formatex(buffer[len], charsmax(buffer),";Csak írd be azoknak a mapoknak a nevét amelyiken ne működjön a fegyvermenü. Pl:^n"); 
-     len += formatex(buffer[len], charsmax(buffer)-len,";^"awp_india^"^n"); 
-      
-     new file = fopen("addons/amxmodx/configs/fegyvermenu_tiltas.ini", "at"); 
-      
-     fprintf(file, buffer); 
-     fclose(file); 
-     return; 
- } 
-   
- new file = fopen(fajl, "rt"); 
-   
- while (file && !feof(file)) 
- { 
-     // Read one line at a time 
-     fgets(file, linedata, charsmax(linedata)); 
-     replace(linedata, charsmax(linedata), "^n", "");//Üres sorokat eltünteti 
-      
-     parse(linedata,mapnev,31); 
-     if(equali(currentmap,mapnev)) 
-     { 
-         log_amx("A plugin '%s' mapon nem fut. (configs/fegyvermenu_tiltas.ini)",currentmap); 
-         pause("ad"); 
-         return; 
-     } 
- } 
- if (file) fclose(file); 
- } 
- public client_connect( iClient ) { 
-   
- g_bHasWeapon[ iClient ] = false; 
- } 
-   
- public client_disconnect( iClient ) { 
-   
- g_bHasWeapon[ iClient ] = false; 
- } 
-   
- public cmd_ShowWeaponMenu( iClient ) { 
-   
- switch( g_bHasWeapon[ iClient ] ) { 
-      
-     case true:  
-     { 
-         ColorChat( iClient, "^3%s %s" , SZEROPREF, g_szMessages[ 4 ] ); 
-          
-         return PLUGIN_HANDLED; 
-     } 
-     case false:     func_OpenWeaponMenu( iClient ); 
-     } 
-     return PLUGIN_HANDLED; 
- } 
-   
- public cmd_BlockBuy( iClient ) { 
-      
-     if( !get_pcvar_num( pCvarBlockBuy ) ) 
-         return PLUGIN_CONTINUE; 
-     ColorChat( iClient,  "^3%s %s" , SZEROPREF, g_szMessages[ 3 ] ); 
-     return PLUGIN_HANDLED; 
- } 
-   
- public eCurWeapon( iClient ) { 
-      
-     if( get_pcvar_num( pCvarUnAmmo ) ) { 
-          
-         if( is_user_alive( iClient ) ) { 
-              
-             new weapon = read_data( 2 ); 
-             if( !( DoNotReload & ( 1 << weapon ) ) ) { 
-                  
-                 cs_set_user_bpammo( iClient, weapon, maxAmmo[ weapon ] ); 
-             } 
-         } 
-     } 
- } 
-   
- public onResetHUD( iClient ) { 
-      
-     if( !get_pcvar_num( pCvarMoney ) ) { 
-          
-         message_begin( MSG_ONE, g_msgHideWeapon, _, iClient ); 
-         write_byte( Money_Hud ); 
-         message_end( ); 
-     } 
- } 
-   
- public msgHideWeapon( ) { 
-      
-     if( !get_pcvar_num( pCvarMoney ) ) { 
-          
-         set_msg_arg_int( 1, ARG_BYTE, get_msg_arg_int( 1 ) | Money_Hud ); 
-     } 
- } 
-   
- public eRoundEnd ( ) { 
-      
-     g_iWPCT = 0; 
-     g_iWPTE = 0; 
- } 
-   
- public func_OpenWeaponMenu ( iClient ) { 
-      
-     if( !is_user_alive( iClient ) ) 
-         return; 
-      
-     cs_set_user_money( iClient, get_pcvar_num( pCvarMoney ) ); 
-      
-     g_bHasWeapon[ iClient ] = false; 
-      
-     new szMenuTitle[ 121 ]; 
-     new szMenuItem[ 121 ]; 
-      
-     format( szMenuTitle, charsmax( szMenuTitle ), "\r%s^n\w%s", SZEROPREF, Weapon_Menu_Name ); 
-      
-     StripUserWeapons( iClient ); 
-     new menu = menu_create( szMenuTitle, "func_OpenWeaponMenu_handler" ); 
-      
-     for( new i = 0; i < sizeof( g_szWeaponMenuNames ); i++ ) { 
-          
-         if( i != 2 ) { 
-              
-             format( szMenuItem, charsmax( szMenuItem ), "\w%s", g_szWeaponMenuNames[ i ] ); 
-         } 
-         else { 
-             switch( get_user_team( iClient ) ) 
-             { 
-                 case 1: format( szMenuItem, charsmax( szMenuItem ), "\w%s \y[Első %d embernek]", g_szWeaponMenuNames[ i ], get_pcvar_num( pCvarMaxTEWps ) ); 
-                     case 2: format( szMenuItem, charsmax( szMenuItem ), "\w%s \y[Első %d embernek]", g_szWeaponMenuNames[ i ], get_pcvar_num( pCvarMaxCTWps ) ); 
-                     default: continue; 
-             } 
-         } 
-          
-         menu_additem( menu, szMenuItem, _, 0 ); 
-     } 
-      
-     menu_setprop( menu, MPROP_EXIT, MEXIT_ALL ); 
-     menu_setprop( menu, MPROP_BACKNAME, Back_Button ); 
-     menu_setprop( menu, MPROP_NEXTNAME, Next_Button ); 
-     menu_setprop( menu, MPROP_EXITNAME, Exit_Button ); 
-     menu_display( iClient, menu ); 
- } 
-   
- public func_OpenWeaponMenu_handler( iClient, iMenu, iItem ) { 
-      
-     if( iItem == MENU_EXIT ) { 
-          
-         menu_destroy( iMenu ); 
-         return PLUGIN_HANDLED; 
-     } 
-      
-     new data[ 6 ], szName[ 64 ]; 
-     new access, callback; 
-     menu_item_getinfo( iMenu, iItem, access, data, charsmax( data ), szName, charsmax( szName ), callback ); 
-      
-     if( iItem != 2 ) { 
-          
-         give_item( iClient, g_szWeaponsName[ iItem ] ); 
-         give_item( iClient, g_szPistolName ); 
-          
-         ColorChat( iClient,  "^3%s^1 Te az ^4%s^1 csomagot választottad!", SZEROPREF ,g_szWeaponMenuNames[ iItem ] ); 
-     } 
-     else { 
-          
-         new iTeams[ CsTeams ]; 
-         GetPlayerCount( iTeams ); 
-          
-         if( iTeams[ CS_TEAM_T ] < get_pcvar_num( pCvarWPBlock )  
-         || iTeams[ CS_TEAM_CT ] < get_pcvar_num( pCvarWPBlock ) ) { 
-              
-             ColorChat( iClient,  g_szMessages[ 2 ], SZEROPREF ); 
-             func_OpenWeaponMenu( iClient ); 
-              
-             return PLUGIN_HANDLED; 
-         } 
-          
-         new CsTeams:userTeam = cs_get_user_team( iClient ); 
-         if( userTeam == CS_TEAM_CT ) { 
-              
-             if( g_iWPCT < get_pcvar_num( pCvarMaxCTWps ) ) { 
-                  
-                 give_item( iClient, g_szWeaponsName[ iItem ] ); 
-                 give_item( iClient, g_szPistolName ); 
-                  
-                 ColorChat( iClient, "^3%s^1 Te az ^4%s^1 csomagot választottad!", SZEROPREF, g_szWeaponMenuNames[ iItem ] ); 
-                 g_iWPCT++; 
-             } 
-             else { 
-                  
-                 client_print( iClient, print_center, g_szMessages[ 1 ] ); 
-                 func_OpenWeaponMenu ( iClient ); 
-                  
-                 return PLUGIN_HANDLED; 
-             } 
-         } 
-          
-         if( userTeam == CS_TEAM_T ) { 
-              
-             if( g_iWPTE < get_pcvar_num( pCvarMaxTEWps ) ) { 
-                  
-                  
-                 give_item( iClient, g_szWeaponsName[ iItem ] ); 
-                 give_item( iClient, g_szPistolName ); 
-                  
-                 ColorChat( iClient,  "^3%s^1 Te az ^4%s^1 csomagot választottad!", SZEROPREF, g_szWeaponMenuNames[ iItem ] ); 
-                 g_iWPTE++; 
-             } 
-             else { 
-                  
-                 client_print( iClient, print_center, g_szMessages[ 1 ] ); 
-                 func_OpenWeaponMenu( iClient ); 
-                  
-                 return PLUGIN_HANDLED; 
-             } 
-         } 
-     } 
-      
-     give_item( iClient, "weapon_knife" ); 
-     give_player_stuff( iClient ); 
-      
-     menu_destroy( iMenu ); 
-     return PLUGIN_HANDLED; 
- } 
-   
- GetPlayerCount( iTeamPlayers[ CsTeams ] ) { 
-      
-     new iPlayers[ 32 ] , iPlayerCount; 
-      
-     get_players( iPlayers , iPlayerCount );  
-      
-     for ( new i = 0 ; i < iPlayerCount ; i++ ) 
-         iTeamPlayers[ cs_get_user_team( iPlayers[ i ] ) ]++; 
- }   
-   
- stock give_player_stuff( iClient ) { 
-      
-     if( get_pcvar_num( pCvarFlash ) ) { 
-          
-         give_item( iClient, "weapon_flashbang" ); 
-         cs_set_user_bpammo( iClient, CSW_FLASHBANG, get_pcvar_num( pCvarFlash ) ); 
-     } 
-      
-     if( get_pcvar_num( pCvarHe ) ) { 
-          
-         give_item( iClient, "weapon_hegrenade" ); 
-         cs_set_user_bpammo( iClient, CSW_HEGRENADE, get_pcvar_num( pCvarHe ) ); 
-     } 
-      
-     if( get_pcvar_num( pCvarSmoke ) ) { 
-          
-         give_item( iClient, "weapon_smokegrenade" ); 
-         cs_set_user_bpammo( iClient, CSW_SMOKEGRENADE, get_pcvar_num( pCvarSmoke ) ); 
-     } 
-      
-     if( get_pcvar_num( pCvarKevlar ) ) { 
-          
-         switch( get_pcvar_num( pCvarKevlar ) ) { 
-              
-             case 1: give_item( iClient, "item_kevlar" ); 
-                 case 2: give_item( iClient, "item_assaultsuit" ); 
-                 default: return PLUGIN_CONTINUE; 
-         } 
-     } 
-      
-     if( get_pcvar_num( pCvarDefuser ) ) { 
-          
-         give_item( iClient, "item_thighpack" ); 
-     } 
-      
-     if( !get_pcvar_num( pCvarUnAmmo ) ) { 
-          
-         new weapons[ 32 ]; 
-         new weaponsnum; 
-         get_user_weapons( iClient, weapons, weaponsnum ); 
-         for( new i = 0; i < weaponsnum; i++ ) 
-             if( is_user_alive( iClient ) ) 
-             if( maxAmmo[ weapons[ i ] ] > 0 ) 
-             cs_set_user_bpammo( iClient, weapons[ i ], maxAmmo[ weapons[ i ] ] ); 
-     } 
-      
-     g_bHasWeapon[ iClient ] = true; 
-     return PLUGIN_CONTINUE; 
- } 
-   
-   
- //Stolen from CSDM Weapon Menu 
- stock StripUserWeapons( iClient ) { 
-      
-     new iC4Ent = get_pdata_cbase( iClient, OFFSET_C4_SLOT ); 
-      
-     if( iC4Ent > 0 ) { 
-          
-         set_pdata_cbase( iClient, OFFSET_C4_SLOT, FM_NULLENT ); 
-     } 
-      
-     strip_user_weapons( iClient ); 
-     set_pdata_int( iClient, OFFSET_PRIMARYWEAPON, 0 ); 
-      
-     if( iC4Ent > 0 )  { 
-          
-         set_pev( iClient, pev_weapons, pev( iClient, pev_weapons ) | ( 1 << CSW_C4 ) ); 
-         set_pdata_cbase( iClient, OFFSET_C4_SLOT, iC4Ent ); 
-          
-         cs_set_user_bpammo( iClient, CSW_C4, 1 ); 
-         cs_set_user_plant( iClient, 1 ); 
-     } 
-      
-     return PLUGIN_HANDLED; 
- } 
-   
- stock ColorChat( iClient, const input[], any:...)  
- {  
-     new count = 1, players[ 32 ]; 
-     static msg[ 191 ]; 
-     vformat( msg, 190, input, 3 ); 
-      
-     replace_all( msg, 190, "^x01" , "^1"); 
-     replace_all( msg, 190, "^x03" , "^3"); 
-     replace_all( msg, 190, "^x04" , "^4");  
-      
-     if ( iClient )  players[ 0 ] = iClient; else get_players( players , count , "ch" ); 
- {  
-     for ( new i = 0; i < count; i++ )  
-     {  
-         if ( is_user_connected( players[ i ] ) )  
-         {  
-             message_begin( MSG_ONE_UNRELIABLE , get_user_msgid( "SayText" ), _, players[ i ] ); 
-             write_byte( players[ i ] );  
-             write_string( msg );  
-             message_end(  );  
-         }  
-     }  
- }  
- }