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 );
}