list _radioURLs; list _radioStations; integer _linenum = 0; string _notecard = "stations"; reset_radio() { _radioURLs = [ "" ]; _radioStations = [ "off" ]; _linenum = 0; 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; i0) { station += " "; } station += llList2String(words, i); } _radioURLs += [url]; _radioStations += [station]; } default { state_entry() { reset_radio(); } changed(integer change) { if (change & CHANGED_INVENTORY) { reset_radio(); } } dataserver(key query_id, string data) { if (llGetListLength(_radioURLs) > 11) { llSay(0, "only the first 10 stations are avaliable"); } else { if (data != EOF) { add_station(data); _linenum++; llGetNotecardLine(_notecard, _linenum); return; } } llListen(93, "", NULL_KEY, ""); llSay(0, "touch to change stations"); } touch_start(integer touchNumber) { llDialog(llDetectedKey(0), "pick a station", _radioStations, 93); } listen(integer channel, string name, key id, string message) { string newURL = llList2String(_radioURLs, llListFindList(_radioStations, [message])); llSay(0, message + " ---> " + newURL); llSetParcelMusicURL(newURL); } }