-   
-         #include <amxmodx> 
-         #include <amxmisc> 
-   
-   
-             new const 
-         // _________________________________________________ 
-   
-                 PLUGIN [] = "Alternative End Round Sounds", 
-                 VERSION[] = "2.3b", 
-                 AUTHOR [] = "Arkshine"; 
-         // _________________________________________________ 
-   
-   
-         #if AMXX_VERSION_NUM < 180 
-             #define old_amxx 
-         #endif 
-   
-   
-         /* ========================= [ "START" AERA FOR CHANGES ] ========================= */ 
-   
-   
-             #define _DEBUG                 // Active debug 
-             #define MAX_FILE_LENGTH  196   // Max length for files + path. 
-   
-             #if defined old_amxx 
-                 #define MAX_SOUNDS    25   // Max sounds per team 
-             #endif 
-   
-             new const 
-   
-                 g_FileName[]    = "roundsound",     // Name of the main file if no files is found in 'g_FileFolder'. 
-                 g_FileFolder[]  = "round_sound",    // Name of the directory in amxmodx/configs/ for per-map files. 
-                 g_FilePrefix[]  = "ini",            // File extension used for the files. 
-                 g_CmdChat[]     = "/roundsound";    // Chat command for player. 
-   
-   
-         /* ========================= [ "END" AERA FOR CHANGES ] ========================= */ 
-   
-   
-   
-         // - - - - - - - - - - - - - - - - - - - - - - - 
-   
-         #define MAX_PLAYERS  32 
-         #define TASKID_ADS   1333 
-         #define SIZE_FILE    0 
-         #define NULL        -1 
-   
-         new 
-             bool:g_pHeardSound[ MAX_PLAYERS + 1 ], 
-   
-             #if !defined old_amxx 
-                 Array:g_lstSoundCT, 
-                 Array:g_lstSoundT, 
-             #endif 
-   
-             p_enabled, 
-             p_player_toggle, 
-             p_time_ads, 
-             p_random_precache, 
-   
-             g_sRp_value[12], 
-             g_msgSayText; 
-   
-   
-         enum _:e_Team 
-         { 
-             T = 0, 
-             CT, 
-         }; 
-   
-         new g_nSnd[ e_Team ]; 
-   
-         #if defined old_amxx 
-             new g_sTeam_sounds[ MAX_SOUNDS ][ e_Team ][ MAX_FILE_LENGTH ]; 
-             #define charsmax(%1)  sizeof( %1 ) - 1 
-         #endif 
-   
-         #define _is_wav(%1)  equali( %1[strlen( %1 ) - 4 ], ".wav" ) 
-   
-         // - - - - - - - - - - - - - - - - - - - - - - - 
-   
-   
-         public plugin_precache() 
-         { 
-             register_dictionary( "end_roundsound.txt" ); 
-   
-             if( ( p_random_precache = get_cvar_pointer( "erc_random_precache" ) ) ) 
-                 get_pcvar_string( p_random_precache, g_sRp_value, charsmax( g_sRp_value ) ); 
-   
-             if( !p_random_precache ) 
-                 return; 
-   
-             #if !defined old_amxx 
-                 g_lstSoundCT = ArrayCreate( MAX_FILE_LENGTH ); 
-                 g_lstSoundT  = ArrayCreate( MAX_FILE_LENGTH ); 
-             #endif 
-   
-             loading_file(); 
-         } 
-   
-   
-         public plugin_init() 
-         { 
-             register_plugin( PLUGIN, VERSION, AUTHOR ); 
-             register_cvar( "ers_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY ); 
-   
-             register_event( "SendAudio", "eT_win" , "a", "2&%!MRAD_terwin" ); 
-             register_event( "SendAudio", "eCT_win", "a", "2&%!MRAD_ctwin"  ); 
-   
-             p_enabled         = register_cvar( "ers_enabled"        , "1"   ); 
-             p_player_toggle   = register_cvar( "ers_player_toggle"  , "1"   ); 
-             p_time_ads        = register_cvar( "erc_time_ads"       , "120" ); 
-   
-             if( !p_random_precache ) 
-             { 
-                 register_cvar( "erc_random_precache", g_sRp_value ); 
-                 server_cmd( "restart" ); 
-             } 
-   
-             register_clcmd( "say"       , "cmd_Say" ); 
-             register_clcmd( "say_team"  , "cmd_Say" ); 
-   
-             g_msgSayText = get_user_msgid( "SayText" ); 
-         } 
-   
-   
-         public client_authorized( id ) 
-             g_pHeardSound[id] = true; 
-   
-   
-         public client_disconnect( id ) 
-         { 
-             g_pHeardSound[id] = true; 
-             remove_task( id + TASKID_ADS ); 
-         } 
-   
-   
-         public client_putinserver( id ) 
-         { 
-             new Float:time = get_pcvar_float( p_time_ads ); 
-   
-             if( !time ) 
-                 return; 
-   
-             remove_task( id + TASKID_ADS ); 
-             set_task( time, "show_ads", id + TASKID_ADS, _, _, "b" ); 
-         } 
-   
-   
-         public show_ads( taskid ) 
-         { 
-             new id = taskid - TASKID_ADS; 
-             ShowPrint( id, "%L", id, "ERS_DISPLAY_ADS", g_CmdChat ); 
-         } 
-   
-   
-         public cmd_Say( id ) 
-         { 
-             if( !get_pcvar_num( p_enabled ) ) 
-                 return PLUGIN_CONTINUE; 
-   
-             static sMsg[64]; 
-             read_argv( 1, sMsg, charsmax( sMsg ) ); 
-   
-             if( equali( sMsg, g_CmdChat ) ) 
-             { 
-                 if( !get_pcvar_num( p_player_toggle ) ) 
-                 { 
-                     ShowPrint( id, "%L", id, "ERS_CMD_DISABLED" ); 
-                     return PLUGIN_HANDLED; 
-                 } 
-   
-                 g_pHeardSound[id] = g_pHeardSound[id] ? false : true; 
-                 ShowPrint( id, "%L", id, g_pHeardSound[id] ? "ERS_SOUND_ENABLED" : "ERS_SOUND_DISABLED" ); 
-   
-                 return PLUGIN_HANDLED; 
-             } 
-   
-             return PLUGIN_CONTINUE; 
-         } 
-   
-   
-         public eT_win() 
-         { 
-             if( !g_nSnd[ e_Team:T ] ) 
-                 return; 
-   
-             play_sound( e_Team:T ); 
-         } 
-   
-   
-         public eCT_win() 
-         { 
-             if( !g_nSnd[ e_Team:CT ] ) 
-                 return; 
-   
-             play_sound( e_Team:CT ); 
-         } 
-   
-   
-         play_sound( iTeam ) 
-         { 
-             static 
-         //  - - - - - - - - - - - - - - - - 
-                 sCurSnd[ MAX_FILE_LENGTH ]; 
-         //  - - - - - - - - - - - - - - - - 
-   
-             new iRand; 
-   
-             if( g_nSnd[ iTeam ] > 1 ) 
-                 iRand = random( g_nSnd[ iTeam ] ); 
-   
-             #if defined old_amxx 
-                 copy( sCurSnd, MAX_FILE_LENGTH - 1, g_sTeam_sounds[ iRand ][ iTeam ] ); 
-             #else 
-                 ArrayGetString( iTeam == CT ? g_lstSoundCT : g_lstSoundT, iRand, sCurSnd, MAX_FILE_LENGTH - 1 ); 
-             #endif 
-   
-             _is_wav( sCurSnd ) ? 
-   
-                  format( sCurSnd, MAX_FILE_LENGTH - 1, "spk %s", sCurSnd[6] ) : 
-                  format( sCurSnd, MAX_FILE_LENGTH - 1, "mp3 play %s", sCurSnd ); 
-   
-             if( get_pcvar_num( p_player_toggle ) ) 
-             { 
-                 static 
-             //  - - - - - - - - - - - 
-                     iPlayers[32], 
-                     iNum, pid; 
-             //  - - - - - - - - - - - 
-   
-                 get_players( iPlayers, iNum, "c" ); 
-   
-                 for( new i; i < iNum; i++ ) 
-                 { 
-                     pid = iPlayers[i]; 
-   
-                     if( !g_pHeardSound[pid] || is_user_bot( pid ) ) 
-                         continue; 
-   
-                     client_cmd( pid, "%s", sCurSnd ); 
-                 } 
-             } 
-             else 
-                 client_cmd( 0, "%s", sCurSnd ); 
-         } 
-   
-   
-         get_prefix( sMap[], iLen_map, sMapType[], iLen_type ) 
-         { 
-             new 
-         //  - - - - - - - - - 
-                 sRest[32]; 
-         //  - - - - - - - - - 
-   
-             get_mapname( sMap, iLen_map ); 
-             strtok( sMap, sMapType, iLen_type, sRest, charsmax( sRest ), '_', 1 ); 
-         } 
-   
-   
-         loading_file() 
-         { 
-             static 
-         //  - - - - - - - - - - - - - - - - - 
-                 sPath[ MAX_FILE_LENGTH ], 
-         //      | 
-                 sConfigsDir[64], 
-                 sPrefix[6], 
-                 sMap[32]; 
-         //  - - - - - - - - - - - - - - - - - 
-   
-             get_prefix( sMap, charsmax( sMap ), sPrefix, charsmax( sPrefix ) ); 
-             get_configsdir( sConfigsDir, charsmax( sConfigsDir ) ); 
-   
-   
-             new bool:bFound; 
-   
-             for( new i = 1; i <= 3; i++ ) 
-             { 
-                 switch( i ) 
-                 { 
-                     case 1 : formatex( sPath, charsmax( sPath ), "%s/%s/prefix-%s.%s", sConfigsDir, g_FileFolder, sPrefix, g_FilePrefix ); 
-                     case 2 : formatex( sPath, charsmax( sPath ), "%s/%s/%s.%s", sConfigsDir, g_FileFolder, sMap, g_FilePrefix ); 
-                     case 3 : formatex( sPath, charsmax( sPath ), "%s/%s.%s", sConfigsDir, g_FileName, g_FilePrefix ); 
-   
-                     default : break; 
-                 } 
-   
-                 if( !CheckFile( sPath ) ) 
-                     continue; 
-   
-                 bFound = true; 
-                 break; 
-             } 
-   
-             log_amx( "---" ); 
-   
-             bFound ? 
-                 log_amx( "%L", LANG_SERVER, "ERS_LOG_LOADING", sPath ) : 
-                 log_amx( "%L", LANG_SERVER, "ERS_LOG_NO_FILES_FOUND" ); 
-   
-             load_sound( sPath ); 
-         } 
-   
-   
-         load_sound( const file[] ) 
-         { 
-             new 
-         //  - - - - - - - - - - - - - - - 
-                 sBuffer[256], 
-         //      | 
-                 sLeft[ MAX_FILE_LENGTH ], 
-                 sRight[4], 
-                 sExt[6], 
-         //      | 
-                 eTeam; 
-         //  - - - - - - - - - - - - - - - 
-   
-             new fp = fopen( file, "rt" ); 
-   
-             while( !feof( fp ) ) 
-             { 
-                 fgets( fp, sBuffer, charsmax( sBuffer ) ); 
-   
-                 trim( sBuffer ); 
-   
-                 if( !sBuffer[0] || sBuffer[0] == ';' || ( sBuffer[0] == '/' && sBuffer[1] == '/' ) ) 
-                     continue; 
-   
-                 if( sBuffer[0] != '"' || strlen( sBuffer  ) < 11 ) 
-                     continue; 
-   
-                 parse( sBuffer, sLeft, charsmax( sLeft ), sRight, charsmax( sRight ) ); 
-                 formatex( sExt, charsmax( sExt ), sLeft[ strlen( sLeft ) - 4 ] ); 
-   
-                 if( equali( sExt, ".mp3" ) == -1 || equali( sExt, ".wav" ) == -1 ) 
-                 { 
-                     log_amx( "%L", LANG_SERVER, "ERS_LOG_UNKNOW_EXTENSION", sExt ); 
-                     continue; 
-                 } 
-   
-                 if( !file_exists( sLeft ) ) 
-                 { 
-                     log_amx( "%L", LANG_SERVER, "ERS_LOG_INEXISTENT_FILE", sLeft ); 
-                     continue; 
-                 } 
-   
-                 eTeam = NULL; 
-   
-                 if( equali( sRight, "CT" ) ) 
-                     eTeam = CT; 
-   
-                 else if( equali( sRight, "T" ) ) 
-                     eTeam = T; 
-   
-                 if( eTeam == NULL ) 
-                 { 
-                     log_amx( "%L", LANG_SERVER, "ERS_LOG_NO_TEAM_SOUND", sLeft ); 
-                     continue; 
-                 } 
-   
-                 #if defined old_amxx 
-                     copy( g_sTeam_sounds[ g_nSnd[ eTeam ] ][ eTeam ], MAX_FILE_LENGTH - 1, sLeft ); 
-                 #else 
-                     ArrayPushString( eTeam == CT ? g_lstSoundCT : g_lstSoundT, sLeft ); 
-                 #endif 
-   
-                 ++g_nSnd[ eTeam ]; 
-             } 
-             fclose( fp ); 
-   
-             if( g_nSnd[ e_Team:T ] > 1 || g_nSnd[ e_Team:CT ] > 1 ) 
-             { 
-                     new iMax_t, iMax_ct; 
-                     GetPrecacheValue( iMax_t, iMax_ct ); 
-   
-                     #if defined old_amxx 
-                         UpdateArray( iMax_t, e_Team:T ); 
-                         UpdateArray( iMax_ct, e_Team:CT ); 
-                     #else 
-                         p_DeleteRandomItem( iMax_t , e_Team:T , g_lstSoundT  ); 
-                         p_DeleteRandomItem( iMax_ct, e_Team:CT, g_lstSoundCT ); 
-                     #endif 
-             } 
-   
-             log_amx( "---" ); 
-   
-             #if defined _DEBUG 
-                 log_amx( "[ Loading %d CTs Sounds ]", g_nSnd[ e_team:CT ] ); 
-             #endif 
-             #if defined old_amxx 
-                 PrecacheSounds( e_Team:CT ); 
-             #else 
-                 PrecacheSounds_n( g_lstSoundCT ); 
-             #endif 
-   
-             #if defined _DEBUG 
-                  log_amx( "[ Loading %d Ts Sounds ]", g_nSnd[ e_team:T ] ); 
-             #endif 
-             #if defined old_amxx 
-                 PrecacheSounds( e_Team:T ); 
-             #else 
-                 PrecacheSounds_n( g_lstSoundT ); 
-             #endif 
-         } 
-   
-   
-         GetPrecacheValue( &iMax_t, &iMax_ct ) 
-         { 
-             trim( g_sRp_value ); 
-             new pos = contain( g_sRp_value, "-" ); 
-   
-             if( pos > 0 ) 
-             { 
-                 iMax_ct = str_to_num( g_sRp_value[ pos + 1 ] ) 
-                 g_sRp_value[ pos ] = '^0'; 
-                 iMax_t = str_to_num( g_sRp_value ); 
-             } 
-             else 
-             { 
-                 iMax_t  = str_to_num( g_sRp_value ); 
-                 iMax_ct = iMax_t; 
-             } 
-         } 
-   
-   
-         stock UpdateArray( iMax, iTeam ) 
-         { 
-             new const iCnt_sound = g_nSnd[ iTeam ]; 
-   
-             if( !iMax || iMax == iCnt_sound ) 
-                 return; 
-   
-             if( iMax >= iCnt_sound ) 
-                 iMax = iCnt_sound - 1; 
-   
-             static 
-                 sTmp_sounds[ MAX_SOUNDS ][ e_Team ][ MAX_FILE_LENGTH ], 
-                 iLast_number[ MAX_SOUNDS ]; 
-   
-             new i, iRand; 
-             for( i = 0; i < iCnt_sound; i++ ) 
-             { 
-                 copy( sTmp_sounds[i][ iTeam ], MAX_FILE_LENGTH - 1, g_sTeam_sounds[i][ iTeam ] ); 
-                 g_sTeam_sounds[i][ iTeam ][0] = '^0'; 
-             } 
-   
-             arrayset( iLast_number, 0, charsmax( iLast_number ) ); 
-   
-             i = 0; 
-             while( i != iMax ) 
-             { 
-                 check: 
-                 iRand = random( iCnt_sound ); 
-   
-                 if( iLast_number[ iRand ] ) 
-                     goto check; 
-   
-                 copy( g_sTeam_sounds[i][ iTeam ], MAX_FILE_LENGTH - 1, sTmp_sounds[ iRand ][ iTeam ] ); 
-                 ++i; 
-   
-                 iLast_number[ iRand ] = 1; 
-             } 
-   
-             g_nSnd[ iTeam ] = iMax; 
-         } 
-   
-   
-         stock p_DeleteRandomItem( iMax, iTeam, Array:sSound_a ) 
-         { 
-             new const iCnt_sound = g_nSnd[ iTeam ]; 
-   
-             if( !iMax || iMax == iCnt_sound ) 
-                 return; 
-   
-             if( iMax >= iCnt_sound ) 
-                 iMax = iCnt_sound - 1; 
-   
-             DeleteRandomItem( iCnt_sound - iMax, sSound_a ); 
-             g_nSnd[ iTeam ] = iMax; 
-         } 
-   
-   
-         stock DeleteRandomItem( iRandom_n, Array:sSound_a ) 
-             { 
-                 new i; 
-   
-                 while( i++ != iRandom_n ) 
-                     ArrayDeleteItem( sSound_a, random( ArraySize( sSound_a ) ) ); 
-             } 
-   
-   
-         stock PrecacheSounds( iTeam ) 
-         { 
-             for( new i; i < g_nSnd[ iTeam ]; i++ ) 
-             { 
-                 PrecacheFile( g_sTeam_sounds[i][ iTeam ] ); 
-   
-                 #if defined _DEBUG 
-                     log_amx( "   - %s", g_sTeam_sounds[i][ iTeam ] ); 
-                 #endif 
-             } 
-   
-             log_amx( "---" ); 
-         } 
-   
-   
-         stock PrecacheSounds_n( Array:sSound_a ) 
-         { 
-             static 
-         //  - - - - - - - - - - - - - - - - - - - 
-                 sFile[ MAX_FILE_LENGTH ], 
-                 iFileLen = charsmax( sFile ); 
-         //  - - - - - - - - - - - - - - - - - - - 
-   
-             for( new i; i < ArraySize( sSound_a ); i++ ) 
-             { 
-                 ArrayGetString( sSound_a, i, sFile, iFileLen ); 
-                 PrecacheFile( sFile ); 
-   
-                 #if defined _DEBUG 
-                     log_amx( "   - %s", sFile ); 
-                 #endif 
-             } 
-   
-              log_amx( "---" ); 
-         } 
-   
-   
-         PrecacheFile( const sound[] ) 
-         { 
-             _is_wav( sound ) ? 
-   
-                 precache_sound( sound[6] ) : 
-                 precache_generic( sound ); 
-         } 
-   
-   
-         ShowPrint( id, const sMsg[], { Float, Sql, Result, _ }:... ) 
-         { 
-             static 
-         //  - - - - - - - - - 
-                 newMsg[191], 
-                 message[191], 
-         //      | 
-                 tNewMsg; 
-         //  - - - - - - - - - 
-   
-             tNewMsg = charsmax( newMsg ); 
-             vformat( newMsg, tNewMsg, sMsg, 3 ); 
-   
-             replace_all( newMsg, tNewMsg, "!t", "^3" ); 
-             replace_all( newMsg, tNewMsg, "!g", "^4" ); 
-             replace_all( newMsg, tNewMsg, "!n", "^1" ); 
-   
-             formatex( message, charsmax( message ), "^4[ERS]^1 %s", newMsg ); 
-   
-             emessage_begin( MSG_ONE, g_msgSayText, _, id ); 
-             ewrite_byte( id ); 
-             ewrite_string( message ); 
-             emessage_end(); 
-         } 
-   
-   
-         bool:CheckFile( const file[] ) 
-         { 
-             new 
-         //  - - - - - - - - - - - - - - - - - 
-                 sBuffer[256], 
-                 fp = fopen( file, "rt" ); 
-         //  - - - - - - - - - - - - - - - - - 
-   
-             if( !fp ) 
-                 return false; 
-   
-             while( !feof( fp ) ) 
-             { 
-                 fgets( fp, sBuffer, charsmax( sBuffer ) ); 
-   
-                 trim( sBuffer ); 
-   
-                 if( !sBuffer[0] || sBuffer[0] == ';' || ( sBuffer[0] == '/' && sBuffer[1] == '/' ) || sBuffer[0] != '"' ) 
-                     continue; 
-   
-                 if( ( contain( sBuffer, ".mp3^"" ) != -1 || contain( sBuffer, ".wav^"" ) != -1 ) && ( contain( sBuffer, "^"T^"" ) != -1 || contain( sBuffer, "^"CT^"" ) != -1 ) ) 
-                     return true; 
-             } 
-             fclose( fp ); 
-   
-             return false; 
-         } 
-     /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE 
-     *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par } 
-     */ 
-