Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Boombox filterscript created by Soumi.
- Copyright Soumi 2012.
- Commands:
- - /boombox : It will open a dialog where you can choose a radio station to play. After choosing the radio station,
- it will create a boombox object and starts playing the radio station for the players in range of 20.0.
- - /radiostation : To switch to another radio station.
- - /turnoff : To turn off the boombox.
- P.S : - If a player leaves the boombox range, the audio stream will stop for him.
- - If a player enters the boombox range, the audio stream will start playing for him.
- */
- #define filterscript
- #include <a_samp>
- #include <zcmd>
- #include <sscanf2>
- #include <streamer>
- // Colors defines
- #define GREY 0xCECECEFF
- #define WHITE 0xFFFFFFFF
- #define RED 0xAA3333AA
- #define GOLD 0xB8860BAA
- #define ACTION_COLOR 0xC2A2DAAA
- #define GREEN 0x33AA33AA
- #define ORANGE 0xFF9900AA
- #define GUARDS_RADIO 0x33CCFFAA
- #define DOCTORS_RADIO 0xFFC0CBAA
- #define YELLOW 0xFFFF00AA
- #define BRONZE 0x800000AA
- #define SILVER 0xF5F5F5FF
- // Player Stats
- enum PlayerInfo
- {
- BoomBoxObject,
- Float: BoomBoxObjectX,
- Float: BoomBoxObjectY,
- Float: BoomBoxObjectZ,
- BoomBoxStatus,
- BoomBoxLink[512],
- ListeningToBoomBox,
- }
- new PlayerStat[MAX_PLAYERS][PlayerInfo];
- forward OneSecondPlayerCheck(playerid);
- #if defined FILTERSCRIPT
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Boombox filterscript by Soumi ");
- print("--------------------------------------\n");
- LoadGangs();
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- #else
- main()
- {
- print("\n--------------------------------------");
- print(" Boombox filterscript by Soumi ");
- print("--------------------------------------\n");
- }
- #endif
- public OnPlayerConnect(playerid)
- {
- PlayerStat[playerid][BoomBoxStatus] = -1;
- PlayerStat[playerid][ListeningToBoomBox] = -1;
- SetTimerEx("OneSecondPlayerCheck", 1000, true, "d", playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(PlayerStat[playerid][BoomBoxStatus] == playerid)
- {
- DestroyDynamicObject(PlayerStat[playerid][BoomBoxObject]);
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerInRangeOfPoint(i, 20.0, PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ]))
- {
- StopAudioStreamForPlayer(i);
- PlayerStat[i][ListeningToBoomBox] = 0;
- }
- }
- }
- return 1;
- }
- public OneSecondPlayerCheck(playerid)
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(PlayerStat[i][BoomBoxStatus] == i && PlayerStat[playerid][ListeningToBoomBox] == -1)
- {
- if(IsPlayerInRangeOfPoint(i, 20.0, PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ]))
- {
- PlayAudioStreamForPlayer(playerid, PlayerStat[i][BoomBoxLink], PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ], 10.0, 1);
- PlayerStat[playerid][ListeningToBoomBox] = i;
- }
- }
- if(PlayerStat[i][BoomBoxStatus] == i && PlayerStat[playerid][ListeningToBoomBox] == i)
- {
- if(!IsPlayerInRangeOfPoint(i, 20.0, PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ]))
- {
- StopAudioStreamForPlayer(playerid);
- PlayerStat[playerid][ListeningToBoomBox] = -1;
- }
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == 8888)
- {
- if(!response) return 1;
- else if(response)
- {
- switch(listitem)
- {
- case 0:
- {
- if(PlayerStat[playerid][BoomBoxStatus] != playerid)
- {
- GetPlayerPos(playerid, PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ]);
- PlayerStat[playerid][BoomBoxObject] = CreateDynamicObject(2103 ,PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ] -1,0.0000000,0.00000000,0.00000000);
- PlayerStat[playerid][BoomBoxStatus] = playerid;
- format(PlayerStat[playerid][BoomBoxLink], 512, "http://somafm.com/tags.pls");
- SendClientMessage(playerid, GREEN, "Boombox turned [ON].");
- SendClientMessage(playerid, WHITE, "Use /radiostation to switch to another radio station!");
- }
- else if(PlayerStat[playerid][BoomBoxStatus] == playerid)
- {
- format(PlayerStat[playerid][BoomBoxLink], 512, "http://somafm.com/tags.pls");
- SendClientMessage(playerid, GREEN, "Radio station changed.");
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerInRangeOfPoint(i, 20.0, PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ]))
- {
- PlayAudioStreamForPlayer(i, PlayerStat[i][BoomBoxLink], PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ], 10.0, 1);
- }
- }
- }
- }
- case 1:
- {
- if(PlayerStat[playerid][BoomBoxStatus] != playerid)
- {
- GetPlayerPos(playerid, PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ]);
- PlayerStat[playerid][BoomBoxObject] = CreateDynamicObject(2103 ,PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ] -1,0.0000000,0.00000000,0.00000000);
- PlayerStat[playerid][BoomBoxStatus] = playerid;
- format(PlayerStat[playerid][BoomBoxLink], 512, "http://www.sky.fm/mp3/tophits.pls");
- SendClientMessage(playerid, GREEN, "Boombox turned [ON].");
- SendClientMessage(playerid, WHITE, "Use /radiostation to switch to another radio station!");
- }
- else if(PlayerStat[playerid][BoomBoxStatus] == playerid)
- {
- format(PlayerStat[playerid][BoomBoxLink], 512, "http://www.sky.fm/mp3/tophits.pls");
- SendClientMessage(playerid, GREEN, "Radio station changed.");
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerInRangeOfPoint(i, 20.0, PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ]))
- {
- PlayAudioStreamForPlayer(i, PlayerStat[i][BoomBoxLink], PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ], 10.0, 1);
- }
- }
- }
- }
- }
- }
- }
- return 1;
- }
- //-----------------------------------------------------------------------[Commands]------------------------------------------------------------------------------
- COMMAND:boombox(playerid, params[])
- {
- if(PlayerStat[playerid][BoomBoxStatus] == playerid) return SendClientMessage(playerid, GREY, "You can't use this command now.");
- if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, GREY, "You can't use this command now.");
- ShowPlayerDialog(playerid, 8888, DIALOG_STYLE_LIST, "Radio Stations:","SomaFM\nSkyFM","Play","Quit");
- return 1;
- }
- COMMAND:radiostation(playerid, params[])
- {
- if(PlayerStat[playerid][BoomBoxStatus] == -1) return SendClientMessage(playerid, GREY, "You can't use this command now.");
- ShowPlayerDialog(playerid, 8888, DIALOG_STYLE_LIST, "Radio Stations:","SomaFM\nWWOZ","Play","Quit");
- return 1;
- }
- COMMAND:turnoff(playerid, params[])
- {
- if(PlayerStat[playerid][BoomBoxStatus] == -1) return SendClientMessage(playerid, GREY, "You can't use this command now.");
- SendClientMessage(playerid, RED, "Boombox turned [OFF].");
- DestroyDynamicObject(PlayerStat[playerid][BoomBoxObject]);
- StopAudioStreamForPlayer(playerid);
- PlayerStat[playerid][BoomBoxStatus] = -1;
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerInRangeOfPoint(i, 20.0, PlayerStat[playerid][BoomBoxObjectX], PlayerStat[playerid][BoomBoxObjectY], PlayerStat[playerid][BoomBoxObjectZ]))
- {
- StopAudioStreamForPlayer(i);
- PlayerStat[i][ListeningToBoomBox] = -1;
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement