Kód:
#include <amxmodx>
#include <amxmisc>
enum _:sound_Properties
{
    sound[64],
    soundname[64]
}
new Array:g_aSongFile;
new CountMusic;
new bool:isMusicOn[33];
new Prefix;
public plugin_init()
{
    register_plugin("RoundEndSound", "1.0", "Adek");
    register_event("SendAudio", "PlayRoundEndMusic", "a", "2&%!MRAD_ctwin")
    register_event("SendAudio", "PlayRoundEndMusic", "a", "2&%!MRAD_terwin")
    register_dictionary("roundendmusic.txt")
    register_clcmd("say /roundendmusic", "cmdMusic")
    Prefix = register_cvar("RoundEndMusic_Prefix", "<Prefix>")
}
public plugin_precache()
{
LoadFile();
}
public plugin_cfg()
{
    new path[64];
    get_configsdir(path, charsmax(path))
    formatex(path, charsmax(path), "%s/roundend.cfg", path);
    if(file_exists(path))
    {
        server_cmd("exec %s", path);
        server_exec();
        console_print(0, "%L", 0, "CONFIGLOADING")
    }
    else
    {
        console_print(0, "%L", 0, "NOCONFIGFILE")
    }
}
LoadFile()
{
    g_aSongFile = ArrayCreate(sound_Properties);
    new path[64];
    get_configsdir(path, charsmax(path))
    formatex(path, charsmax(path), "%s/musiclist.ini", path);
    if(file_exists(path))
    {
        new szLineData[sound_Properties], szBuffer[512];
        new file = fopen(path, "rt");
        if (!file) return;
        while (!feof(file))
        {
            fgets(file, szBuffer, charsmax(szBuffer))
            replace(szBuffer, charsmax(szBuffer), "^n", "")
                 
            if( !szBuffer[ 0 ] || szBuffer[ 0 ] == '/' || szBuffer[ 0 ] == ';' )
             continue;
 
            parse(szBuffer, szLineData[sound], 63,szLineData[soundname], 63);
            precache_sound(szLineData[sound]);
            remove_quotes(szLineData);
            ArrayPushArray( g_aSongFile, szLineData );
        }
        console_print(0, "%L", 0, "LOADINGMUSIC",ArraySize(g_aSongFile))
        fclose(file)
    }
}
public PlayRoundEndMusic()
{
    new iPrefix[32], iString[64], players[32], num, tempid;
    get_pcvar_string(Prefix, iPrefix, 32)
    new iSound[sound_Properties];
    ArrayGetArray(g_aSongFile, CountMusic, iSound);
    get_players(players, num, "c");
    formatex(iString, charsmax(iString), "sound/%s", iSound[sound])
    for(new i; i < num; i++) 
    {
        tempid = players[i];
      if(isMusicOn[tempid]) 
        {
            client_cmd(i, "mp3 stop");
            client_cmd(i, "mp3 play %s", iString);
      }
   }
    client_print_color(0, print_team_default, "^4%s ^1%L", iPrefix, LANG_PLAYER, "SONG", iSound[soundname]);
    if(!(CountMusic == ArraySize(g_aSongFile)-1))
        CountMusic++;
    else
        CountMusic = 0;
    return PLUGIN_HANDLED;
}
stock bool:roundendmusicon(id) 
{
   new Data[15];
   get_user_info(id, "roundendmusic", Data, charsmax(Data));
   if(equal(Data, "0")) return false;
   return true;
}
public client_putinserver(id)
{
    if(roundendmusicon(id)) 
    {
      isMusicOn[id] = true;
   }
}
public client_disconnected(id) 
{
   isMusicOn[id] = false;
}
public cmdMusic(id) 
{
    new iPrefix[32];
    get_pcvar_string(Prefix, iPrefix, 32)
    switch(isMusicOn[id]) 
    {
      case true: {
         client_print_color(id, print_team_default, "^4%s^1 %L", iPrefix, LANG_PLAYER, "CMDMUSICOFF")
         isMusicOn[id] = false;
         client_cmd(id, "setinfo roundendmusic 0")
      }
      case false: {
         client_print_color(id, print_team_default, "^4%s^1 %L", iPrefix, LANG_PLAYER, "CMDMUSICON")
         isMusicOn[id] = true;
         client_cmd(id, "setinfo roundendmusic 1")
      }
   }
}
public plugin_end( )
{
   ArrayDestroy( g_aSongFile );
}