Code:
#include < amxmodx >
#include < amxmisc >
new SongName[ 64 ][ 33 ];
new SongDirection[ 64 ][33 ];
new Count, menu;
public plugin_precache( ) read_config( ); // ir a la lectura .
public plugin_init( )
{
register_plugin( "Music in Game", "1.0" , "Luqqas" );
menu = menu_create( "\rSoundTracks disponibles:", "Music_Handled" );
static ToStr[ 35 ];
new i;
for( i = 0 ; i < Count ; i++ ) // loop desde 0 hasta donde termina de contar la leida.
{
num_to_str( i, ToStr, 9 );
menu_additem( menu, SongName[ i ], ToStr );
}
// en mi caso , yo tenia 4 temas en el ini , por lo tanto el contador queda en 4. pasamos de numero a string para agregar esta
// nuevo linea
num_to_str( i , ToStr, 9 )
menu_additem( menu, "Stop Music", ToStr ); // agregamos la funcion de pausar la musica luegos de los demas temas.
register_clcmd( "say /music", "clcmd_music" ); // registramos.
}
public clcmd_music( id )
{
menu_display( id, menu, 0 ); // mostramos menu
return PLUGIN_HANDLED;
}
public Music_Handled( id, menu, item )
{
if( item == MENU_EXIT )
return PLUGIN_HANDLED;
new szKey[ 2 ], _Access, _Callback;
menu_item_getinfo( menu, item, _Access, szKey, 1, "", 0, _Callback );
new key = str_to_num( szKey ); // obtenemos tecla presionada
if( key == Count ) // Si key es igual al final contador echo ( es decir, 4 ) , se pausea.
{
client_cmd( id, "stopsound" );
client_print( id , print_chat , "*** Pausaste la musica , para volver a elegir , teclea /music ***" );
}
else // sino , se reproduce.
{
client_cmd( id, "stopsound" ); // pausamos
client_print( id , print_chat, "Playing : %s", SongName[ key ] );// Mostramos el tema que se reproduce.
emit_player_sound( id , SongDirection[ key ] ); /// iniciamos la reproduccion
menu_display( id, menu, 0 ); // mostramos de nuevo el menu.
}
return PLUGIN_HANDLED;
}
read_config( )
{
new szFilename[136];
new szPath[ 64 ];
get_configsdir( szPath, 63 ); // obtenemos la direccion de configuracion
formatex( szFilename, 63, "%s/music_plugin.ini", szPath ); // formateamos con la direcion del archivo
static szData[ 256 ];
static iLen;
static iPos;
iPos = 0;
while ( read_file( szFilename , iPos++ , szData, 255, iLen ) ) // mientras leemos el archivo
{
// si no tiene nada o tiene al principio 2 "//" o un ";" o "#" se bloquea la lectura.
if (iLen == 0 || ( szData[ 0 ] == '/' && szData[ 1 ] == '/' ) || szData[ 0 ] == ';' || szData[ 0 ] == '#' )
continue;
parse( szData, SongName[ Count ], charsmax(SongName), SongDirection[ Count ], charsmax(SongDirection) );
// separamos el nombre de la letra con la direccion de la letra
// quedaria "Nombre" "Direccion a precachear"
precache_sound( SongDirection[ Count ] );// precacheamos
Count++; // contamos para poder en las celdas de songName y SongDirection
}
}
emit_player_sound( id, const Sound[] = EOS )
{
client_cmd( id , "%s %s", ( equal( Sound[ strlen(Sound) - 4 ] , ".mp3" ) ) ? "mp3 play" : "spk" , Sound );
}