[AMXX] Music Menu
100 lines
#include <amxmodx>
#include <amxmodx>
#define PLUGIN "New Plug-In"
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define VERSION "1.0"
#define AUTHOR "Author"
#define AUTHOR "Author"
new Array:g_musics
new Array:g_musics
new Array:g_m_name
new Array:g_m_name
new g_menu
new g_menu
public plugin_init()
public plugin_init()
{
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /music", "pfn_show_menu")
register_clcmd("say /music", "pfn_show_menu")
}
}
public plugin_precache()
public plugin_precache()
{
{
new FILE[] = "addons/amxmodx/configs/music.ini";
new FILE[] = "addons/amxmodx/configs/music.ini";
if(!file_exists(FILE))
if(!file_exists(FILE))
{
{
set_fail_state("Archivo music.ini no existe");
set_fail_state("Archivo music.ini no existe");
return
return
}
}
g_musics = ArrayCreate(128, 64);
g_musics = ArrayCreate(128, 64);
g_m_name = ArrayCreate(128)
g_m_name = ArrayCreate(128)
g_menu = menu_create("Musicas", "mh_musica")
g_menu = menu_create("Musicas", "mh_musica")
new fh = fopen(FILE, "r")
new fh = fopen(FILE, "r")
if(!fh)
if(!fh)
{
{
set_fail_state("Error abriendo music.ini");
set_fail_state("Error abriendo music.ini");
return
return
}
}
new line[132], name[32], loc[100], count
new line[132], name[32], loc[100]
count = 0
while(!feof(fh))
while(!feof(fh))
{
{
fgets(fh, line, charsmax(line))
fgets(fh, line, charsmax(line))
trim(line)
trim(line)
if(!line[0] || line[0] == ';')
if(!line[0] || line[0] == ';')
{
{
continue;
continue;
}
}
parse(line, name, charsmax(name), loc, charsmax(loc))
parse(line, name, charsmax(name), loc, charsmax(loc))
trim(name)
trim(name)
trim(loc)
trim(loc)
if(!loc[0] || !name[0])
if(!loc[0] || !name[0])
{
{
continue;
continue;
}
}
if(file_exists(loc))
if(file_exists(loc))
{
{
ArraySetString(g_musics, count, loc)
//ArraySetString(g_musics, count, loc)
ArraySetString(g_m_name, count, name)
ArrayPushString(g_musics, loc)
ArrayPushString(g_m_name, name)
if(is_mp3(loc))
if(is_mp3(loc))
{
{
precache_generic(loc)
precache_generic(loc)
}
}
else
else
{
{
precache_sound(loc)
precache_sound(loc)
}
}
menu_additem(g_menu, name)
menu_additem(g_menu, name)
}
}
else
else
{
{
log_amx("[MUSICAS] Archivo %s no existe", loc)
log_amx("[MUSICAS] Archivo %s no existe", loc)
}
}
}
}
fclose(fh)
fclose(fh)
menu_setprop(g_menu, MPROP_EXIT, MEXIT_ALL)
menu_setprop(g_menu, MPROP_EXIT, MEXIT_ALL)
}
}
public pfn_show_menu(id)
public pfn_show_menu(id)
{
{
menu_display(id, g_menu)
menu_display(id, g_menu)
}
}
public mh_musica(id, menu, item)
public mh_musica(id, menu, item)
{
{
if(item == MENU_EXIT)
if(item == MENU_EXIT)
{
{
return
return
}
}
if(item >= ArraySize(g_musics))
if(item >= ArraySize(g_musics))
{
{
return
return
}
}
new file[64]
new file[64]
ArrayGetString(g_musics, item, file, charsmax(file))
ArrayGetString(g_musics, item, file, charsmax(file))
client_cmd(id, "%s ^"%s^"", is_mp3(file) ? "mp3 play" : "spk", file)
client_cmd(id, "%s ^"%s^"", is_mp3(file) ? "mp3 play" : "spk", file)
client_print(id, print_chat, "[MUSICA] Estas escuchando %a", ArrayGetStringHandle(g_m_name, item))
client_print(id, print_chat, "[MUSICA] Estas escuchando %a", ArrayGetStringHandle(g_m_name, item))
}
}
stock bool:is_mp3(file[])
stock bool:is_mp3(file[])
{
{
if(equali(file[strlen(file) - 4], ".mp3"))
if(equali(file[strlen(file) - 4], ".mp3"))
{
{
return true;
return true;
}
}
return false
return false
}
}