#include <amxmodx>
#define PLUGIN "Simple RoundEndSounds"
#define VERSION "1.1"
#define AUTHOR "mforce"
#define MAX_MUSIC 32
new const PREFIX[] = "RoundEndSounds"
new musics[MAX_MUSIC][64], music_count, play_count, bool:musicon[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /korvegi", "music_on");
register_event("SendAudio", "PlayMusic", "a", "2&%!MRAD_ctwin");
register_event("SendAudio", "PlayMusic", "a", "2&%!MRAD_terwin");
}
public plugin_precache() {
new sBuffer[192], sFile[128], sData[64], pFile;
get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
format(sFile, charsmax(sFile), "%s/korvegi_zene.ini", sFile);
pFile = fopen(sFile, "rt");
if(pFile) {
while(music_count < MAX_MUSIC && !feof(pFile)) {
fgets(pFile, sBuffer, charsmax(sBuffer));
trim(sBuffer);
if(!sBuffer[0] || sBuffer[0] == ';')
continue;
if(parse(sBuffer, sData, charsmax(sData))) {
if(contain(sData, ".mp3") != -1) {
precache_sound(sData);
copy(musics[music_count++], charsmax(musics[]), sData);
}
}
}
fclose(pFile);
}
else {
write_file(sFile, "; Ide irj mp3 fajlokat, pl:");
write_file(sFile, "; sound/mappa/valami.mp3");
}
// ❗ NEM dobunk hibát, csak logolunk
if(!music_count) {
log_amx("[RoundEndSounds] Nincs zene az ini fajlban, korvegi zene kikapcsolva.");
}
}
public music_on(id) {
switch(musicon[id]) {
case true: {
ChatColor(id, "^4[%s]^1 Kikapcsoltad a körvégi zenéket.", PREFIX);
musicon[id] = false;
client_cmd(id, "setinfo korvegi 0");
}
case false: {
ChatColor(id, "^4[%s]^1 Bekapcsoltad a körvégi zenéket.", PREFIX);
musicon[id] = true;
client_cmd(id, "setinfo korvegi 1");
}
}
}
public client_putinserver(id) {
if(user_roundmusic(id)) {
musicon[id] = true;
}
}
public client_disconnect(id) {
musicon[id] = false;
}
public PlayMusic() {
// ❗ Ha nincs zene, ne csináljon semmit
if(!music_count)
return;
new Mp3File[128], players[32], num, tempid;
formatex(
Mp3File,
charsmax(Mp3File),
"sound/%s",
musics[play_count == music_count ? (play_count = 0) : play_count++]
);
get_players(players, num, "c");
for(new i; i < num; i++) {
tempid = players[i];
if(musicon[tempid]) {
client_cmd(tempid, "mp3 play %s", Mp3File);
}
}
}
stock bool:user_roundmusic(id) {
new azonosit[8];
get_user_info(id, "korvegi", azonosit, charsmax(azonosit));
if(equal(azonosit, "0"))
return false;
return true;
}
stock ChatColor(const id, const szMessage[], any:...) {
static pnum, players[32], szMsg[190], IdMsg;
vformat(szMsg, charsmax(szMsg), szMessage, 3);
if(!IdMsg)
IdMsg = get_user_msgid("SayText");
if(id) {
if(!is_user_connected(id))
return;
players[0] = id;
pnum = 1;
}
else get_players(players, pnum, "ch");
for(new i; i < pnum; i++) {
message_begin(MSG_ONE, IdMsg, .player = players[i]);
write_byte(players[i]);
write_string(szMsg);
message_end();
}
}