Raised This Month: $32 Target: $400
 8% 

Jukebox v1.1 Problem


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
CrAzY MaN
Senior Member
Join Date: Mar 2017
Location: India
Old 12-31-2017 , 10:28   Jukebox v1.1 Problem
Reply With Quote #1

Does anyone know whats the problem with this code?
It shows MOTD but does not play!

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>

#define ADMIN_FLAG ADMIN_CFG
#define PREFIX "RGC Music"
#define MAX_SONGS_IN_QUEUE 10
#define TASK_ID 7878789

new const g_szBar[][] =
{
    
"====================",
    
"|===================",
    
"||==================",
    
"|||=================",
    
"||||================",
    
"|||||===============",
    
"||||||==============",
    
"|||||||=============",
    
"||||||||============",
    
"|||||||||===========",
    
"||||||||||==========",
    
"|||||||||||=========",
    
"||||||||||||========",
    
"|||||||||||||=======",
    
"||||||||||||||======",
    
"|||||||||||||||=====",
    
"||||||||||||||||====",
    
"|||||||||||||||||===",
    
"||||||||||||||||||==",
    
"|||||||||||||||||||=",
    
"||||||||||||||||||||"
}

enum _:GenresInfo
{
    
GenreName[64],
    
GenreSongsNum
}

enum _:SongsInfo
{
    
SongName[128],
    
SongUrl[256],
    
SongGenre,
    
SongTime
}

enum _:SettingsInfo
{
    
bool:b_on,
    
bool:b_hud,
    
i_repeat,
    
i_vol,
    
i_queue[MAX_SONGS_IN_QUEUE],
    
i_search_menu,
    
i_menu_choice,
    
i_genre,
    
i_hud_color[3],
    
Float:f_hud_pos[2],
    
Float:f_start_time,
    
Float:f_last_show_song
}

enum
{
    
_edit_none,
    
_edit_name,
    
_edit_url,
    
_edit_time,
    
_edit_genre
}

enum
{
    
_mode_none,
    
_mode_add,
    
_mode_remove,
    
_mode_edit
}

enum _:SongTempInfo
{
    
SongTempName[128],
    
SongTempUrl[256],
    
SongTempGenre[64],
    
SongTempTime
}

new 
iRequestsFile[64], iSongsFile[64], g_PlayerSettings[33][SettingsInfo], g_EditMode[33], g_EditSetting[33], g_TempSettings[33][SongTempInfo];
new 
gVaultvKey[32], vData[256];
new 
g_MsgSayText;
new 
iVolumeMenu;
new Array:
g_aGenres, Array:g_aSongs;
public 
plugin_init()
{
    
register_plugin("Jukebox""1.1""Wicked-");
    
register_cvar("jukebox_bywicked-""1.1"FCVAR_SERVER|FCVAR_SPONLY);

    
g_aGenres ArrayCreate(GenresInfo);
    
g_aSongs ArrayCreate(SongsInfo);

    
register_clcmd("say""cmdSay");
    
register_clcmd("say_team""cmdSay");
    
register_concmd("amx_requests""ViewRequests");
    
register_concmd("amx_del_requests""DeleteRequests");

    
register_concmd("Type_The_Song""Request_Song");
    
register_concmd("Type_Hud_Setting""Hud_Setting");
    
register_concmd("Type_Setting""SongEditSetting");
    
register_concmd("Find_Song""SearchForSong");

    
g_MsgSayText get_user_msgid("SayText");

    
set_task(150.0"message" ,0_0"b");
    
formatex(iRequestsFilecharsmax(iRequestsFile), "addons/amxmodx/configs/jukebox_req_songs.ini");
    
formatex(iSongsFilecharsmax(iSongsFile), "addons/amxmodx/configs/jukebox_songs.ini");
    
LoadSongs();
    
gVault nvault_open("jukebox");
    if(
gVault == INVALID_HANDLE)
        
set_fail_state("[RGC Music] nValut ERROR: =-> Invalid-Handle");
    
set_task(1.0"hud_display"0__"b");

    
iVolumeMenu menu_create("Choose Volume:""volumemenu_handler");
    
menu_additem(iVolumeMenu"\w15%""15"0);
    
menu_additem(iVolumeMenu"\w25%""25"0);
    
menu_additem(iVolumeMenu"\w50%""50"0);
    
menu_additem(iVolumeMenu"\w75%""75"0);
    
menu_additem(iVolumeMenu"\w100%""100"0);
    
menu_setprop(iVolumeMenuMPROP_EXITNAME"Back to \rMain Menu");
    
menu_setprop(iVolumeMenuMPROP_EXITMEXIT_ALL);
}

public 
cmdReplay(id)
{
    if(
g_PlayerSettings[id][i_queue][0] >= 0)
    {
        if(
task_exists(id+TASK_ID))
            
remove_task(id+TASK_ID)
        
PlayCurrentSong(id);
    }
    else
        
Jukebox_Print(id"There's no song playing now.");
}

public 
plugin_natives()
{
    
register_library("jukebox_bywicked")
    
register_native("stop_song""native_stop_song"1);
}
public 
native_stop_song(idStopJukebox(id);

LoadSongs()
{
    if(
file_exists(iSongsFile))
    {
        new 
iszData[512], iFilestr_gen[64], str_time[12], aGenreData[GenresInfo], aSongData[SongsInfo], genres_num ArraySize(g_aGenres);
        
iFile fopen(iSongsFile"rt");
        while(!
feof(iFile))
        {
            
fgets(iFileszDatacharsmax(szData));
            if(!
szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/'))
                continue;
            
parse(szDataaSongData[SongName],127aSongData[SongUrl],255str_gen,63str_time,11);
            for(
i=0;i<genres_num;i++)
            {
                
ArrayGetArray(g_aGenresiaGenreData);
                if(
equal(aGenreData[GenreName], str_gen))
                {
                    
aSongData[SongGenre] = i;
                    
aGenreData[GenreSongsNum]++;
                    
ArraySetArray(g_aGenresiaGenreData);
                    break;
                }
            }
            if(
== genres_num)
            {
                
aGenreData[GenreSongsNum] = 1;
                
copy(aGenreData[GenreName], 63str_gen);
                
ArrayPushArray(g_aGenresaGenreData);
                
aSongData[SongGenre] = i;
                
genres_num++;
            }
            
aSongData[SongTime] = str_to_num(str_time);
            
ArrayPushArray(g_aSongsaSongData);
        }
        
fclose(iFile);
    }
}

UpdateSongsFile(id)
{
    if(
file_exists(iSongsFile))
        
delete_file(iSongsFile);
    new 
iFileszData[512], iaSongData[SongsInfo], aGenreData[GenresInfo];
    
iFile fopen(iSongsFile"wt");
    
fputs(iFile"; ^"Song Name^" ^"Song Stream Url^" ^"Genre^" ^"Song Time In Seconds^"^n");
    
fputs(iFile"; If u put 2 or more songs with the exact same genre they will merge into one genre.^n");
    
fputs(iFile"; Link must end with .mp3^n");
    
fputs(iFile";^n; Example:^n;^"Blue Stahli The Pure And The Tainted^" ^"http://a.tumblr.com/tumblr_mcgfc9J6wa1rplis8o1.mp3^" ^"Rock^" ^"125^"^n");
    
for(i=0;i<ArraySize(g_aSongs);i++)
    {
        
ArrayGetArray(g_aSongsiaSongData);
        
ArrayGetArray(g_aGenresaSongData[SongGenre], aGenreData);
        
formatex(szDatacharsmax(szData), "^"%s^" ^"%s^" ^"%s^" ^"%d^"^n"aSongData[SongName], aSongData[SongUrl], aGenreData[GenreName], aSongData[SongTime]);
        
fputs(iFileszData);
    }
    
fclose(iFile);
    if(
id)
        
Jukebox_Print(id"Successfully updated songs file.");
}

public 
client_putinserver(id)
{
    if(
is_user_bot(id))
        return;
    for(new 
i=0;i<MAX_SONGS_IN_QUEUE;i++)
        
g_PlayerSettings[id][i_queue][i] = -1;
    new 
str_hud[6], str_hud_color[3][12], str_hud_position[2][12], str_vol[6], str_repeat[6];
    
get_user_authid(idvKeycharsmax(vKey));
    if(
nvault_get(gVaultvKeyvDatacharsmax(vData)))
    {
        
replace_all(vData,charsmax(vData),"#"," ");
        
parse(vDatastr_hud,5str_hud_color[0],11str_hud_color[1],11str_hud_color[2],11str_hud_position[0],11str_hud_position[1],11str_vol,5str_repeat,5);
        
g_PlayerSettings[id][b_on] = false;
        
g_PlayerSettings[id][b_hud] = str_to_num(str_hud);
        
g_PlayerSettings[id][i_hud_color][0] = str_to_num(str_hud_color[0]);
        
g_PlayerSettings[id][i_hud_color][1] = str_to_num(str_hud_color[1]);
        
g_PlayerSettings[id][i_hud_color][2] = str_to_num(str_hud_color[2]);
        
g_PlayerSettings[id][f_hud_pos][0] = _:str_to_float(str_hud_position[0]);
        
g_PlayerSettings[id][f_hud_pos][1] = _:str_to_float(str_hud_position[1]);
        
g_PlayerSettings[id][i_vol] = str_to_num(str_vol);
        
g_PlayerSettings[id][i_repeat] = str_to_num(str_repeat);
    }
    else
    {
        
g_PlayerSettings[id][b_on] = false;
        
g_PlayerSettings[id][b_hud] = true;
        
g_PlayerSettings[id][i_hud_color][0] = 0;
        
g_PlayerSettings[id][i_hud_color][1] = 255;
        
g_PlayerSettings[id][i_hud_color][2] = 0;
        
g_PlayerSettings[id][f_hud_pos][0] = _:0.11;
        
g_PlayerSettings[id][f_hud_pos][1] = _:0.05;
        
g_PlayerSettings[id][i_vol] = 75;
        
g_PlayerSettings[id][i_repeat] = 0;
    }
    
g_PlayerSettings[id][i_search_menu] = 0;
    
g_PlayerSettings[id][i_menu_choice] = -1;
    
g_EditSetting[id] = _edit_none;
    
g_EditMode[id] = _mode_none;
    
set_task(0.5"taskStopJukebox"id+5555);
}

public 
taskStopJukebox(id)
{
    
id -= 5555;
    
StopJukebox(id);
}

public 
client_disconnect(id)
{
    if(
is_user_bot(id))
        return;
    
get_user_authid(idvKeycharsmax(vKey));
    
formatex(vDatacharsmax(vData),"%d#%d#%d#%d#%.3f#%.3f#%d#%d#"g_PlayerSettings[id][b_hud], g_PlayerSettings[id][i_hud_color][0], g_PlayerSettings[id][i_hud_color][1], g_PlayerSettings[id][i_hud_color][2], g_PlayerSettings[id][f_hud_pos][0], g_PlayerSettings[id][f_hud_pos][1], g_PlayerSettings[id][i_vol], g_PlayerSettings[id][i_repeat]);
    
nvault_set(gVaultvKeyvData);
}

public 
hud_display()
{
    static 
idiPlayers[32], iNumiaSongData[SongsInfo], szTrackTime[64], szSong2Name[128];
    
get_players(iPlayersiNum);
    for(
i=0;i<iNum;i++)
    {
        
id iPlayers[i];
        if(
g_PlayerSettings[id][b_hud] && is_user_connected(id))
        {
            if(
g_PlayerSettings[id][i_queue][1] >= 0)
            {
                
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][1], aSongData);
                
copy(szSong2Namecharsmax(szSong2Name), aSongData[SongName]);
            }
            else
                
formatex(szSong2Namecharsmax(szSong2Name), "N/A");
            if(
g_PlayerSettings[id][i_queue][0] >= 0)
            {
                
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][0], aSongData);
                static 
gSongTime;
                
gSongTime aSongData[SongTime];
                if(
g_PlayerSettings[id][b_on])
                {
                    static 
secondsPassedPercentTime;
                    
secondsPassed floatround(get_gametime() - g_PlayerSettings[id][f_start_time])
                    
PercentTime floatround((float(secondsPassed)/float(gSongTime)) * 100.0)
                    
formatex(szTrackTimecharsmax(szTrackTime), "%d:%02d [%s] %d:%02d", (secondsPassed 60), (secondsPassed 60), g_szBar[PercentTime/5], (gSongTime 60), (gSongTime 60))
                }
                else
                    
formatex(szTrackTime63"0.00 [%s] %d:%02d"g_szBar[0], (gSongTime 60), (gSongTime 60))
            }
            else
            {
                
formatex(szTrackTime63"0.00 [%s] 0.00"g_szBar[0]);
                
formatex(aSongData[SongName], 127"N/A");
            }
            
set_hudmessage(g_PlayerSettings[id][i_hud_color][0], g_PlayerSettings[id][i_hud_color][1], g_PlayerSettings[id][i_hud_color][2], g_PlayerSettings[id][f_hud_pos][0], g_PlayerSettings[id][f_hud_pos][1], 00.11.00.10.5);
            
show_hudmessage(id"Now: %s^nTime: %s^nNext: %s"aSongData[SongName], szTrackTimeszSong2Name);
        }
    }
}

public 
SongEnd(id)
{
    
id -= TASK_ID
    
if(g_PlayerSettings[id][i_repeat] != 1)
    {
        for(new 
i=1;i<MAX_SONGS_IN_QUEUE;i++)
            
g_PlayerSettings[id][i_queue][i-1] = g_PlayerSettings[id][i_queue][i]
        
g_PlayerSettings[id][i_queue][MAX_SONGS_IN_QUEUE-1] = -1
        
if(g_PlayerSettings[id][i_repeat] == 2)
            
g_PlayerSettings[id][i_repeat] = 1;
    }
    if(
g_PlayerSettings[id][i_queue][0] >= 0)
        
PlayCurrentSong(id);
    else
        
g_PlayerSettings[id][b_on] = false;
}

public 
cmdPlaySong(id)
{
    if(
g_PlayerSettings[id][b_on])
    {
        
Jukebox_Print(id"You are currently listening to a song.");
        return 
PLUGIN_HANDLED;
    }
    if(
g_PlayerSettings[id][i_queue][0] < 0)
    {
        
Jukebox_Print(id"First pick a song to play.");
        
g_EditMode[id] = _mode_none;
        
GenresMenu(id);
    }
    else
        
PlayCurrentSong(id);
    return 
PLUGIN_HANDLED;
}

public 
cmdPlayNextSong(id)
{
    if(
g_PlayerSettings[id][i_queue][1] >= 0)
    {
        
g_PlayerSettings[id][b_on] = true;
        if(
task_exists(id+TASK_ID))
            
remove_task(id+TASK_ID);
        if(
g_PlayerSettings[id][i_repeat])
            
g_PlayerSettings[id][i_repeat] = 2;
        
SongEnd(id+TASK_ID);
    }
    else
        
Jukebox_Print(id"First put another song in queue.");
    return 
PLUGIN_HANDLED;
}

public 
cmdShowSongName(id)
{
    if(
g_PlayerSettings[id][i_queue][0] >= 0)
    {
        static 
Float:fGameTimeUseAfterTime;
        
fGameTime get_gametime();
        
UseAfterTime 15 floatround(fGameTime-g_PlayerSettings[id][f_last_show_song]);
        if(
UseAfterTime >= 0)
        {
            
Jukebox_Print(id"Don't spam the command. You can use it again after!g %d!t second%s."UseAfterTimeUseAfterTime == "" "s");
            return 
PLUGIN_HANDLED;
        }
        new 
aSongData[SongsInfo], szText[128], name[32], players[32], numplayer;
        
get_user_name(idnamecharsmax(name));
        
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][0], aSongData);
        
formatex(szTextcharsmax(szText), "!t%s!n's listening to !t%s!n."nameaSongData[SongName]);
        
get_players(playersnum);
        for(new 
i=0;i<num;i++)
        {
            
player players[i];
            if(
is_user_connected(player) && is_user_alive(id) == is_user_alive(player))
                
Jukebox_Print(playerszText);
        }
        
g_PlayerSettings[id][f_last_show_song] = _:fGameTime;
    }
    else
        
Jukebox_Print(id"You are not listening to a song now.");
    return 
PLUGIN_HANDLED;
}

public 
MainMenu(id)
{
    static 
szText[256], szTrackTime[64], aSongData[SongsInfo], szSong2Name[128];
    if(
g_PlayerSettings[id][i_queue][1] >= 0)
    {
        
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][1], aSongData);
        
copy(szSong2Namecharsmax(szSong2Name), aSongData[SongName]);
    }
    else
        
formatex(szSong2Namecharsmax(szSong2Name), "N/A");
    if(
g_PlayerSettings[id][i_queue][0] >= 0)
    {
        static 
gSongTime;
        
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][0], aSongData);
        
gSongTime aSongData[SongTime];
        if(
g_PlayerSettings[id][b_on])
        {
            static 
secondsPassedPercentTime;
            
secondsPassed floatround(get_gametime() - g_PlayerSettings[id][f_start_time]);
            
PercentTime floatround((float(secondsPassed)/float(gSongTime)) * 100.0);
            
formatex(szTrackTimecharsmax(szTrackTime), "%d:%02d [%s] %d:%02d", (secondsPassed 60), (secondsPassed 60), g_szBar[PercentTime/5], (gSongTime 60), (gSongTime 60));
        }
        else
            
formatex(szTrackTime63"0.00 [\w%s\r] %d:%02d"g_szBar[0], (gSongTime 60), (gSongTime 60));
    }
    else
    {
        
formatex(szTrackTime63"0.00 [\w%s\r] 0.00"g_szBar[0]);
        
formatex(aSongData[SongName], 127"N/A");
    }
    
formatex(szTextcharsmax(szText), "\wCurrent Song: \r%s^n\wSong Time Line: \r%s^n\wNext Song: \r%s^n\wVolume: \r%d%s"aSongData[SongName], szTrackTimeszSong2Nameg_PlayerSettings[id][i_vol], "%");
    new 
menu menu_create(szText"main_menu_handler");
    
formatex(szTextcharsmax(szText), "%s"g_PlayerSettings[id][i_queue][0] < "Play a song" "Add a song to queue");
    
menu_additem(menuszText"1"0);
    
menu_additem(menu"Find a Song""2"0);
    
formatex(szTextcharsmax(szText), "%s%s Current Song"g_PlayerSettings[id][i_queue][0] >= "\w" "\d", !g_PlayerSettings[id][b_on] ? "Play" "Stop");
    
menu_additem(menuszText"3"0);
    
formatex(szTextcharsmax(szText), "%sPlay Next Song"g_PlayerSettings[id][i_queue][1] >= "\w" "\d");
    
menu_additem(menuszText"4"0);
    
menu_additem(menu"Ajust Volume""5"0);
    
formatex(szTextcharsmax(szText), "Repeat Current Song \d[\r%s\d]"g_PlayerSettings[id][i_repeat] ? "Enabled" "Disabled");
    
menu_additem(menuszText"6"0);
    
menu_additem(menu"Hud Message Settings""7"0);
    
menu_additem(menu"Request a song to be added""8"0);
    if(
get_user_flags(id) & ADMIN_FLAG)
        
menu_additem(menu"Songs Settings^n""9"0);
    else
        
menu_addblank(menu1);
    
formatex(szTextcharsmax(szText), "Exit");
    
menu_additem(menuszText"0"0);
    
menu_setprop(menuMPROP_PERPAGE0);
    
menu_display(idmenu0);
    
g_PlayerSettings[id][i_search_menu] = 0;
    return 
PLUGIN_HANDLED;
}

public 
main_menu_handler(idmenuitem)    
{
    new 
data[6], accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), _,_callback);
    new 
key str_to_num(data)

    
menu_destroy(menu);
    switch(
key)
    {
        case 
0: return PLUGIN_HANDLED;
        case 
1:
        {
            
g_EditMode[id] = _mode_none;
            
GenresMenu(id);
            return 
PLUGIN_CONTINUE;
        }
        case 
2client_cmd(id"messagemode Find_Song");
        case 
3:
        {
            if(!
g_PlayerSettings[id][b_on])
            {
                if(
g_PlayerSettings[id][i_queue][0] >= 0)
                {
                    if(
task_exists(id+TASK_ID))
                        
remove_task(id+TASK_ID)
                    
PlayCurrentSong(id);
                }
                else
                    
Jukebox_Print(id"First choose a song to be played.");
            }
            else
                
StopJukebox(id);
        }
        case 
4:
        {
            if(
g_PlayerSettings[id][i_queue][1] >= 0)
            {
                
g_PlayerSettings[id][b_on] = true;
                if(
task_exists(id+TASK_ID))
                    
remove_task(id+TASK_ID);
                if(
g_PlayerSettings[id][i_repeat])
                    
g_PlayerSettings[id][i_repeat] = 2;
                
SongEnd(id+TASK_ID);
            }
            else
                
Jukebox_Print(id"First put another song in queue.");
        }
        case 
5:
        {
            
VolumeMenu(id);
            return 
PLUGIN_CONTINUE;
        }
        case 
6g_PlayerSettings[id][i_repeat] = (g_PlayerSettings[id][i_repeat] ? 1);
        case 
7:
        {
            
HudSettingsMenu(id);
            return 
PLUGIN_CONTINUE;
        }
        case 
8client_cmd(id"messagemode Type_The_Song");
        case 
9:
        {
            
SongsSettingsMenu(id);
            return 
PLUGIN_HANDLED
        
}
    }
    
MainMenu(id);
    return 
PLUGIN_HANDLED;
}

public 
SongsSettingsMenu(id)
{
    new 
menu menu_create("Songs Settings:""songsetings_menu_handler");
    
menu_additem(menu"Add Song""1"0);
    
menu_additem(menu"Remove Song""2"0);
    
menu_additem(menu"Edit Song""3"0);
    
menu_setprop(menuMPROP_EXITNAME"Back to \rMain Menu");
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
songsetings_menu_handler(idmenuitem)    
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), _,_callback);
    new 
key str_to_num(data);
    
menu_destroy(menu);
    switch(
key)
    {
        case 
1:
        {
            
g_EditMode[id] = _mode_add;
            
AddSongMenu(id);
        }
        case 
2:
        {
            
g_EditMode[id] = _mode_remove;
            
GenresMenu(id);
        }
        case 
3:
        {
            
g_EditMode[id] = _mode_edit;
            
GenresMenu(id);
        }
    }
    return 
PLUGIN_HANDLED;
}

AddSongMenu(id)
{
    static 
szText[256];
    new 
menu menu_create("Add Song Menu:""add_song_menu_handler");
    
formatex(szTextcharsmax(szText), "Song Name:^n\r%s"g_TempSettings[id][SongTempName]);
    
menu_additem(menuszText"1"0);
    
formatex(szTextcharsmax(szText), "Song Url:^n\r%s"g_TempSettings[id][SongTempUrl]);
    
menu_additem(menuszText"2"0);
    
formatex(szTextcharsmax(szText), "Song Genre:^n\r%s"g_TempSettings[id][SongTempGenre]);
    
menu_additem(menuszText"3"0);
    
formatex(szTextcharsmax(szText), "Song Time:^n\r%d \d(%d:%02d)^n"g_TempSettings[id][SongTempTime], (g_TempSettings[id][SongTempTime] / 60), (g_TempSettings[id][SongTempTime] % 60));
    
menu_additem(menuszText"4"0);
    
menu_additem(menu"\rAdd The Song""5"0);
    
menu_setprop(menuMPROP_EXITNAME"Back to \rSong Settings Menu");
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
add_song_menu_handler(idmenuitem)    
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        
g_EditMode[id] = _mode_none;
        
SongsSettingsMenu(id);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), _,_callback);
    new 
key str_to_num(data);
    
menu_destroy(menu);
    switch(
key)
    {
        case 
1,2,3,4:
        {
            
g_EditSetting[id] = key;
            
client_cmd(id"messagemode Type_Setting");
        }
        case 
5:
        {
            if(!
g_TempSettings[id][SongTempName][0])
                
Jukebox_Print(id"You need to put a song name first.");
            else if(!
g_TempSettings[id][SongTempUrl][0])
                
Jukebox_Print(id"You need to put a song url first.");
            else if(!
g_TempSettings[id][SongTempGenre][0])
                
Jukebox_Print(id"You need to put a song genre first.");
            else if(!
g_TempSettings[id][SongTempTime])
                
Jukebox_Print(id"You need to put a song time first.");
            else if(
strlen(g_TempSettings[id][SongTempName]) < 5)
                
Jukebox_Print(id"The song name must be 5 or more characters long.");
            else if(
strlen(g_TempSettings[id][SongTempUrl]) < 5)
                
Jukebox_Print(id"The song url must be 5 or more characters long.");
            else
            {
                new 
aGenreData[GenresInfo], aSongData[SongsInfo], genres_num ArraySize(g_aGenres), i;
                
copy(aSongData[SongName], 63g_TempSettings[id][SongTempName]);
                
copy(aSongData[SongUrl], 63g_TempSettings[id][SongTempUrl]);
                for(
i=0;i<genres_num;i++)
                {
                    
ArrayGetArray(g_aGenresiaGenreData);
                    if(
equal(aGenreData[GenreName], g_TempSettings[id][SongTempGenre]))
                    {
                        
aSongData[SongGenre] = i;
                        
aGenreData[GenreSongsNum]++;
                        
ArraySetArray(g_aGenresiaGenreData);
                        break;
                    }
                }
                if(
== genres_num)
                {
                    
aGenreData[GenreSongsNum] = 1;
                    
copy(aGenreData[GenreName], 63g_TempSettings[id][SongTempGenre]);
                    
ArrayPushArray(g_aGenresaGenreData);
                    
aSongData[SongGenre] = i;
                    
genres_num++;
                }
                
aSongData[SongTime] = g_TempSettings[id][SongTempTime];
                
ArrayPushArray(g_aSongsaSongData);
                
Jukebox_Print(id"Successfully added the song !g%s!t."g_TempSettings[id][SongTempName]);
                
UpdateSongsFile(id);
                
ResetTempSettings(id);
                
g_EditMode[id] = _mode_none;
                
SongsSettingsMenu(id);
                return 
PLUGIN_HANDLED;
            }
            
AddSongMenu(id);
        }
    }
    return 
PLUGIN_HANDLED;
}

EditSongMenu(id)
{
    static 
szText[256], aSongData[SongsInfo], aGenreData[GenresInfo];
    
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_menu_choice], aSongData);
    
ArrayGetArray(g_aGenresaSongData[SongGenre], aGenreData);
    new 
menu menu_create("Edit Song Menu:""edit_song_menu_handler");
    if(
g_TempSettings[id][SongTempName][0])
        
formatex(szTextcharsmax(szText), "Song Name:^n\r%s"g_TempSettings[id][SongTempName]);
    else
        
formatex(szTextcharsmax(szText), "Song Name:^n\r%s"aSongData[SongName]);
    
menu_additem(menuszText"1"0);
    if(
g_TempSettings[id][SongTempUrl][0])
        
formatex(szTextcharsmax(szText), "Song Url:^n\r%s"g_TempSettings[id][SongTempUrl]);
    else
        
formatex(szTextcharsmax(szText), "Song Url:^n\r%s"aSongData[SongUrl]);
    
menu_additem(menuszText"2"0);
    if(
g_TempSettings[id][SongTempGenre][0])
        
formatex(szTextcharsmax(szText), "Song Genre:^n\r%s"g_TempSettings[id][SongTempGenre]);
    else
        
formatex(szTextcharsmax(szText), "Song Genre:^n\r%s"aGenreData[GenreName]);
    
menu_additem(menuszText"3"0);
    if(
g_TempSettings[id][SongTempTime])
        
formatex(szTextcharsmax(szText), "Song Time:^n\r%d \d(%d:%02d)^n"g_TempSettings[id][SongTempTime], (g_TempSettings[id][SongTempTime] / 60), (g_TempSettings[id][SongTempTime] % 60));
    else
        
formatex(szTextcharsmax(szText), "Song Time:^n\r%d \d(%d:%02d)^n"aSongData[SongTime], (aSongData[SongTime] / 60), (aSongData[SongTime] % 60));
    
menu_additem(menuszText"4"0);
    
menu_additem(menu"\rConfurm Edit""5"0);
    
menu_setprop(menuMPROP_EXITNAME"Back to \rSong Settings Menu");
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
edit_song_menu_handler(idmenuitem)    
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        
g_EditMode[id] = _mode_none;
        
SongsSettingsMenu(id);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), _,_callback);
    new 
key str_to_num(data);
    
menu_destroy(menu);
    switch(
key)
    {
        case 
1,2,3,4:
        {
            
g_EditSetting[id] = key;
            
client_cmd(id"messagemode Type_Setting");
        }
        case 
5:
        {
            if(!
g_TempSettings[id][SongTempName][0] && !g_TempSettings[id][SongTempUrl][0] && !g_TempSettings[id][SongTempGenre][0] && !!g_TempSettings[id][SongTempTime])
            {
                
Jukebox_Print(id"No changes were made to the song.");
                
ResetTempSettings(id);
                
g_EditMode[id] = _mode_none;
                
SongsSettingsMenu(id);
                return 
PLUGIN_HANDLED;
            }
            if(
g_TempSettings[id][SongTempName][0] && strlen(g_TempSettings[id][SongTempName]) < 5)
                
Jukebox_Print(id"The song name must be 5 or more characters long.");
            else if(
g_TempSettings[id][SongTempUrl][0] && strlen(g_TempSettings[id][SongTempUrl]) < 5)
                
Jukebox_Print(id"The song url must be 5 or more characters long.");
            else
            {
                new 
aGenreData[GenresInfo], aSongData[SongsInfo], igenres_num ArraySize(g_aGenres);
                
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_menu_choice], aSongData);
                
ArrayGetArray(g_aGenresaSongData[SongGenre], aGenreData);
                if(
g_TempSettings[id][SongTempGenre][0] && !equal(aSongData[SongGenre], g_TempSettings[id][SongTempGenre]))
                {
                    if(
aGenreData[GenreSongsNum] < 2)
                    {
                        
ArrayDeleteItem(g_aGenresaSongData[SongGenre]);
                        
genres_num--;
                    }
                    else
                    {
                        
aGenreData[GenreSongsNum]--;
                        
ArraySetArray(g_aGenresaSongData[SongGenre], aGenreData);
                    }
                    for(
i=0;i<genres_num;i++)
                    {
                        
ArrayGetArray(g_aGenresiaGenreData);
                        if(
equal(aGenreData[GenreName], g_TempSettings[id][SongTempGenre]))
                        {
                            
aSongData[SongGenre] = i;
                            
aGenreData[GenreSongsNum]++;
                            
ArraySetArray(g_aGenresiaGenreData);
                            break;
                        }
                    }
                    if(
== genres_num)
                    {
                        
aGenreData[GenreSongsNum] = 1;
                        
copy(aGenreData[GenreName], 63g_TempSettings[id][SongTempGenre]);
                        
ArrayPushArray(g_aGenresaGenreData);
                        
aSongData[SongGenre] = i;
                        
genres_num++;
                    }
                }
                if(
g_TempSettings[id][SongTempName][0])
                    
copy(aSongData[SongName], 63g_TempSettings[id][SongTempName]);
                if(
g_TempSettings[id][SongTempUrl][0])
                    
copy(aSongData[SongUrl], 63g_TempSettings[id][SongTempUrl]);
                if(
g_TempSettings[id][SongTempTime])
                    
aSongData[SongTime] = g_TempSettings[id][SongTempTime];
                
ArraySetArray(g_aSongsg_PlayerSettings[id][i_menu_choice], aSongData);
                
Jukebox_Print(id"Successfully edited the song !g%s!t."g_TempSettings[id][SongTempName]);
                
UpdateSongsFile(id);
                
ResetTempSettings(id);
                
g_EditMode[id] = _mode_none;
                
SongsSettingsMenu(id);
                return 
PLUGIN_HANDLED;
            }
            
EditSongMenu(id);
        }
    }
    return 
PLUGIN_HANDLED;
}

ResetTempSettings(id)
{
    
copy(g_TempSettings[id][SongTempName], 127"");
    
copy(g_TempSettings[id][SongTempUrl], 255"");
    
copy(g_TempSettings[id][SongTempGenre], 63"");
    
g_TempSettings[id][SongTempTime] = 0;
}

RemoveSongConfurm(id)
{
    static 
szText[256], aSongData[SongsInfo];
    
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_menu_choice], aSongData);
    
formatex(szTextcharsmax(szText), "Are you sure u want to delete the song^n\r%s\w?^n"aSongData[SongName]);
    new 
menu menu_create(szText"del_confurm_song_menu_handler");
    
menu_additem(menu"\rYes, delete the song.""1"0);
    
menu_additem(menu"No, don't delete the song.""0"0);
    
menu_setprop(menuMPROP_EXITNAME"Back to \rSongs Menu");
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
del_confurm_song_menu_handler(idmenuitem)    
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        
AddSongToQueueMenu(id);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), _,_callback);
    
menu_destroy(menu);
    if(
str_to_num(data))
    {
        new 
aGenreData[GenresInfo], aSongData[SongsInfo], genres_num ArraySize(g_aGenres);
        
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_menu_choice], aSongData);
        
ArrayGetArray(g_aGenresaSongData[SongGenre], aGenreData);
        if(
aGenreData[GenreSongsNum] < 2)
        {
            
ArrayDeleteItem(g_aGenresaSongData[SongGenre]);
            
genres_num--;
        }
        else
        {
            
aGenreData[GenreSongsNum]--;
            
ArraySetArray(g_aGenresaSongData[SongGenre], aGenreData);
        }
        
ArrayDeleteItem(g_aSongsg_PlayerSettings[id][i_menu_choice]);
        
Jukebox_Print(id"Successfully deleted the song !g%s!t."_:aSongData[SongName]);
        
UpdateSongsFile(id);
        
ResetTempSettings(id);
        
g_EditMode[id] = _mode_none;
        
SongsSettingsMenu(id);
    }
    else
        
AddSongToQueueMenu(id);
    return 
PLUGIN_HANDLED;
}

public 
SongEditSetting(id)
{
    if(!
g_EditMode[id] || !g_EditSetting[id])
        return 
PLUGIN_HANDLED;
    new 
szArg[256];
    
read_argv(1szArgcharsmax(szArg));
    switch(
g_EditSetting[id])
    {
        case 
1copy(g_TempSettings[id][SongTempName], 127szArg);
        case 
2copy(g_TempSettings[id][SongTempUrl], 255szArg);
        case 
3copy(g_TempSettings[id][SongTempGenre], 63szArg);
        case 
4g_TempSettings[id][SongTempTime] = str_to_num(szArg);
    }
    if(
g_EditMode[id] == _mode_add)
        
AddSongMenu(id);
    else if(
g_EditMode[id] == _mode_edit)
        
EditSongMenu(id);
    return 
PLUGIN_HANDLED;
}

public 
DeleteRequests(id)
{
    if(!(
get_user_flags(id) & ADMIN_FLAG))
    {
        
client_print(idprint_console"You don't have the flags to delete the requests.");
        return 
PLUGIN_HANDLED;
    }
    if(!
file_exists(iRequestsFile))
    {
        
client_print(idprint_console"File with requests does not exist.");
        return 
PLUGIN_HANDLED;
    }
    
delete_file(iRequestsFile);
    
client_print(idprint_console"File deleted successfully");
    return 
PLUGIN_HANDLED;
}

public 
ViewRequests(id)
{
    if(!(
get_user_flags(id) & ADMIN_FLAG))
    {
        
client_print(idprint_console"You don't have the flags to view the requests.");
        return 
PLUGIN_HANDLED;
    }
    if(!
file_exists(iRequestsFile))
    {
        
client_print(idprint_console"File with requests does not exist.");
        return 
PLUGIN_HANDLED;
    }
    new 
szData[512], f;
    
client_print(idprint_console"---------- Song Requests ----------");
    
fopen(iRequestsFile"rt");
    while(!
feof(f))
    {
        
fgets(fszDatacharsmax(szData))
        
trim(szData);
        
client_print(idprint_consoleszData)
    }
    
fclose(f);
    return 
PLUGIN_HANDLED;
}

public 
SearchForSong(id)
{
    new 
gSong[32];
    
read_argv(1gSong31);
    
trim(gSong);
    if(
strlen(gSong) < 2)
    {
        
Jukebox_Print(id"You can't search with less than 2 symbols.");
        return 
PLUGIN_HANDLED;
    }
    static 
szMenu[64], i_str[6], bool:foundaSongData[SongsInfo];
    
found false;
    
formatex(szMenu63"Search results for: \r%s"gSong);
    new 
menu menu_create(szMenu,"search_menu_handler");
    for(new 
i=0;i<ArraySize(g_aSongs);i++)
    {
        
ArrayGetArray(g_aSongsiaSongData);
        if(
containi(aSongData[SongName], gSong) >= 0)
        {
            
num_to_str(ii_str5);
            
menu_additem(menuaSongData[SongName], i_str);
            if(!
found)
                
found true;
        }
    }
    if(!
found)
        
Jukebox_Print(id"No song found.");
    else
    {
        
menu_setprop(menuMPROP_EXITNAME"Back to \rMain Menu");
        
menu_setprop(menuMPROP_EXITMEXIT_ALL);
        
menu_display(idmenu0);
        
g_PlayerSettings[id][i_search_menu] = menu;
    }
    return 
PLUGIN_CONTINUE;
}

public 
search_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    new 
data[32], accesscallback;
    
menu_item_getinfo(menuitemaccessdata,31_,_callback);
    
g_PlayerSettings[id][i_menu_choice] = str_to_num(data);
    
ShowSongOptionsMenu(id);
    return 
PLUGIN_HANDLED;
}

public 
ShowSongOptionsMenu(id)
{
    static 
szText[256], songaGenreData[GenresInfo], aSongData[SongsInfo];
    
song g_PlayerSettings[id][i_menu_choice];
    
ArrayGetArray(g_aSongssongaSongData);
    
ArrayGetArray(g_aGenresaSongData[SongGenre], aGenreData);
    
formatex(szTextcharsmax(szText), "\wSong: \r%s^n\wSong Time: \r%d:%02d^n\wGenre: \r%s^n^n"aSongData[SongName], (aSongData[SongTime] / 60), (aSongData[SongTime] % 60), aGenreData[GenreName]);
    new 
menu menu_create(szText"song_options_menu_handler");
    
formatex(szTextcharsmax(szText), "\wPlay Now%s"g_PlayerSettings[id][i_queue][0] >= " \d(replace with current playing song)" "");
    
menu_additem(menuszText"0"0);
    if(
g_PlayerSettings[id][i_queue][0] >= 0)
    {
        
formatex(szTextcharsmax(szText), "%sAdd Song To Queue", (g_PlayerSettings[id][i_queue][MAX_SONGS_IN_QUEUE-1] >= 0) ? "\d" "\w");
        
menu_additem(menuszText"1"0);
    }
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
song_options_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        if(
g_PlayerSettings[id][i_search_menu])
            
menu_display(idg_PlayerSettings[id][i_search_menu], 0);
        else
            
AddSongToQueueMenu(id);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), _,_callback);
    
menu_destroy(menu);
    if(!
str_to_num(data))
    {
        if(
task_exists(id+TASK_ID))
            
remove_task(id+TASK_ID);
        
g_PlayerSettings[id][i_queue][0] = g_PlayerSettings[id][i_menu_choice];
        
PlayCurrentSong(id);
    }
    else
    {
        if(
g_PlayerSettings[id][i_queue][MAX_SONGS_IN_QUEUE-1] >= 0)
        {
            if(
g_PlayerSettings[id][b_on])
            {
                new 
aSongData[SongsInfo];
                
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][0], aSongData);
                new 
Float:Time float(aSongData[SongTime] + 1) - (get_gametime() - g_PlayerSettings[id][f_start_time]);
                
Jukebox_Print(id"Queue is full. Wait !g%d!t more seconds for the current song to end or just skip it."floatround(Time))
            }
            else
                
Jukebox_Print(id"Queue is full. You can skip the current song to free space for another.");
        }
        else
        {
            if(
g_PlayerSettings[id][i_queue][0] < 0)
            {
                
g_PlayerSettings[id][i_queue][0] = g_PlayerSettings[id][i_menu_choice];
                
PlayCurrentSong(id);
            }
            else
            {
                for(new 
i=0;i<MAX_SONGS_IN_QUEUE;i++)
                {
                    if(
g_PlayerSettings[id][i_queue][i] < 0)
                    {
                        
g_PlayerSettings[id][i_queue][i] = g_PlayerSettings[id][i_menu_choice];
                        break;
                    }
                }
            }
        }
    }
    
ShowSongOptionsMenu(id);
    return 
PLUGIN_HANDLED;
}

public 
Request_Song(id)
{
    new 
g_szSong[64], g_szName[32], g_szAuthID[32], szData[512], iFIlebool:suggested false;
    
get_user_name(idg_szNamecharsmax(g_szName));
    
get_user_authid(idg_szAuthIDcharsmax(g_szAuthID));
    if(
file_exists(iRequestsFile))
    {
        
iFIle fopen(iRequestsFile"rt");
        while(!
feof(iFIle))
        {
            
fgets(iFIleszDatacharsmax(szData))
            if(!
szData[0] || szData[0] == ';' || szData[0] == ' ' || ( szData[0] == '/' && szData[1] == '/' ))
                continue;
            if(
containi(szDatag_szAuthID) == -1)
                continue;
            
suggested true;
            break;
        }
        
fclose(iFIle);
        if(
suggested)
        {
            
Jukebox_Print(id"You can't request more than 1 song. Wait for it to be viewed and removed.");
            return 
PLUGIN_HANDLED;
        }
    }
    
read_argv(1g_szSong63);
    if(
strlen(g_szSong) < 5)
    {
        
Jukebox_Print(id"Your request has to have 5 or more symbols in it.")
        return 
PLUGIN_HANDLED;
    }
    
iFIle fopen(iRequestsFile"at");
    
formatex(szDatacharsmax(szData), "^n%s(%s) requested %s"g_szNameg_szAuthIDg_szSong)
    
fputs(iFIleszData);
    
fclose(iFIle);
    
Jukebox_Print(id"Song request was send.");
    return 
PLUGIN_CONTINUE;
}

public 
Hud_Setting(id)
{
    new 
arg[32], string[3][12];
    
read_argv(1arg31);
    
parse(argstring[0],11string[1],11string[2],11);
    new 
temp_num[3];
    
temp_num[0] = str_to_num(string[0]);
    
temp_num[1] = str_to_num(string[1]);
    
temp_num[2] = str_to_num(string[2]);
    if(
<= temp_num[0] <= 255 && <= temp_num[1] <= 255 && <= temp_num[2] <= 255)
    {
        if(
temp_num[0] < 20 && temp_num[1] < 20 && temp_num[2] < 20)
            
Jukebox_Print(id"If the 3 numbers are all less than !g20!t hud will be invisible. Try another color.");
        else
        {
            
g_PlayerSettings[id][i_hud_color][0] = temp_num[0];
            
g_PlayerSettings[id][i_hud_color][1] = temp_num[1];
            
g_PlayerSettings[id][i_hud_color][2] = temp_num[2];
            
Jukebox_Print(id"Changed hud color to !g%d %d %d!t."temp_num[0], temp_num[1], temp_num[2]);
        }
    }
    else
        
Jukebox_Print(id"You need to type 3 numbers from !g0!t to !g255!t.");
    
HudSettingsMenu(id);
    return 
PLUGIN_HANDLED;
}

public 
HudSettingsMenu(id)
{
    new 
menu menu_create("\rHud Settings:""hudsettings_menu_handler");
    new 
szText[64];
    
formatex(szText63"%s Hud"g_PlayerSettings[id][b_hud] ? "Hide" "Show");
    
menu_additem(menuszText"1");
    
formatex(szText63"Change Hud Colors [\r%d %d %d\w]"g_PlayerSettings[id][i_hud_color][0], g_PlayerSettings[id][i_hud_color][1], g_PlayerSettings[id][i_hud_color][2]);
    
menu_additem(menuszText"2");
    
formatex(szText63"Move Hud Up");
    
menu_additem(menuszText"3");
    
formatex(szText63"Move Hud Down");
    
menu_additem(menuszText"4");
    
formatex(szText63"Move Hud Left");
    
menu_additem(menuszText"5");
    
formatex(szText63"Move Hud Right");
    
menu_additem(menuszText"6");
    
formatex(szText63"Center The Hud");
    
menu_additem(menuszText"7");
    
menu_setprop(menuMPROP_EXITNAME"Back to \rMain Menu");
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
hudsettings_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }

    new 
data[64],name[64], access,callback
    menu_item_getinfo
(menuitemaccessdata,63name63callback)
    new 
key str_to_num(data)

    
menu_destroy(menu)
    switch(
key)
    {
        case 
1:
        {
            if(
g_PlayerSettings[id][b_hud])
                
g_PlayerSettings[id][b_hud] = false;
            else
                
g_PlayerSettings[id][b_hud] = true;
        }
        case 
2:
        {
            
client_cmd(id"messagemode Type_Hud_Setting");
            return 
PLUGIN_CONTINUE;
        }
        case 
3:
        {
            if(
g_PlayerSettings[id][f_hud_pos][1] == -1.0)
                
g_PlayerSettings[id][f_hud_pos][1] = _:0.49
            
else if(g_PlayerSettings[id][f_hud_pos][1] > 0.0)
                
g_PlayerSettings[id][f_hud_pos][1] -= 0.01
        
}
        case 
4:
        {
            if(
g_PlayerSettings[id][f_hud_pos][1] == -1.0)
                
g_PlayerSettings[id][f_hud_pos][1] = _:0.51
            
else if(g_PlayerSettings[id][f_hud_pos][1] < 1.0)
                
g_PlayerSettings[id][f_hud_pos][1] += 0.01
        
}
        case 
5:
        {
            if(
g_PlayerSettings[id][f_hud_pos][0] == -1.0)
                
g_PlayerSettings[id][f_hud_pos][0] = _:0.49
            
else if(g_PlayerSettings[id][f_hud_pos][0] > 0.0)
                
g_PlayerSettings[id][f_hud_pos][0] -= 0.01
        
}
        case 
6:
        {
            if(
g_PlayerSettings[id][f_hud_pos][0] == -1.0)
                
g_PlayerSettings[id][f_hud_pos][0] = _:0.51
            
else if(g_PlayerSettings[id][f_hud_pos][0] < 1.0)
                
g_PlayerSettings[id][f_hud_pos][0] += 0.01
        
}
        case 
7:
        {
            
g_PlayerSettings[id][f_hud_pos][0] = _:-1.0
            g_PlayerSettings
[id][f_hud_pos][1] = _:-1.0
        
}
    }
    
HudSettingsMenu(id);
    return 
PLUGIN_HANDLED;
}

public 
GenresMenu(id)
{
    if(!
ArraySize(g_aSongs))
    {
        
Jukebox_Print(id"There are no songs currently added.");
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    static 
menui_str[6], iszText[64], aGenreData[GenresInfo], aSongData[SongsInfo];
    if(
g_EditMode[id] == _mode_remove)
        
formatex(szTextcharsmax(szText), "\rREMOVE MODE ACTIVE^n\wChoose Genre:");
    else if(
g_EditMode[id] == _mode_edit)
        
formatex(szTextcharsmax(szText), "\rEDIT MODE ACTIVE^n\wChoose Genre:");
    else
        
formatex(szTextcharsmax(szText), "Choose Genre:");
    
menu menu_create(szText"genres_menu_handler");
    for(
i=0;i<ArraySize(g_aGenres);i++)
    {
        
ArrayGetArray(g_aGenresiaGenreData);
        
num_to_str(i+1000i_str5);
        
formatex(szText63"%s \d- \r%d songs"aGenreData[GenreName], aGenreData[GenreSongsNum])
        
menu_additem(menuszTexti_str);
    }
    for(
i=0;i<ArraySize(g_aSongs);i++)
    {
        
ArrayGetArray(g_aSongsiaSongData);
        if(
aSongData[SongGenre] == -1)
        {
            
num_to_str(ii_str5);
            
menu_additem(menuaSongData[SongName], i_str);
        }
    }
    
menu_setprop(menuMPROP_EXITNAME"Back to \rMain Menu");
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
    return 
PLUGIN_HANDLED;
}

public 
genres_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        
MainMenu(id)
        return 
PLUGIN_HANDLED
    
}
    new 
data[64], access,callback
    menu_item_getinfo
(menuitemaccessdata,63_,_callback)
    new 
iSongNum str_to_num(data);

    if(
iSongNum-1000 >= 0)
    {
        
g_PlayerSettings[id][i_genre] = iSongNum 1000;
        
menu_destroy(menu);
        
AddSongToQueueMenu(id);
        return 
PLUGIN_HANDLED;
    }

    if(
g_PlayerSettings[id][i_queue][0] < 0)
    {
        
g_PlayerSettings[id][i_queue][0] = iSongNum;
        
PlayCurrentSong(id);
    }
    else
    {
        for(new 
i=0;i<MAX_SONGS_IN_QUEUE;i++)
        {
            if(
g_PlayerSettings[id][i_queue][i] < 0)
            {
                
g_PlayerSettings[id][i_queue][i] = iSongNum;
                break;
            }
        }
    }
    
menu_destroy(menu);
    
GenresMenu(id);
    return 
PLUGIN_HANDLED;
}

public 
AddSongToQueueMenu(id)
{
    static 
menui_str[6], szText[64], iaSongData[SongsInfo];
    if(
g_EditMode[id] == _mode_remove)
        
formatex(szTextcharsmax(szText), "\rREMOVE MODE ACTIVE^n\wChoose Song:");
    else if(
g_EditMode[id] == _mode_edit)
        
formatex(szTextcharsmax(szText), "\rEDIT MODE ACTIVE^n\wChoose Song:");
    else
        
formatex(szTextcharsmax(szText), "Choose Song:");
    
menu menu_create(szText"songs_menu_handler")
    for(
i=ArraySize(g_aSongs) - 1;>= 0;i--)
    {
        
ArrayGetArray(g_aSongsiaSongData);
        if(
aSongData[SongGenre] == g_PlayerSettings[id][i_genre])
        {
            
num_to_str(ii_str5);
            
menu_additem(menuaSongData[SongName], i_str);
        }
    }
    
menu_setprop(menuMPROP_EXITNAME"Back to \rGenres Menu");
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0)
    return 
PLUGIN_HANDLED;
}

public 
songs_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        
GenresMenu(id);
        return 
PLUGIN_HANDLED;
    }
    new 
data[64], access,callback
    menu_item_getinfo
(menuitemaccessdata,63_,_callback)
    
g_PlayerSettings[id][i_menu_choice] = str_to_num(data);
    if(
g_EditMode[id] == _mode_remove)
        
RemoveSongConfurm(id);
    else if(
g_EditMode[id] == _mode_edit)
        
EditSongMenu(id);
    else
        
ShowSongOptionsMenu(id);
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

public 
VolumeMenu(id)    menu_display(idiVolumeMenu0);

public 
volumemenu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_cancel(id);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), _,_callback);
    
g_PlayerSettings[id][i_vol] = str_to_num(data);
    
menu_cancel(id);
    
MainMenu(id);
    if(
g_PlayerSettings[id][b_on] && g_PlayerSettings[id][i_queue][0] >= 0)
        
PlayCurrentSong(id);
    return 
PLUGIN_HANDLED;
}

public 
message() Jukebox_Print(0"!tType !g/music or /mp3 !nto open the !tMusic Menu.");

stock PlayCurrentSong(id)
{
    static 
aSongData[SongsInfo];
    
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][0], aSongData);
    
set_task(float(aSongData[SongTime]), "SongEnd"id+TASK_ID)
    
g_PlayerSettings[id][f_start_time] = _:get_gametime();
    static 
szMotd[2048], n;
    
formatex(szMotdcharsmax(szMotd), "<html><head><meta http-equiv=^"content-type^" content=^"text/htmlcharset=UTF-8^"></head>");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<body bgcolor=^"#000000^"><center><font color=^"#FFB000^" size=^"4^">Now listening to:<br/><b>%s</b></font><br><hr>", aSongData[SongName]);
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<object classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 codebase=http://www.microsoft.com/ntserver/netshow/download/en/nsmp2inf.cab#Version=5,1,51,415 type=application/x-oleobject name=msplayer width=256 height=65 align=^"middle^" id=msplayer>");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"enableContextMenu^" value=^"0^"><param name=^"stretchToFit^" value=^"1^">");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"AutoRewind^" value=^"0^">");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"Volume^" value=^"%d^">"g_PlayerSettings[id][i_vol]);
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"AutoStart^" value=^"1^"><param name=^"URL^" value=^"%s^">"aSongData[SongUrl]);
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"uiMode^" value=^"full^"><param name=^"width^" value=^"256^"><param name=^"height^" value=^"65^">");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"TransparentAtStart^" value=^"1^"></object><hr/><br/><br/>");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<font color=^"#FFB000^" size=^"2^">Songs in Queue:<br/>");
    
for(new i=1;i<MAX_SONGS_IN_QUEUE;i++)
    {
        if(
g_PlayerSettings[id][i_queue][i] >= 0)
        {
            
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][i], aSongData);
            
+= formatex(szMotd[n], charsmax(szMotd)-n"%d. %s<br/>"i+1aSongData[SongName]);
        }
        else
            
+= formatex(szMotd[n], charsmax(szMotd)-n"%d. N/A<br/>"i+1);
    }
    
+= formatex(szMotd[n], charsmax(szMotd)-n"</font></center></body></html>");
    
g_PlayerSettings[id][b_on] = true;
    
show_motd(idszMotd"Jukebox");
}

public 
StopJukebox(id)
{
    if(
task_exists(id+TASK_ID))
        
remove_task(id+TASK_ID)
    
g_PlayerSettings[id][b_on] = false;
    
show_motd(id"<html><head><meta http-equiv=^"content-type^" content=^"text/htmlcharset=UTF-8^"></head><body bgcolor=^"#000000^" align=^"center^"><center><span style=^"color: #FFB000; font-size: 19pt^">Jukebox stopped.</span></center></body></html>", "Stop Jukebox");
}

public 
cmdSay(id)
{
    static 
args[32];
    
read_args(argscharsmax(args));
    
remove_quotes(args);
    
trim(args);
    if(!
args[0] || args[0] == ' ')
        return;
    if(
args[0] == '/')
    {
        if(
equal(args"/jukebox") || equal(args"/music") || equal(args"/mp3"))    MainMenu(id);
        else if(
equal(args"/play"))    cmdPlaySong(id);
        else if(
equal(args"/stop"))    StopJukebox(id);
        else if(
equal(args"/next"))    cmdPlayNextSong(id);
        else if(
equal(args"/showsong"))    cmdShowSongName(id);
        else if(
equal(args"/replay"))    cmdReplay(id);
    }
    else
    {
        if(
equal(args"jukebox") || equal(args"music") || equal(args"mp3"))    MainMenu(id);
        else if(
equal(args"play"))    cmdPlaySong(id);
        else if(
equal(args"stop"))    StopJukebox(id);
        else if(
equal(args"next"))    cmdPlayNextSong(id);
        else if(
equal(args"showsong"))    cmdShowSongName(id);
        else if(
equal(args"replay"))    cmdReplay(id);
    }
}

Jukebox_Print(id, const szText[], any:...)
{
    static 
szNewText[192], iPlayers[32], iNum;
    
formatex(szNewTextcharsmax(szNewText), "!g[%s]!t %s"PREFIXszText);
    
replace_all(szNewTextcharsmax(szNewText), "!g""^x04");
    
replace_all(szNewTextcharsmax(szNewText), "!t""^x03");
    
replace_all(szNewTextcharsmax(szNewText), "!n""^x01");
    if(!
id)
    {
        
get_players(iPlayersiNum);
        if(
iNum 0)
            
MakeSayText(iPlayers[0], MSG_ALLszNewText);
    }
    else if(
is_user_connected(id))
        
MakeSayText(idMSG_ONEszNewText);
}

MakeSayText(idmsgtype, const szText[])
{
    
message_begin(msgtypeg_MsgSayText_id);
    
write_byte(id);
    
write_string(szText);
    
message_end();

__________________
CrAzY MaN is offline
CrAzY MaN
Senior Member
Join Date: Mar 2017
Location: India
Old 01-01-2018 , 03:56   Re: Jukebox v1.1 Problem
Reply With Quote #2

I think Problem is in this, but i dont know what!!!
HELP???

PHP Code:
stock PlayCurrentSong(id)
{
    static 
aSongData[SongsInfo];
    
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][0], aSongData);
    
set_task(float(aSongData[SongTime]), "SongEnd"id+TASK_ID)
    
g_PlayerSettings[id][f_start_time] = _:get_gametime();
    static 
szMotd[2048], n;
    
formatex(szMotdcharsmax(szMotd), "<html><head><meta http-equiv=^"content-type^" content=^"text/htmlcharset=UTF-8^"></head>");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<body bgcolor=^"#000000^"><center><font color=^"#FFB000^" size=^"4^">Now listening to:<br/><b>%s</b></font><br><hr>", aSongData[SongName]);
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<object classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 codebase=http://www.microsoft.com/ntserver/netshow/download/en/nsmp2inf.cab#Version=5,1,51,415 type=application/x-oleobject name=msplayer width=256 height=65 align=^"middle^" id=msplayer>");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"enableContextMenu^" value=^"0^"><param name=^"stretchToFit^" value=^"1^">");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"AutoRewind^" value=^"0^">");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"Volume^" value=^"%d^">"g_PlayerSettings[id][i_vol]);
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"AutoStart^" value=^"1^"><param name=^"URL^" value=^"%s^">"aSongData[SongUrl]);
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"uiMode^" value=^"full^"><param name=^"width^" value=^"256^"><param name=^"height^" value=^"65^">");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<param name=^"TransparentAtStart^" value=^"1^"></object><hr/><br/><br/>");
    
+= formatex(szMotd[n], charsmax(szMotd)-n"<font color=^"#FFB000^" size=^"2^">Songs in Queue:<br/>");
    
for(new i=1;i<MAX_SONGS_IN_QUEUE;i++)
    {
        if(
g_PlayerSettings[id][i_queue][i] >= 0)
        {
            
ArrayGetArray(g_aSongsg_PlayerSettings[id][i_queue][i], aSongData);
            
+= formatex(szMotd[n], charsmax(szMotd)-n"%d. %s<br/>"i+1aSongData[SongName]);
        }
        else
            
+= formatex(szMotd[n], charsmax(szMotd)-n"%d. N/A<br/>"i+1);
    }
    
+= formatex(szMotd[n], charsmax(szMotd)-n"</font></center></body></html>");
    
g_PlayerSettings[id][b_on] = true;
    
show_motd(idszMotd"Jukebox");

__________________
CrAzY MaN is offline
CrAzY MaN
Senior Member
Join Date: Mar 2017
Location: India
Old 01-03-2018 , 22:15   Re: Jukebox v1.1 Problem
Reply With Quote #3

None can help me?
__________________
CrAzY MaN is offline
Adomaz1
Senior Member
Join Date: Feb 2014
Old 01-04-2018 , 09:32   Re: Jukebox v1.1 Problem
Reply With Quote #4

Flash doesn't work for steamed players. I don't know but maybe you can use emit_sound, but I may be very wrong
Adomaz1 is offline
DjSoftero
Veteran Member
Join Date: Nov 2014
Location: Lithuania
Old 01-04-2018 , 09:39   Re: Jukebox v1.1 Problem
Reply With Quote #5

don`t double post.
https://forums.alliedmods.net/showthread.php?t=304007
__________________
retired chump
DjSoftero is offline
CrAzY MaN
Senior Member
Join Date: Mar 2017
Location: India
Old 01-07-2018 , 21:50   Re: Jukebox v1.1 Problem
Reply With Quote #6

Can i play url with "mp3 play [Media_Url]"???
__________________
CrAzY MaN is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 16:14.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode