Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*---------------------------------------------
- PlayListAudioStreamForPlayer
- PlayAudioStreamForPlayer with reproduction list
- by: [Y]Falcon
- -----------------------------------------------
- Functions List:
- native audioL_resetvars();
- native audioL_stoptrack(playerid);
- native audioL_resetpvars(playerid);
- native audioL_playtrack(playerid, trackid);
- native audioL_changetrack(playerid, next_track | previous_track);
- native audioL_executetrack(playerid, trackid, bool:execute_this_track);
- native audioL_conftrack(playerid, trackid, minutes, seconds, title[], url[]);
- native audioL_confpos(playerid, bool:usepos, Float:PosX, Float:PosY, Float:PosZ, Float:distance);
- */
- #define max_track (10)
- #define max_title (50)
- #define max_track_url (100)
- #define max_players (100)
- #define show_info (01)
- #define next_track (4102)
- #define previous_track (2102)
- enum e_audioinfo
- {
- track_minutes,
- track_seconds,
- track_duration,
- bool:execute_track,
- track_title[max_title],
- track_url[max_track_url]
- }
- enum e_otherinfo
- {
- timer_track,
- current_track,
- bool:tr_usepos,
- Float:trackPosX,
- Float:trackPosY,
- Float:trackPosZ,
- Float:trackdistance
- }
- new otherinfo[max_players][e_otherinfo];
- new audioinfo[max_players][max_track][e_audioinfo];
- #define audioL::%0(%1) forward %0(%1);\
- public %0(%1)
- audioL::audioL_resetvars()
- {
- for(new ii; ii != max_players; ii++)
- {
- otherinfo[ii][trackPosX] = 0;
- otherinfo[ii][trackPosY] = 0;
- otherinfo[ii][trackPosZ] = 0;
- otherinfo[ii][tr_usepos] = false;
- otherinfo[ii][trackdistance] = 0;
- otherinfo[ii][current_track] = 0;
- for(new xx; xx != max_track; xx++)
- {
- audioinfo[ii][xx][track_url] = EOS;
- audioinfo[ii][xx][track_title] = EOS;
- audioinfo[ii][xx][track_minutes] = 0;
- audioinfo[ii][xx][track_seconds] = 0;
- audioinfo[ii][xx][track_duration] = 0;
- audioinfo[ii][xx][execute_track] = false;
- }
- }
- return 0x01;
- }
- audioL::audioL_resetpvars(playerid)
- {
- otherinfo[playerid][trackPosX] = 0;
- otherinfo[playerid][trackPosY] = 0;
- otherinfo[playerid][trackPosZ] = 0;
- otherinfo[playerid][tr_usepos] = false;
- otherinfo[playerid][trackdistance] = 0;
- otherinfo[playerid][current_track] = 0;
- for(new xx; xx != max_track; xx++)
- {
- audioinfo[playerid][xx][track_url] = EOS;
- audioinfo[playerid][xx][track_title] = EOS;
- audioinfo[playerid][xx][track_minutes] = 0;
- audioinfo[playerid][xx][track_seconds] = 0;
- audioinfo[playerid][xx][track_duration] = 0;
- audioinfo[playerid][xx][execute_track] = false;
- }
- return 0x01;
- }
- audioL::audioL_stoptrack(playerid)
- {
- StopAudioStreamForPlayer(playerid);
- KillTimer(otherinfo[playerid][timer_track]);
- return 0x01;
- }
- audioL::audioL_playtrack(playerid, trackid)
- {
- if(trackid < 0 || trackid >= max_track) trackid = 0;
- if(audioinfo[playerid][trackid][execute_track] == false)
- return printf("[audioL_error] trackid %02i | playerid %02i is disabled", trackid, playerid);
- KillTimer(otherinfo[playerid][timer_track]);
- if(!otherinfo[playerid][tr_usepos]) PlayAudioStreamForPlayer(playerid, audioinfo[playerid][trackid][track_url]);
- else
- {
- PlayAudioStreamForPlayer(playerid, audioinfo[playerid][trackid][track_url],
- otherinfo[playerid][trackPosX], otherinfo[playerid][trackPosY], otherinfo[playerid][trackPosZ], otherinfo[playerid][trackdistance], 1);
- }
- static audioL_string[max_title + 38];
- #if defined show_info
- format(audioL_string, sizeof(audioL_string), "Audio info: %s | duration: %02i:%02i",
- audioinfo[playerid][trackid][track_title], audioinfo[playerid][trackid][track_minutes], audioinfo[playerid][trackid][track_seconds]);
- SendClientMessage(playerid, 0x8CAA63AA, audioL_string);
- #endif
- otherinfo[playerid][current_track] = trackid;
- otherinfo[playerid][timer_track] = SetTimerEx("audioL_nexttrack", audioinfo[playerid][trackid][track_duration] + 4000, false, "i", playerid);
- return 0x01;
- }
- audioL::audioL_changetrack(playerid, trackid)
- {
- KillTimer(otherinfo[playerid][timer_track]);
- otherinfo[playerid][current_track] = ((trackid == next_track) ? (otherinfo[playerid][current_track] += 1) : (otherinfo[playerid][current_track] -= 1));
- audioL_playtrack(playerid, otherinfo[playerid][current_track]);
- return 0x01;
- }
- audioL::audioL_executetrack(playerid, trackid, bool:execute_this_track)
- {
- audioinfo[playerid][trackid][execute_track] = execute_this_track;
- return 0x01;
- }
- audioL::audioL_conftrack(playerid, trackid, minutes, seconds, title[], url[])
- {
- audioinfo[playerid][trackid][execute_track] = true;
- audioinfo[playerid][trackid][track_minutes] = minutes;
- audioinfo[playerid][trackid][track_seconds] = seconds;
- format(audioinfo[playerid][trackid][track_url], max_track_url, url);
- format(audioinfo[playerid][trackid][track_title], max_title, title);
- audioinfo[playerid][trackid][track_duration] = ((minutes * 60) + (seconds * 1000));
- return 0x01;
- }
- audioL::audioL_confpos(playerid, bool:usepos, Float:PosX, Float:PosY, Float:PosZ, Float:distance)
- {
- otherinfo[playerid][tr_usepos] = usepos;
- if(usepos)
- {
- otherinfo[playerid][trackPosX] = PosX;
- otherinfo[playerid][trackPosY] = PosY;
- otherinfo[playerid][trackPosZ] = PosZ;
- otherinfo[playerid][trackdistance] = distance;
- }
- return 0x01;
- }
- audioL::audioL_nexttrack(playerid)
- {
- otherinfo[playerid][current_track] ++;
- audioL_playtrack(playerid, otherinfo[playerid][current_track]);
- return 0x01;
- }
Add Comment
Please, Sign In to add comment