removed useless _ folders
This commit is contained in:
3
Radio/Radio.sol
Normal file
3
Radio/Radio.sol
Normal file
@@ -0,0 +1,3 @@
|
||||
<Solution name="Radio">
|
||||
<Project name="Radio" path="Radio\Radio.prj" active="true"/>
|
||||
</Solution>
|
||||
342
Radio/Radio/Object/Fox Radio.lsl
Normal file
342
Radio/Radio/Object/Fox Radio.lsl
Normal file
@@ -0,0 +1,342 @@
|
||||
// YOU MUST REZ the Key Finder prim. Copy and paste your avatar key into the DONATE script. This is how you get donations.
|
||||
// I would leave the donate script Modifiable. This shows that you are not cheating by possibly stealing money. It helps to mention this in the manual or notecard, that you accepot donations and the script is viewable to prove you are honest.
|
||||
|
||||
// SEARCH for FOX to see my changes
|
||||
|
||||
// 1) Forces IndieSpectrum Radio = http://81.169.149.182:8016 to be the #1 pick in the list, always
|
||||
|
||||
// 2) Sets the land music url back to IndieSpectrumstream every time they touch the object.
|
||||
|
||||
// 3) Automatically go back to stream #1 an hour after it was set to a stream
|
||||
|
||||
// change this for 3 hours, currently set for 1.0 hours
|
||||
float TIMER = 9999900.0 ; // one hour to go back to Fox
|
||||
|
||||
// This Script Requires the "Radio Stations" notecard to operate.
|
||||
// See the "Radio Stations" notecard for the proper configuration when you wish to modify the stations list.
|
||||
|
||||
string _notecard = "Radio Stations";
|
||||
|
||||
integer chatChannel = 77;
|
||||
string HELP_MSG = "touch for station dialog, or use ch 77 to change stations (example \"/77 3\" to set station 3)";
|
||||
|
||||
list _radioURLs;
|
||||
list _radioStations;
|
||||
list theStations;
|
||||
|
||||
integer _linenum = 0;
|
||||
integer curStationOffset = 0;
|
||||
integer stationChunk = 6;
|
||||
integer curStationEnd = 5;
|
||||
integer totalStations = 0;
|
||||
integer dialogActive = 0;
|
||||
integer curIdx = -1;
|
||||
string dispStationStr = "";
|
||||
|
||||
string NEXT_MSG = "Next >>";
|
||||
string PREV_MSG = "<< Prev";
|
||||
string LIST_MSG = "List";
|
||||
|
||||
string CUR_SET = "c";
|
||||
string ALL_SET = "a";
|
||||
|
||||
list cmdNextChunk = [">>", "next", "Next", NEXT_MSG];
|
||||
list cmdPrevChunk = ["<<", "prev", "Prev", PREV_MSG];
|
||||
list cmdLsCur = ["ls", "list", LIST_MSG];
|
||||
list cmdLsAll = ["la", "listall"];
|
||||
list cmdSearch = ["s", "search"];
|
||||
|
||||
string newURL;
|
||||
string newDesc;
|
||||
|
||||
|
||||
|
||||
// FOX sets the parcel medial URL to default item
|
||||
|
||||
SetFox()
|
||||
{
|
||||
|
||||
return;
|
||||
// FOX: Set Radio to Fox when touched
|
||||
string newURL = llList2String(_radioURLs, 0);
|
||||
string newDesc = llList2String(_radioStations, 0);
|
||||
//llSay(0, newDesc + " = " + newURL);
|
||||
llSetParcelMusicURL(newURL);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-----------------------
|
||||
|
||||
reset_radio() {
|
||||
llSetText("starting radio ....", // message to display
|
||||
<1,0,0>, // color: <red,green,blue>
|
||||
1.0 ); // 1.0 = 100% opaque, 0.0 = transparent
|
||||
llListen(77, "", "", "");
|
||||
curStationOffset = 0;
|
||||
curStationEnd = 5;
|
||||
_linenum = 0;
|
||||
dialogActive = 0;
|
||||
_radioURLs = [];
|
||||
_radioStations = [];
|
||||
totalStations = 0;
|
||||
curIdx = -1;
|
||||
dispStationStr = "";
|
||||
|
||||
|
||||
// FOX:Added Fox Radio
|
||||
add_station("IndieSpectrum Radio = http://81.169.149.182:8016");
|
||||
|
||||
llGetNotecardLine(_notecard, _linenum);
|
||||
}
|
||||
|
||||
add_station(string line) {
|
||||
list words = llParseString2List(line, [" ", " ", "="], []);
|
||||
if (llGetListLength(words) < 2) {
|
||||
return;
|
||||
}
|
||||
string url = llList2String(words, llGetListLength(words) - 1);
|
||||
string station = "";
|
||||
integer i;
|
||||
|
||||
for (i=0; i<llGetListLength(words) - 1; i++) {
|
||||
if (llStringLength(station) > 0) {
|
||||
station += " ";
|
||||
}
|
||||
station += llList2String(words, i);
|
||||
}
|
||||
|
||||
_radioURLs += [url];
|
||||
_radioStations += [station];
|
||||
}
|
||||
|
||||
|
||||
curStations() {
|
||||
theStations = [PREV_MSG, LIST_MSG, NEXT_MSG];
|
||||
|
||||
integer i;
|
||||
dispStationStr = "";
|
||||
|
||||
// llWhisper(0, "offset: " + (string)curStationOffset);
|
||||
// llWhisper(0, "end: " + (string)curStationEnd);
|
||||
|
||||
for (i = curStationOffset; i <= curStationEnd; i++) {
|
||||
if (curIdx == i) {
|
||||
dispStationStr += "*";
|
||||
} else {
|
||||
dispStationStr += " ";
|
||||
}
|
||||
dispStationStr += (string) (i + 1) + ") ";
|
||||
dispStationStr += llList2String(_radioStations, i);
|
||||
dispStationStr += "\n";
|
||||
|
||||
theStations += (string)(i + 1);
|
||||
}
|
||||
|
||||
// FOX Dnate button
|
||||
theStations += ["Donate"];
|
||||
dispStationStr += "Donations are greatly appreciated!";
|
||||
}
|
||||
|
||||
|
||||
doNextSet() {
|
||||
curStationOffset += stationChunk;
|
||||
curStationEnd = curStationOffset + (stationChunk - 1);
|
||||
|
||||
if (curStationOffset >= totalStations) {
|
||||
curStationOffset = 0;
|
||||
curStationEnd = curStationOffset + (stationChunk - 1);
|
||||
}
|
||||
|
||||
if (curStationEnd >= totalStations) {
|
||||
curStationEnd = totalStations - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
doPrevSet() {
|
||||
if (curStationOffset > 1 && ((curStationOffset - stationChunk) < 1)) {
|
||||
curStationOffset = 0;
|
||||
} else {
|
||||
curStationOffset -= stationChunk;
|
||||
}
|
||||
|
||||
curStationEnd = curStationOffset + (stationChunk - 1);
|
||||
|
||||
if (curStationEnd >= totalStations) {
|
||||
curStationEnd = totalStations - 1;
|
||||
}
|
||||
|
||||
if (curStationOffset < 0) {
|
||||
curStationEnd = totalStations - 1;
|
||||
curStationOffset = totalStations - (stationChunk - 1);
|
||||
}
|
||||
}
|
||||
|
||||
doListStations(string mode) {
|
||||
integer i;
|
||||
integer startPos;
|
||||
integer endPos;
|
||||
|
||||
if (mode == "a") {
|
||||
startPos = 0;
|
||||
endPos = totalStations - 1;
|
||||
} else {
|
||||
startPos = curStationOffset;
|
||||
endPos = curStationEnd;
|
||||
}
|
||||
|
||||
for (i = startPos; i <= endPos; i++) {
|
||||
string newURL = llList2String(_radioURLs, i);
|
||||
string newDesc = llList2String(_radioStations, i);
|
||||
llSay(0, (string)(i + 1) + ": " + newDesc + " = " + newURL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
doSearch(string theTerm) {
|
||||
integer i;
|
||||
|
||||
llSay(0, "the term is " + theTerm);
|
||||
|
||||
for (i = 0; i < totalStations; i++) {
|
||||
string curString = llList2String(_radioStations, i);
|
||||
if (llSubStringIndex(curString, theTerm) != -1) {
|
||||
string newURL = llList2String(_radioURLs, i);
|
||||
llSay(0, (string)(i + 1) + ": " + curString + " = " + newURL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
|
||||
default {
|
||||
on_rez(integer start_param) {
|
||||
reset_radio();
|
||||
}
|
||||
|
||||
state_entry() {
|
||||
reset_radio();
|
||||
}
|
||||
|
||||
changed(integer change) {
|
||||
if (change & CHANGED_INVENTORY) {
|
||||
reset_radio();
|
||||
}
|
||||
}
|
||||
|
||||
dataserver(key query_id, string data) {
|
||||
if (data != EOF) {
|
||||
add_station(data);
|
||||
_linenum++;
|
||||
|
||||
if (_linenum % 5 == 0) {
|
||||
llSetText("starting: \n" + (string)_linenum + " stations ...", // message to display
|
||||
<1,0,0>, // color: <red,green,blue>
|
||||
1.0 ); // 1.0 = 100% opaque, 0.0 = transparent
|
||||
}
|
||||
llGetNotecardLine(_notecard, _linenum);
|
||||
return;
|
||||
}
|
||||
llListen(93, "", NULL_KEY, "");
|
||||
|
||||
totalStations = llGetListLength(_radioURLs);
|
||||
llSay(0, HELP_MSG);
|
||||
dialogActive = 1;
|
||||
llSetText("", <1,0,0>, 1.0 );
|
||||
}
|
||||
|
||||
touch_start(integer touchNumber) {
|
||||
|
||||
// FOX Dnate button
|
||||
SetFox(); // Force Fox station
|
||||
|
||||
curStations();
|
||||
|
||||
llDialog(llDetectedKey(0),
|
||||
dispStationStr,
|
||||
theStations, 93);
|
||||
}
|
||||
|
||||
listen(integer channel, string name, key id, string message) {
|
||||
|
||||
if (dialogActive == 0) {
|
||||
llWhisper(0, " ... still loading stations ...");
|
||||
return;
|
||||
}
|
||||
|
||||
if (message == "") {
|
||||
message = "cur";
|
||||
}
|
||||
|
||||
// FOX Dnate button
|
||||
if (message == "Donate") {
|
||||
llMessageLinked(LINK_THIS, 324235353254, "Donate", "");
|
||||
}
|
||||
|
||||
|
||||
|
||||
list words = llParseString2List(message, [" ", " ", "="], []);
|
||||
list testFind = llList2List(words, 0, 0);
|
||||
|
||||
if (llListFindList(cmdNextChunk, testFind) != -1) {
|
||||
doNextSet();
|
||||
curStations();
|
||||
if (channel == chatChannel) {
|
||||
doListStations(CUR_SET);
|
||||
} else {
|
||||
llDialog(id, dispStationStr,theStations, 93);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
else if (llListFindList(cmdPrevChunk, testFind) != -1) {
|
||||
doPrevSet();
|
||||
curStations();
|
||||
if (channel == chatChannel) {
|
||||
doListStations(CUR_SET);
|
||||
} else {
|
||||
llDialog(id, dispStationStr, theStations, 93);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
else if (llListFindList(cmdSearch, testFind) != -1) {
|
||||
doSearch(message);
|
||||
return;
|
||||
}
|
||||
|
||||
else if (llListFindList(cmdLsAll, testFind) != -1) {
|
||||
doListStations(ALL_SET);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
else if (llListFindList(cmdLsCur, testFind) != -1) {
|
||||
doListStations(CUR_SET);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
else if ((integer)message > 0 && (integer)message < 256) {
|
||||
curIdx = (integer)message - 1;
|
||||
|
||||
string newURL = llList2String(_radioURLs, curIdx);
|
||||
string newDesc = llList2String(_radioStations, curIdx);
|
||||
|
||||
llSay(0, "setting station " + message + ":");
|
||||
llSay(0, newDesc + " = " + newURL);
|
||||
llSetParcelMusicURL(newURL);
|
||||
|
||||
// FOX 1 hour timer
|
||||
// llSetTimerEvent(TIMER);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//FOX timer fires in XX seconds, and resets the system
|
||||
timer()
|
||||
{
|
||||
SetFox();
|
||||
}
|
||||
}
|
||||
349
Radio/Radio/Object/HTTP Radio.lsl
Normal file
349
Radio/Radio/Object/HTTP Radio.lsl
Normal file
@@ -0,0 +1,349 @@
|
||||
// :CATEGORY:Radio
|
||||
// :NAME:Radio
|
||||
// :AUTHOR:Ferd Frederix
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:39:00
|
||||
// :ID:673
|
||||
// :NUM:914
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// Always update large shoutcast radio system
|
||||
// :CODE:
|
||||
|
||||
|
||||
// Copyright 2010 Ferd Frederix
|
||||
// License:
|
||||
// Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
|
||||
// http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_US
|
||||
|
||||
|
||||
integer mode ; // true if we are in refresh mode
|
||||
list lCategories; // list of categories
|
||||
list lStations; // list of stations
|
||||
key http_request_id; // key of the current HTTP request
|
||||
integer busy = 0; // go away, I'm budy
|
||||
|
||||
integer type; // 3 possible http transactions
|
||||
string genre; // the category
|
||||
string url; // the last URL
|
||||
string station; // current station
|
||||
integer menuChannel; // int of the channel number
|
||||
key user; // the poerson who touched me
|
||||
integer listen_id; // int of the current listener
|
||||
string pubpriv = "Public";
|
||||
|
||||
// from the menu system http://wiki.secondlife.com/wiki/SimpleDialogMenuSystem
|
||||
integer N_DIALOG_CHOICES;
|
||||
integer MAX_DIALOG_CHOICES_PER_PG = 8; // if not offering back button, increase this to 9
|
||||
string PREV_PG_DIALOG_PREFIX = "< Page ";
|
||||
string NEXT_PG_DIALOG_PREFIX = "> Page ";
|
||||
string DIALOG_DONE_BTN = "Done";
|
||||
string DIALOG_BACK_BTN = "<< Back";
|
||||
|
||||
integer pageNum;
|
||||
list DIALOG_CHOICES;
|
||||
|
||||
giveDialog(key ID, integer pageNum) {
|
||||
|
||||
list buttons;
|
||||
integer firstChoice;
|
||||
integer lastChoice;
|
||||
integer prevPage;
|
||||
integer nextPage;
|
||||
string OnePage;
|
||||
|
||||
CancelListen();
|
||||
|
||||
menuChannel = llCeil(llFrand(1000000) + 11000000);
|
||||
listen_id = llListen(menuChannel,"","","");
|
||||
mode = FALSE;
|
||||
llSetTimerEvent(60);
|
||||
|
||||
|
||||
N_DIALOG_CHOICES = llGetListLength(DIALOG_CHOICES);
|
||||
|
||||
|
||||
if (N_DIALOG_CHOICES <= 10) {
|
||||
buttons = DIALOG_CHOICES;
|
||||
OnePage = "Yes";
|
||||
}
|
||||
else {
|
||||
integer nPages = (N_DIALOG_CHOICES+MAX_DIALOG_CHOICES_PER_PG-1)/MAX_DIALOG_CHOICES_PER_PG;
|
||||
|
||||
|
||||
if (pageNum < 1 || pageNum > nPages) {
|
||||
pageNum = 1;
|
||||
}
|
||||
firstChoice = (pageNum-1)*MAX_DIALOG_CHOICES_PER_PG;
|
||||
|
||||
lastChoice = firstChoice+MAX_DIALOG_CHOICES_PER_PG-1;
|
||||
|
||||
|
||||
if (lastChoice >= N_DIALOG_CHOICES) {
|
||||
lastChoice = N_DIALOG_CHOICES;
|
||||
}
|
||||
if (pageNum <= 1) {
|
||||
prevPage = nPages;
|
||||
nextPage = 2;
|
||||
}
|
||||
else if (pageNum >= nPages) {
|
||||
prevPage = nPages-1;
|
||||
nextPage = 1;
|
||||
}
|
||||
else {
|
||||
prevPage = pageNum-1;
|
||||
nextPage = pageNum+1;
|
||||
}
|
||||
buttons = llList2List(DIALOG_CHOICES, firstChoice, lastChoice);
|
||||
}
|
||||
|
||||
|
||||
// FYI, this puts the navigation button row first, so it is always at the bottom of the dialog
|
||||
list buttons01 = llList2List(buttons, 0, 2);
|
||||
list buttons02 = llList2List(buttons, 3, 5);
|
||||
list buttons03 = llList2List(buttons, 6, 8);
|
||||
list buttons04;
|
||||
if (OnePage == "Yes") {
|
||||
buttons04 = llList2List(buttons, 9, 11);
|
||||
}
|
||||
buttons = buttons04 + buttons03 + buttons02 + buttons01;
|
||||
|
||||
if (OnePage == "Yes") {
|
||||
buttons = [ DIALOG_DONE_BTN, DIALOG_BACK_BTN ]+ buttons;
|
||||
//omit DIALOG_BACK_BTN in line above if not offering
|
||||
|
||||
}
|
||||
else {
|
||||
buttons = [
|
||||
PREV_PG_DIALOG_PREFIX + (string)prevPage,
|
||||
DIALOG_BACK_BTN, NEXT_PG_DIALOG_PREFIX+(string)nextPage, DIALOG_DONE_BTN
|
||||
]+buttons;
|
||||
//omit DIALOG_BACK_BTN in line above if not offering
|
||||
}
|
||||
llDialog(ID, "Page "+(string)pageNum+"\nChoose one:", buttons, menuChannel);
|
||||
}
|
||||
|
||||
|
||||
CancelListen() {
|
||||
llListenRemove(listen_id);
|
||||
llSetTimerEvent(3600);
|
||||
mode = TRUE;
|
||||
}
|
||||
|
||||
|
||||
list shrink(list in)
|
||||
{
|
||||
list out;
|
||||
integer i;
|
||||
integer j = llGetListLength(in);
|
||||
for (; i < j; i++)
|
||||
{
|
||||
out += llGetSubString( llList2String(in,i), 0, 23);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
setStation()
|
||||
{
|
||||
llOwnerSay("Station set to " + genre + ":" + station + ":" + url);
|
||||
llSetParcelMusicURL(url);
|
||||
}
|
||||
|
||||
getCategories()
|
||||
{
|
||||
type = 1;
|
||||
busy = TRUE;
|
||||
string url = "http://www.outworldz.com/cgi/shoutcast.plx?search=1";
|
||||
http_request_id = llHTTPRequest(url, [], "");
|
||||
}
|
||||
|
||||
getCategory()
|
||||
{
|
||||
type = 2;
|
||||
busy = TRUE;
|
||||
string url = "http://www.outworldz.com/cgi/shoutcast.plx?genre=" + llEscapeURL(genre);
|
||||
|
||||
// llOwnerSay(url);
|
||||
|
||||
http_request_id = llHTTPRequest(url, [], "");
|
||||
}
|
||||
|
||||
getURL()
|
||||
{
|
||||
type = 3;
|
||||
busy = TRUE;
|
||||
string url = "http://www.outworldz.com/cgi/shoutcast.plx?genre=" + llEscapeURL(genre) + "&station=" + llEscapeURL(station);
|
||||
|
||||
//llOwnerSay(url);
|
||||
|
||||
http_request_id = llHTTPRequest(url, [], "");
|
||||
}
|
||||
|
||||
|
||||
|
||||
default {
|
||||
|
||||
on_rez(integer start_param)
|
||||
{
|
||||
llResetScript();
|
||||
}
|
||||
|
||||
state_entry()
|
||||
{
|
||||
getCategories();
|
||||
pageNum = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
touch_start(integer touchNumber)
|
||||
{
|
||||
user = llDetectedKey(0);
|
||||
if (!busy)
|
||||
{
|
||||
DIALOG_CHOICES = [pubpriv,"Categories","Show URL"];
|
||||
giveDialog(user, pageNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
llOwnerSay("Still loading stations, please wait a moment");
|
||||
}
|
||||
}
|
||||
|
||||
listen(integer channel, string name, key id, string message)
|
||||
{
|
||||
integer where ;
|
||||
if (message == "-")
|
||||
{
|
||||
giveDialog(user, pageNum);
|
||||
}
|
||||
else if ( message == DIALOG_DONE_BTN)
|
||||
{
|
||||
CancelListen();
|
||||
return;
|
||||
}
|
||||
else if (message == DIALOG_BACK_BTN)
|
||||
{
|
||||
pageNum = 1;
|
||||
|
||||
DIALOG_CHOICES = lCategories;
|
||||
giveDialog(user, pageNum);
|
||||
}
|
||||
else if (llSubStringIndex(message, PREV_PG_DIALOG_PREFIX) == 0)
|
||||
{
|
||||
pageNum = (integer)llGetSubString(message, llStringLength(PREV_PG_DIALOG_PREFIX), -1);
|
||||
giveDialog(user, pageNum);
|
||||
}
|
||||
else if (llSubStringIndex(message, NEXT_PG_DIALOG_PREFIX) == 0)
|
||||
{
|
||||
pageNum = (integer)llGetSubString(message, llStringLength(NEXT_PG_DIALOG_PREFIX), -1);
|
||||
giveDialog(user, pageNum);
|
||||
|
||||
} else { //this is the section where you do stuff
|
||||
if (message == "Categories")
|
||||
{
|
||||
DIALOG_CHOICES = lCategories;
|
||||
giveDialog(user, pageNum);
|
||||
}
|
||||
else if (message == "Public")
|
||||
{
|
||||
pubpriv = "Private";
|
||||
pageNum = 1;
|
||||
DIALOG_CHOICES = lCategories;
|
||||
giveDialog(user, pageNum);
|
||||
|
||||
}
|
||||
else if (message == "Private")
|
||||
{
|
||||
pubpriv = "Public";
|
||||
DIALOG_CHOICES = lCategories;
|
||||
pageNum = 1;
|
||||
giveDialog(user, pageNum);
|
||||
}
|
||||
else if (message == "Show URL")
|
||||
{
|
||||
string url = llGetParcelMusicURL();
|
||||
if (pubpriv == "Public")
|
||||
{
|
||||
llSay(0,"Parcel URL is " + url);
|
||||
}
|
||||
else
|
||||
{
|
||||
llOwnerSay("Parcel URL is " + url);
|
||||
}
|
||||
|
||||
pageNum = 1;
|
||||
|
||||
giveDialog(user, pageNum);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
CancelListen();
|
||||
|
||||
where = llListFindList(lCategories,[message]);
|
||||
if (where >= 0)
|
||||
{
|
||||
genre = message;
|
||||
getCategory();
|
||||
return;
|
||||
}
|
||||
|
||||
where = llListFindList(lStations,[message]);
|
||||
if (where >= 0)
|
||||
{
|
||||
station = message;
|
||||
getURL();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
http_response(key request_id, integer status, list metadata, string body)
|
||||
{
|
||||
if (request_id == http_request_id)
|
||||
{
|
||||
busy = FALSE;
|
||||
if (type == 1)
|
||||
{
|
||||
lCategories = llParseString2List(body,["|"],[]);
|
||||
lCategories= shrink(lCategories);
|
||||
DIALOG_CHOICES = lCategories;
|
||||
|
||||
}
|
||||
else if (type == 2)
|
||||
{
|
||||
lStations = llParseString2List(body,["|"],[]);
|
||||
lStations= shrink(lStations);
|
||||
DIALOG_CHOICES = lStations;
|
||||
pageNum = 1;
|
||||
giveDialog(user, pageNum);
|
||||
}
|
||||
else if (type == 3)
|
||||
{
|
||||
url = body;
|
||||
setStation();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
timer()
|
||||
{
|
||||
if (mode)
|
||||
{
|
||||
getCategories() ;
|
||||
}
|
||||
else
|
||||
{
|
||||
llListenRemove(listen_id);
|
||||
llWhisper(0, "Sorry. The menu timed out, click me again to change stations.");
|
||||
mode = TRUE;
|
||||
llSetTimerEvent(3600.0); //Stop the timer from being called repeatedly
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
6
Radio/Radio/Radio.prj
Normal file
6
Radio/Radio/Radio.prj
Normal file
@@ -0,0 +1,6 @@
|
||||
<Project name="Radio" guid="14b94962-1e1c-4ef2-9cb6-2cbe613fb066">
|
||||
<Object name="Object" guid="b1ebdb6d-f90d-459f-bfe0-acdabe655106" active="true">
|
||||
<Script name="HTTP Radio.lsl" guid="2213516e-df6e-4d02-ac34-673a795bc2ae">
|
||||
</Script>
|
||||
</Object>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user