removed useless _ folders

This commit is contained in:
Fred Beckhusen
2015-08-09 16:54:31 -05:00
parent fde850293c
commit 948a44dfba
5204 changed files with 2425579 additions and 0 deletions

3
Radio/Radio.sol Normal file
View File

@@ -0,0 +1,3 @@
<Solution name="Radio">
<Project name="Radio" path="Radio\Radio.prj" active="true"/>
</Solution>

View 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();
}
}

View 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
View 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>