#pragma semicolon 1
#include <amxmodx>
#include <api_player_music>
#define TRACK_START_DELAY 5.0
new const g_rgszMusicList[][] = {
"media/Half-Life05.mp3",
"media/Half-Life01.mp3",
"media/Half-Life02.mp3",
"media/Half-Life03.mp3",
"media/Half-Life04.mp3"
};
new PlayerMusic_Track:g_rgiTracks[sizeof(g_rgszMusicList)];
new g_pHudObj;
public plugin_precache() {
for (new i = 0; i < sizeof(g_rgszMusicList); ++i) {
g_rgiTracks[i] = PlayerMusic_LoadTrack(g_rgszMusicList[i]);
}
}
public plugin_init() {
register_plugin("Test Music System", "1.0.0", "Hedgehog Fog");
g_pHudObj = CreateHudSyncObj();
}
public client_putinserver(pPlayer) {
@Player_ScheduleTrack(pPlayer);
set_task(1.0, "Task_ShowTrackInfo", pPlayer, _, _, "b");
}
public PlayerMusic_OnTrackEnd(const pPlayer, const PlayerMusic_Track:track, bool:bStopped) {
@Player_ScheduleTrack(pPlayer);
}
@Player_ScheduleTrack(const &pPlayer) {
PlayerMusic_Player_PlayTrack(pPlayer, g_rgiTracks[random(sizeof(g_rgszMusicList))], TRACK_START_DELAY);
}
public Task_ShowTrackInfo(const pPlayer) {
new PlayerMusic_Track:track = PlayerMusic_Player_GetTrack(pPlayer);
if (track == PlayerMusic_Track_Invalid) {
ClearSyncHud(pPlayer, g_pHudObj);
return;
}
static szTrackTitle[64]; PlayerMusic_GetTrackTitle(track, szTrackTitle, charsmax(szTrackTitle));
static szArtist[64]; PlayerMusic_GetTrackArtist(track, szArtist, charsmax(szArtist));
static szAlbum[64]; PlayerMusic_GetTrackAlbum(track, szAlbum, charsmax(szAlbum));
new iYear = PlayerMusic_GetTrackYear(track);
static szMessage[512];
new iPos = 0;
iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Currently playing: %s^n", szTrackTitle);
iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Author: %s^n", szArtist);
iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Album: %s^n", szAlbum);
iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Year: %d^n", iYear);
if (PlayerMusic_Player_IsTrackStarted(pPlayer)) {
iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Time Left: %.0f seconds", PlayerMusic_Player_GetTrackTimeLeft(pPlayer));
} else {
iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Time Left: Scheduled");
}
set_hudmessage(random(256), random(256), random(256), 0.025, 0.1, 0, 0.0, 1.25, 0.0, 0.0);
ShowSyncHudMsg(pPlayer, g_pHudObj, szMessage);
}