[hidden]#include <amxmodx>
#include <colorchat>
new const Prefix[] = "[*M.R.K*] Zene"
new const Chat[] = "[Információ]"
new bool:g_musicOn[33]
new Array:g_musicPath
new Array:g_musicTitle
new g_musicCount
new g_cfgFile[128]
public plugin_init()
{
register_plugin("Music system (file)", "2.1", "8mTNNe")
register_clcmd("say /zene", "zenekeszlet")
register_clcmd("say_team /zene", "zenekeszlet")
register_clcmd("say /zeneki", "cmd_zeneki")
register_clcmd("say_team /zeneki", "cmd_zeneki")
register_clcmd("say /zenebe", "cmd_zenebe")
register_clcmd("say_team /zenebe", "cmd_zenebe")
register_logevent("Playzene", 2, "1=Round_End")
get_localinfo("amxx_configsdir", g_cfgFile, charsmax(g_cfgFile))
add(g_cfgFile, charsmax(g_cfgFile), "/mrk_music.ini")
}
public plugin_precache()
{
g_musicPath = ArrayCreate(128, 1)
g_musicTitle = ArrayCreate(64, 1)
g_musicCount = 0
load_music_file_and_precache()
}
public plugin_end()
{
if (g_musicPath) ArrayDestroy(g_musicPath)
if (g_musicTitle) ArrayDestroy(g_musicTitle)
}
public client_putinserver(id)
{
g_musicOn[id] = true; // alapból BE
}
public client_disconnected(id)
{
g_musicOn[id] = true;
}
stock load_music_file_and_precache()
{
if (!file_exists(g_cfgFile))
{
log_amx("[MRK-MUSIC] Hianyzo fajl: %s", g_cfgFile)
return
}
new fp = fopen(g_cfgFile, "rt")
if (!fp)
{
log_amx("[MRK-MUSIC] Nem tudom megnyitni: %s", g_cfgFile)
return
}
new line[256], left[160], right[96]
new fullpath[192]
while (!feof(fp))
{
fgets(fp, line, charsmax(line))
trim(line)
if (!line[0]) continue
if (line[0] == ';') continue
if (line[0] == '/' && line[1] == '/') continue
if (!split_by_pipe(line, left, charsmax(left), right, charsmax(right)))
continue
trim(left)
trim(right)
if (!left[0] || !right[0]) continue
ArrayPushString(g_musicPath, left)
ArrayPushString(g_musicTitle, right)
g_musicCount++
formatex(fullpath, charsmax(fullpath), "sound/%s", left)
precache_generic(fullpath)
}
fclose(fp)
log_amx("[MRK-MUSIC] Betoltve: %d zene (%s)", g_musicCount, g_cfgFile)
}
stock bool:split_by_pipe(const input[], left[], leftLen, right[], rightLen)
{
new pos = contain(input, "|")
if (pos == -1) return false
copy(left, leftLen, input)
left[pos] = 0
copy(right, rightLen, input[pos + 1])
return true
}
public Playzene()
{
if (g_musicCount <= 0) return
new idx = random_num(0, g_musicCount - 1)
new rel[160], mp3cmd[192]
ArrayGetString(g_musicPath, idx, rel, charsmax(rel))
formatex(mp3cmd, charsmax(mp3cmd), "sound/%s", rel)
for (new id = 1; id <= 32; id++)
{
if (!is_user_connected(id)) continue
if (!g_musicOn[id]) continue
client_cmd(id, "mp3 play ^"%s^"", mp3cmd)
}
}
public cmd_zeneki(id)
{
if (!is_user_connected(id)) return PLUGIN_HANDLED
g_musicOn[id] = false
client_cmd(id, "mp3 stop")
ColorChat(id, GREEN, "%s^1 Zene kikapcsolva. (/zenebe - bekapcsol)", Chat)
return PLUGIN_HANDLED
}
public cmd_zenebe(id)
{
if (!is_user_connected(id)) return PLUGIN_HANDLED
g_musicOn[id] = true
ColorChat(id, GREEN, "%s^1 Zene bekapcsolva. (/zeneki - kikapcsol)", Chat)
return PLUGIN_HANDLED
}
public zenekeszlet(id)
{
new cim[121]
formatex(cim, charsmax(cim), "%s \r- \dZene készlet", Prefix)
new menu = menu_create(cim, "keszlet_h")
new toggleLine[64]
formatex(toggleLine, charsmax(toggleLine), "\yZene: \w%s", g_musicOn[id] ? "BE" : "KI")
menu_additem(menu, toggleLine, "T")
if (g_musicCount <= 0)
{
menu_additem(menu, "\rNincs betöltött zene! (configs/mrk_music.ini)", "X")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
new title[96]
for (new i = 0; i < g_musicCount; i++)
{
ArrayGetString(g_musicTitle, i, title, charsmax(title))
menu_additem(menu, title, "M")
}
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public keszlet_h(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new info[2], name[64], access, callback
menu_item_getinfo(menu, item, access, info, charsmax(info), name, charsmax(name), callback)
if (info[0] == 'T')
{
g_musicOn[id] = !g_musicOn[id]
if (!g_musicOn[id])
{
client_cmd(id, "mp3 stop")
ColorChat(id, GREEN, "%s^1 Zene kikapcsolva. (/zenebe)", Chat)
}
else
{
ColorChat(id, GREEN, "%s^1 Zene bekapcsolva. (/zeneki)", Chat)
}
menu_destroy(menu)
zenekeszlet(id)
return PLUGIN_HANDLED
}
if (g_musicCount <= 0)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new idx = item - 1
if (idx < 0 || idx >= g_musicCount)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
if (!g_musicOn[id])
{
ColorChat(id, GREEN, "%s^1 A zene ki van kapcsolva. Kapcsold be: /zenebe", Chat)
menu_destroy(menu)
return PLUGIN_HANDLED
}
new rel[160], title[96], mp3cmd[192]
ArrayGetString(g_musicPath, idx, rel, charsmax(rel))
ArrayGetString(g_musicTitle, idx, title, charsmax(title))
formatex(mp3cmd, charsmax(mp3cmd), "sound/%s", rel)
client_cmd(id, "mp3 play ^"%s^"", mp3cmd)
ColorChat(id, GREEN, "%s^1 Jelenleg ez a zene szól: %s", Chat, title)
menu_destroy(menu)
return PLUGIN_HANDLED
}[/hidden]