Search the Community

Showing results for tags 'server'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • People Forum
    • Your Avatar
    • Make Friends
    • Lifestyles and Relationships
    • Role Play
    • General Discussion Forum
    • Forums Feedback
    • Missed Connections
    • Second Life Education
  • Places and Events Forum
    • Favorite Destinations
    • Upcoming Events and Activities
    • Games in Second Life
  • Official Contests & Events
    • Leap Into Love Snapshot Contest
  • Creation Forum
    • Fashion
    • Art, Music and Photography
    • Animation Forum
    • Bakes on Mesh
    • Machinima Forum
    • Building and Texturing Forum
    • Mesh
    • LSL Scripting
    • LSL Library
    • Sansar for Second Life Residents
  • Technology Forum
    • Second Life Server
    • Second Life Viewer
    • Second Life Web
    • General Second Life Tech Discussion
  • Commerce Forum
    • Merchants
    • Inworld Employment
    • Wanted
  • Land Forum
    • General Discussion
    • Mainland
    • Regions for Sale: Full Private Island
    • Region for Rent: Full Private Island
    • Regions for Sale: Homesteads
    • Region Rentals: Homestead
    • Parcels for Sale: Mainland
    • Parcels for Rent: Mainland
    • Wanted: Full Private Island
    • Wanted: Homesteads
    • Wanted: Mainland
  • International Forum
    • Deutsches Forum
    • Foro en español
    • Forum in italiano
    • Forum français
    • 日本語フォーラム
    • 한국어 포럼
    • Fórum em português
    • Forum polskie
    • المنتدى العربي
    • Türkçe Forum
    • Форум по-русски
  • Adult Content Forum
    • Highlight Upcoming Events
    • General Discussion
    • General Announcements
  • Answers
    • Abuse and Griefing
    • Account
    • Avatar
    • Creation
    • Inventory
    • Getting Started
    • Controls
    • Land
    • Linden Dollars (L$)
    • Shopping
    • Technical
    • Viewers
    • Everything Else
    • International Answers

Blogs

  • Commerce
  • Grid Status Update
  • Featured News
  • Inworld
  • Tools and Technology
  • Tips and Tricks
  • Land
  • Second Life Pic of the Day 08.10.2017

Categories

  • English
  • Deutsch
  • Français
  • Español
  • Português
  • 日本語
  • Italiano
  • Pусский
  • Türkçe

Found 18 results

  1. Like the title somewhat suggest the goal for this post is to find a way for http request from virtual world to the great outside, and not have destination ip address show up in logs for the virtual server holder (other then linden, if the object is active in SL). Don't know if this is a problem but assuming so. Reason for this inquiry is at bottom line that i'm a noob when it comes to server and therefore security is not the most molded concept. By doing some foot work in lsl code this can be partially remedied. This would be applied to a single lsl script with no modify permission that will handle http/https communication to and from the internet. The script would most likely be used at different regions, therefor most likely have little to non know data to compare and confirm if a Linden Lab server are the current host. The Application is not super secret but would not be hurt from better security towards not showing server ip address and other server holder information to current host. Any suggestions or hypothesizes is greatly appreciated. Concepts for a partially remedy tincture: Use a 3rd party server to verify from sender and act as a relay. Cons: Cost, complication, implementation. Pros: Would assumme a very high chance to not show destination ip address Check if ip address are known to be Linden Labs ones http://wiki.secondlife.com/wiki/Simulator_IP_Addresses , this would necessity be verified by a 3rd party server. Cons: Can probably be simulated by a non Linden Labs server Use a if statement in lsl code for known values that should equal return from all/any llGetSimulatorHostname | llRequestSimulatorData | llGetRegionCorner | llGetRegionName | llGetEnv Cons: Can probably be simulated by a non Linden Labs server, Not always enough relevant data to accurate confirm if data is true. Edit: Is it possible to show a lsl code(with any permissions) in a web browser like firefox with and without login credentials? Is possible for a lsl code to get a 'bird eye view' of where it is run and confirm that some how? : Not only look inside its "bubble of operation environment" but the greater "image".
  2. Serendipity has grown so much in the past few months that is has become necessary to add to our established team. We are currently recruiting for: 💕Coordinators (full training to be provided) - Would prefer someone with varied availability who is customer service focused and organised. Knowledge of other language would be a huge asset 💕Photographers - proven skill in couples photography. Would prefer someone who has previous experience in weddings and an excellent Flickr. This is what we use to allow customers to choose their photographers. Being quality focused and personable is definitely a preference. 💕DJ's - We need DJ's who are personable, professional who are comfortable working in a team as well as independently and taking direction during weddings and events. While wedding experience is preferred, we will provide training to the right person. 💕Restaurant Servers (full training to be provided) - if you like working with people, RP and providing excellent customer service, we need you. All roles are paid and we demand excellence in all staff we choose to work with. We do ensure we have fun as a team and with every couple we work with and therefore, the fit of any new employee into our team is very important to us. This is not just about hiring a bunch of folks...we want to add to our family. If any of this sounds like it could be right up your alley hit our link to register your interest: https://docs.google.com/forms/d/e/1FAIpQLSfkuP7BaEBAA9M4UvLPpFyH3ULe4YQP_B2LVw1SkLt-e7UQGw/viewform
  3. Serendipity has grown so much in the past few months that is has become necessary to add to our established team. We are currently recruiting for: 💕Coordinators (full training to be provided) - Would prefer someone with varied availability who is customer service focused and organised. Knowledge of other language would be a huge asset 💕Photographers - proven skill in couples photography. Would prefer someone who has previous experience in weddings and an excellent Flickr. This is what we use to allow customers to choose their photographers. Being quality focused and personable is definitely a preference. 💕DJ's - We need DJ's who are personable, professional who are comfortable working in a team as well as independently and taking direction during weddings and events. While wedding experience is preferred, we will provide training to the right person. 💕Restaurant Servers (full training to be provided) - if you like working with people, RP and providing excellent customer service, we need you. All roles are paid and we demand excellence in all staff we choose to work with. We do ensure we have fun as a team and with every couple we work with and therefore, the fit of any new employee into our team is very important to us. This is not just about hiring a bunch of folks...we want to add to our family. If any of this sounds like it could be right up your alley hit our link to register your interest: https://docs.google.com/forms/d/e/1FAIpQLSfkuP7BaEBAA9M4UvLPpFyH3ULe4YQP_B2LVw1SkLt-e7UQGw/viewform
  4. Serendipity has grown so much in the past few months that is has become necessary to add to our established team. We are currently recruiting for: 💕Coordinators (full training to be provided) - Would prefer someone with varied availability who is customer service focused and organised. Knowledge of other language would be a huge asset 💕Photographers - proven skill in couples photography. Would prefer someone who has previous experience in weddings and an excellent Flickr. This is what we use to allow customers to choose their photographers. Being quality focused and personable is definitely a preference. 💕DJ's - We need DJ's who are personable, professional who are comfortable working in a team as well as independently and taking direction during weddings and events. While wedding experience is preferred, we will provide training to the right person. 💕Restaurant Servers (full training to be provided) - if you like working with people, RP and providing excellent customer service, we need you. All roles are paid and we demand excellence in all staff we choose to work with. We do ensure we have fun as a team and with every couple we work with and therefore, the fit of any new employee into our team is very important to us. This is not just about hiring a bunch of folks...we want to add to our family. If any of this sounds like it could be right up your alley hit our link to register your interest: https://docs.google.com/forms/d/e/1FAIpQLSfkuP7BaEBAA9M4UvLPpFyH3ULe4YQP_B2LVw1SkLt-e7UQGw/viewform
  5. I'm not sure if this is a server issue or a viewer issue so i'll just tag both of them and pop it in here. Lately, regardless of which of my alts I'm using I'm noticing a number of Avatars who are all one color - say blue, green, pink, etc. At first i thought it was just a rez issue, but then i got curious and started checking profiles as well as talking to people. A couple of things popped up - 1) they were older Avatars (over eight years old); 2), they were using older skins and 3) some - some, not all, but some - were using firestorm complete with the latest updates there. Also, one of the people i was speaking to last night said he doesn't use mesh skins/clothing. So, from observation, it would seem like there's an issue with compatibility somewhere. Precisely where - who knows - but it's somewhere. Especially, when it's affecting older avatars/skins and those who are using firestorm. So far as i am aware, it's not affecting my avatars - but then again, they are all fairly new. At least no one has said they're seeing me as a one-colored female shape.
  6. Second Life Server: https://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Server/18#18.03.27.513831 Scheduled Tuesday 2018-04-03 03:00-09:00 PDT Second Life RC BlueSteel: https://wiki.secondlife.com/wiki/Release_Notes/Second_Life_RC_BlueSteel/18#18.03.29.513939 Scheduled Wednesday 2018-04-04 07:00-10:30 PDT Second Life RC LeTigre: https://wiki.secondlife.com/wiki/Release_Notes/Second_Life_RC_LeTigre/18#18.03.29.513939 Scheduled Wednesday 2018-04-04 07:00-10:30 PDT Second Life RC Magnum: https://wiki.secondlife.com/wiki/Release_Notes/Second_Life_RC_Magnum/18#18.03.27.513831 No Scheduled Update On Region Restarts: Regions will be restarted if they have been running for more than 14 days on Tuesday (Main Channel) and Wednesday (RCs) regardless of whether or not new code is being deployed, for the general health and well being of the Simulators. Nothing beats turning it off and then on again … once in a while. As always, please plan events around these maintenance windows. However, if you are hosting an event on Tuesday or Wednesday when we’re not deploying new code, you can restart your region ahead of time to avoid interruption. Edited Wednesday at 04:26 PM by Caleb Linden
  7. Sculpt versus Mesh

    When I teleported into the Amazon River landing area I got this message in local chat: I did this and did find myself covered in those white numbers. So what is it about sculpts that heavily burden the server? What is it about mesh alternatives that burden server less?
  8. Weddings in SL can be compared to a classical musical orchestra - you only sound as good as the instrument next to you and together you make the music perfect. Weddings only work when there is an amazing staff behind them all playing to the same "tune" so to speak. Serendipity has grown so much in the past few months that is has become necessary to add to our established team. We are currently recruiting for: ❤Coordinators (full training to be provided) - Would prefer someone with varied availability who is customer service focussed and organised. Knowledge of other language would be a huge asset ❤Photographers - proven skill in couples photography. Would prefer someone who has previous experience in weddings and an excellent Flickr. This is what we use to allow customers to choose their photographers. Being quality focussed and personable is definitely a preference. ❤DJ's - We need DJ's who are personable, professional who are comfortable working in a team as well as independently and taking direction during weddings and events. While wedding experience is preferred, we will provide training to the right person. ❤Restaurant Servers (full training to be provided) - if you like working with people, RP and providing excellent customer service, we need you. All roles are paid and we demand excellence in all staff we choose to work with. We do ensure we have fun as a team and with every couple we work with and therefore, the fit of any new employee into our team is very important to us. This is not just about hiring a bunch of folks...we want to add to our family. If any of this sounds like it could be right up your alley, contact Rosalyn Macarthur today or hit our link to register your interest: https://docs.google.com/forms/d/e/1FAIpQLSfkuP7BaEBAA9M4UvLPpFyH3ULe4YQP_B2LVw1SkLt-e7UQGw/viewform
  9. Returned items

    On January 27th over 5000 items were randomly returned to random renters on my sim Angel Falls. Reporting the issue ti Linden Labs I was told it was user error. Now I find at least a dozen other sims experienced the same issue at the same time. That makes it impossible to say it was user error. Now the sim has gotten worse in lag and is affecting the performance of several viewers. I have recently been transferred to the Second Life Server problems have been massive. Never had this many problems with RC Blue Steel server.
  10. Avatar Complexity and the servers

    Hello all *waves* Since you all have been so helpful, I'm back to ask another question Specifically, about Avatar Complexity. I totally get that a high AC score affects other people's viewers, and that if I'm wearing, for example, a 360K outfit, that many will not be able to render me or they will render the jelly-doll. I also read on these forums that some people's graphics cards can get fried (seriously, I did read this). My problem comes in where I have a few outfits that are near and dear to me and score over 350K. As I said, I understand that a high AV score affects others' viewers. Does a high AV score also affect the server, as in making a club laggier ? I'm very confused on this. Thanks again!
  11. Servers Needed

    We are looking for servers for our new Restaurant • Must not have lag/crashing issues • Must be comfortable doing Roleplay ** Must be voice during the interview ** Required to provide an email we will hook you up to our airtable spreadsheet. Is that you? Please fill out our online application and someone will be in touch with you ASAP! https://docs.google.com/…/1FAIpQLScbb_VB78xWTkl3fA…/viewform http://maps.secondlife.com/secondlife/Calypso Cove/194/105/22
  12. EDIT 2: After trying the Lumiya viewer on a 4G network and doing a synchronised computer and network restart, everything seems to be working again. Yesterday I've been getting this error message: "Darn. You have been logged out of Second Life. This region may be experiencing trouble. Please check your connection to the internet." I'm using Blackdragon viewer, and every time I try logging in I'm unable to move or sit on in-world objects, but I can teleport to other areas and send/receive messages - until I'm forced to log out with the error message above. It usually takes less than a minute for my viewer to log me out of SL. I tried clearing my AppData/Roaming folder, but that didn't fix anything, so I tried installing a fresh copy of Firestorm, but I'm still getting the same issue. Any help would be appreciated. EDIT: The computer is a model VN7-593G-75AG Acer Aspire V 15 Nitro running 64 bit Windows 10. The same issue applies to the official viewer. Pinging the server I connect to with CMD results in no lost packets.
  13. (SL) The end of days

    Hi, My name is Lord Derryth. Most people know me as Deeds Greenacre. I've been in SL for over 14 years now. I've been noticing some strange things happening on my sim. I built an Urban Zombie Apocalypse city. For those that know me. I have an OCD. Things need to be aligned and perfect. We all know that SL is not perfect and it never will be. My roads are in pieces and I use snap to grid to align perfectly with one another. For some odd reason. I've been aligning my roads for the past two weeks. You see. My sim is either haunted or SL on it's last leg. My roads keep getting unaligned. I've noticed buildings moving in front of my own eyes. I don't know if this is a delay of some sort or maybe the sim keeps rolling back 5 seconds. There have been many people stating the same things I have. Their sim is becoming unpredictable and things are moving around. I get it. Sansar! The new project that LL decided would be a great idea. Sadly! It was a poor idea. As I stated before. I've been in SL for 14 years. I've seen this world grow before my own eyes. Why bring Sansar into the virtual world? If it's broken, fix it. SL seems to have been broken for 14 years and never fixed. Now we have sansar. Call this conspiracy theory. Is LL trying to destroy SL and push us to Sansar? I have never seen SL or been in SL dealing with such lag and unpredictable servers for this long. I'm talking about going on 9 days. Can't log in. Get disconnected. Lag to the point nothing loads. Items on sim moving. Major city uneven and nearly destroyed. Everyday feels like a Tuesday. What is really going on here? Is it the end of days?? PS What is this Cloud stuff?
  14. Good day, Since the beginning of this year, whenever i come to Second Life more than 30 minutes, i get disconnected whenever i try to move to another Sim : the loading screen for teleportation never manage to contact the region i'm aiming for and then i'm disconnected from all servers. What is surprinsing, is the fact that if i don't move from the sim i'm standing, i can still talk to other people, interact with object, share items with others people in chat, etc. I noticed the same problem with the marketplace : after 20 minutes, whenever i try to buy something on the marketplace, the item never reach me. I have to go offline, then come back to see the item in my inventory. It's like i'm being trapped each 20 minutes and it is quite frustrating. If someone share the same issue or know a way to clear this problem, please, my SL experience is falling apart bit by bit these days. Regards.
  15. The Whistling Bamboo RP restaurant caters anywhere from business meetings, friendly brunches, family dining to birthdays and rezzdays! Our goal is to provide the warmest and most realistic dining experience for our customers. We are looking to hire awesome role-players to help give our amazing customers that experience. If you are fun, friendly and just looove to roleplay, then we invite you to APPLY. No experience in serving? No worries, as long as you're good with words and know how to rp training will be provided! This is a paid position. Stroll over the reception area where the job application board is waiting for you! http://maps.secondlife.com/secondlife/Gurla/162/242/57
  16. Some time ago (2007) I developed a radio script for Second Life that I sold in my own store. When I closed the store in 2010 (since reopened) I decided to give away the script for reuse by any resident and it was posted in the old forums. To make it easier to find I am now posting it again here, although slightly updated to fix an glitch caused by recent (June 2017) changes to the llHTTPRequest command. I don't ask for any L$ in return but if you use it, and especially sell it, please credit me. Thanks. Below is the radio script, a copy of the notecard, a copy of the server script and a copy of the server notecard. RADIO SCRIPT // Bertone Audio Parcel Music Player by Cookie Bertone // last modified 22 July 2017 // previous minor revision 28 february 2016 // previous major revision 17 May 2010 // if instructions are renamed make change in this script also!! string version = "165A"; // Version number of this item string gName = "channels"; // name of the notecard that holds the channel list integer gLine = 0; // current line number, set to 0 so it starts at the beginning key gQueryID; // id used to identify dataserver queries list GenreElementList = []; integer populating_list = TRUE; string nPlaying = "Unknown"; integer FloatText = TRUE; integer ShowURL = FALSE; // start 150 extras list trackpulllist = []; float gap = 5.0; float counter = 0.0; string nPlayingURL = "NOT_SET"; string TrackElementHold = ""; integer nPlayingSHOW = TRUE; // end 150 extras // start 160 extras key gkOwner; key serverID = "d48e17c5-e8f6-1588-b57f-9d28423de917@lsl.secondlife.com"; integer InstalledTextures = 0; // end 160 extras key menuitem; // id used to get menu selection list MainMenu = ["tuner", "options", "off"]; list OptionsMenu = ["instructions", "texton", "textoff", "show url", "playing", "list", "reset", "update", "main menu"]; string tuner_dialog = "\nBAS Parcel Music Player\nBertone Audio Systems, Bilogorac (23, 196, 68)\n\nMake a selection or press 'ignore' to close this dialog box."; string chatline = "------------------------------------------------------"; list first_menu; list second_menu; list third_menu; list fourth_menu; list fifth_menu; list sixth_menu; list seventh_menu; list eigth_menu; list ninth_menu; string lastpage = "Page 9"; default { // when device is first rezzed it will reset the script on_rez(integer start_param) { llSay(0, "Player installed. Setting defaults."); llResetScript(); llSay(0, "Defaults set."); } // when script is started or restarted it will display some details about the device, // tell it to read the data file, start the listen and set the text on the device state_entry() { llSetLinkColor(2, <0.0, 0.9, 0.0>, ALL_SIDES); llSay(978, "reset"); llSay(0, "\n\n" +chatline+ "\nBAS PMP (Parcel Music Player) " +version+ "\nScript written by Cookie Bertone\nBertone Audio Systems, Bilogorac (23, 196, 68)\n" +chatline+ "\n\nLoading channels.\nPlease wait for 'Ready'.\n\n"); llSetParcelMusicURL(""); gQueryID = llGetNotecardLine(gName, gLine); // request first line llListen(87, "", NULL_KEY, ""); // listen for request on channel 87 llSetText("Bertone Audio System " +version, <0.0,1.0,1.0>, .5); llSetTimerEvent(gap); // Activate the timer listener every X seconds } // when the device is touched it will display the main menu touch_start(integer touchNumber) { llDialog(llDetectedKey(0), tuner_dialog, MainMenu, 87); } listen(integer channel, string name, key id, string message) { integer index = llListFindList(GenreElementList, [message]); if (index != -1) { llSay(0, "Found "+message+" in channel list. Setting channel."); llSetLinkColor(2, <0.0, 0.9, 0.0>, ALL_SIDES); gQueryID = llGetNotecardLine(gName, index); } else if (message=="list") { llSay(0, "Listing possible genres:"); integer x; integer length=llGetListLength(GenreElementList); for (x=0; x<length; x++) { llSay(0,llList2String(GenreElementList,x)); } } else if (message=="playing") { llSay(0, "Now playing: "+nPlaying); } else if (message=="texton") { FloatText = TRUE; nPlayingSHOW = TRUE; llSetText("Now playing: "+nPlaying+".", <0.0,1.0,1.0>, .5); } else if (message=="textoff") { FloatText = FALSE; nPlayingSHOW = FALSE; llSetText(" ", <0.0,1.0,1.0>, .5); } else if (message=="show url") { ShowURL = TRUE; } else if (message=="XXpictureXX") { integer InstalledTextures = llGetInventoryNumber(INVENTORY_TEXTURE); if (InstalledTextures == 1) { string TextureName = llGetInventoryName(INVENTORY_TEXTURE, 0); llSay (0,"Texture found: " +TextureName); if (name != "") llSetTexture(TextureName, 5); } if (InstalledTextures > 1) { float RandTexture = llFrand(InstalledTextures); integer TextureChoice = (integer)RandTexture; string TextureName = llGetInventoryName(INVENTORY_TEXTURE, TextureChoice); llSay (0,"Choosing a random texture: "+TextureName); if (name != "") llSetTexture(TextureName, 5); } if (InstalledTextures < 1) { llSay(0,"There are no textures installed."); } } else if (message=="instructions") { llGiveInventory(id, "radio instructions (16)"); } else if (message=="reset") { llSay(0, "Resetting."); llResetScript(); } else if (message=="options") { llDialog(id, tuner_dialog, OptionsMenu, 87); } else if (message=="update") { llOwnerSay("Contacting update server."); llEmail(serverID,"Update Request",llGetObjectName() + ":" + version + "|" + (string)llGetOwner()); } else if (message=="off") { llSay(0, "System Off"); llSetLinkColor(2, <1.0, 0.0, 0.0>, ALL_SIDES); llSay(978, "red"); llSetParcelMusicURL(""); //next two lines new for v1.5, these reset variables to stop it displaying track names when switched off nPlayingURL = "NOT_SET"; TrackElementHold = ""; if (FloatText = TRUE) { llSetText("Bertone Audio System " +version+ " OFF", <0.0,1.0,1.0>, .5); } } else if (message=="tuner") { if(llGetListLength(GenreElementList) > 80) { llSay(0, "Only the first 80 channels will be displayed in the menu."); } if(llGetListLength(GenreElementList) > 12) { // remember that a list starts at 0, not 1 // all the menus except the first one are set here so the following if statements can change them if necessary second_menu = ["Page 1", "main menu", "Page 3"] + llList2List(GenreElementList, 9, 17); third_menu = ["Page 2", "main menu", "Page 4"] + llList2List(GenreElementList, 18, 26); fourth_menu = ["Page 3", "main menu", "Page 5"] + llList2List(GenreElementList, 27, 35); fifth_menu = ["Page 4", "main menu", "Page 6"] + llList2List(GenreElementList, 36, 44); sixth_menu = ["Page 5", "main menu", "Page 7"] + llList2List(GenreElementList, 45, 53); seventh_menu = ["Page 6", "main menu", "Page 8"] + llList2List(GenreElementList, 54, 62); eigth_menu = ["Page 7", "main menu", "Page 9"] + llList2List(GenreElementList, 63, 71); ninth_menu = ["Page 8", "main menu", "Page 1"] + llList2List(GenreElementList, 72, 80); // this bit sets which page will be the last so no empty menus are displayed if(llGetListLength(GenreElementList) < 81) { ninth_menu = ["Page 8", "main menu", "Page 1"] + llList2List(GenreElementList, 72, 80); lastpage = "Page 9"; } if(llGetListLength(GenreElementList) < 72) { eigth_menu = ["Page 7", "main menu", "Page 1"] + llList2List(GenreElementList, 63, 71); lastpage = "Page 8"; } if(llGetListLength(GenreElementList) < 63) { seventh_menu = ["Page 6", "main menu", "Page 1"] + llList2List(GenreElementList, 54, 62); lastpage = "Page 7"; } if(llGetListLength(GenreElementList) < 54) { sixth_menu = ["Page 5", "main menu", "Page 1"] + llList2List(GenreElementList, 45, 53); lastpage = "Page 6"; } if(llGetListLength(GenreElementList) < 45) { fifth_menu = ["Page 4", "main menu", "Page 1"] + llList2List(GenreElementList, 36, 44); lastpage = "Page 5"; } if(llGetListLength(GenreElementList) < 36) { fourth_menu = ["Page 3", "main menu", "Page 1"] + llList2List(GenreElementList, 27, 35); lastpage = "Page 4"; } if(llGetListLength(GenreElementList) < 27) { third_menu = ["Page 2", "main menu", "Page 1"] + llList2List(GenreElementList, 18, 26); lastpage = "Page 3"; } if(llGetListLength(GenreElementList) < 18) { second_menu = ["Page 1", "main menu", "Page 1"] + llList2List(GenreElementList, 9, 17); lastpage = "Page 2"; } // the first menu is set here 'after' the last page has been defined (above) then the first dialog is displayed first_menu = [lastpage, "main menu", "Page 2"] + llList2List(GenreElementList, 0, 8); llDialog(id, tuner_dialog, first_menu, 87); } else { // if there are less than 12 items in the menu it displays this dialog that doesn't need the page buttons llDialog(id, tuner_dialog, GenreElementList, 87); } } else if(message=="Page 1") { llDialog(id, tuner_dialog, first_menu, 87); } else if(message=="Page 2") { llDialog(id, tuner_dialog, second_menu, 87); } else if(message=="Page 3") { llDialog(id, tuner_dialog, third_menu, 87); } else if(message=="Page 4") { llDialog(id, tuner_dialog, fourth_menu, 87); } else if(message=="Page 5") { llDialog(id, tuner_dialog, fifth_menu, 87); } else if(message=="Page 6") { llDialog(id, tuner_dialog, sixth_menu, 87); } else if(message=="Page 7") { llDialog(id, tuner_dialog, seventh_menu, 87); } else if(message=="Page 8") { llDialog(id, tuner_dialog, eigth_menu, 87); } else if(message=="Page 9") { llDialog(id, tuner_dialog, ninth_menu, 87); } else if(message=="main menu") { llDialog(id, tuner_dialog, MainMenu, 87); } else { llSay(0, "Sorry. I couldn't find a station or command with the ID: "+message); } } // timer section is new for version 1.5 timer() { //llHTTPRequest(nPlayingURL+"/7.html HTTP/1.0\nUser-Agent: XML Getter (Mozilla Compatible)\n\n",[],""); //llHTTPRequest(nPlayingURL+"/7.html HTTP/1.1\nUser-Agent:Mozilla\n\n",[],""); if (nPlayingURL != "NOT_SET") { llHTTPRequest(nPlayingURL+"/7.html", [HTTP_USER_AGENT, "BAS_"+version+" (Mozilla Compatible)"],""); } } // http_response section is new for version 1.5 http_response(key trackid, integer status, list metadata, string trackbody) { list TrackPullList = llParseString2List(trackbody,[","],[]); // takes the http result and turns it into a list string TrackElement = llList2String(TrackPullList,6); // takes the sixth item out of the http result list TrackElement = llDeleteSubString(TrackElement, -14, -1); // strips off the html junk text at the end if (nPlayingSHOW == TRUE) { if (TrackElementHold != TrackElement) { llSay(0, "Now playing: " + TrackElement + "."); // displays the result TrackElementHold = TrackElement; } } } dataserver(key query_id, string data) { if (populating_list == TRUE) // first pass through is to build up a list of Genre Names { if (data != EOF) { list StationList = llParseString2List(data,[","],[]); string GenreElement = llList2String(StationList,2); GenreElementList = GenreElementList + [llList2String(StationList,2)]; ++gLine; // increase line count by 1 gQueryID = llGetNotecardLine(gName, gLine); // request next line } else { populating_list = FALSE; llSetLinkColor(2, <1.0, 0.0, 0.0>, ALL_SIDES); llSay(0, "\n\nReady.\nTouch player to begin...\n\n"); } } else { list StationList = llParseString2List(data,[","],[]); // converts the line taken into a list string URLElement = llList2String(StationList,0); // grab the URL llSetParcelMusicURL(URLElement); llSetLinkColor(2, <0.9, 0.9, 0.9>, ALL_SIDES); llSay(978, "blue"); string StationElement = llList2String(StationList,1); if (ShowURL == TRUE) { llSay(0, "\n\nNow playing: "+StationElement+". ("+URLElement+"\n)"); } else { llSay(0, "\n\nNow playing: "+StationElement+".\n"); } if (FloatText == TRUE) { //llSay(0,"DIAGNOSTIC: FloatText is true"); llSetText("Now playing: "+StationElement+".", <0.0,1.0,1.0>, .5); } nPlaying = StationElement; // this holds the station name for use in other sections nPlayingURL = URLElement; // this holds the station URL for use in other sections } } } RADIO 'CHANNELS' NOTE CARD I have left a load of channels here for reference. They can be replaced with any compatible stream. http://ice1.somafm.com/groovesalad-128-mp3,Groove Salad ~ Soma FM,Groove Salad, ~ A nicely chilled plate of ambient downtempo beats and grooves http://ice1.somafm.com/dronezone-128-mp3,Drone Zone ~ Soma FM,Drone Zone, ~ Served best chilled and safe with most medications. Atmospheric textures with minimal beats http://ice1.somafm.com/indiepop-128-mp3,Indie Pop Rocks ~ Soma FM,Indie Pop, ~ New and classic favorite indie pop tracks http://ice1.somafm.com/lush-128-mp3,Lush ~ Soma FM,Lush, ~ Sensuous and mellow vocals with an electronic influence http://ice1.somafm.com/secretagent-128-mp3,Secret Agent ~ Soma FM,Secret Agent, ~ The soundtrack for your stylish mysterious dangerous life. For Spies and PIs too! http://ice1.somafm.com/spacestation-128-mp3,Space Station Soma ~ Soma FM,Space Station Soma, ~ Tune in turn on space out. Spaced-out ambient and mid-tempo electronica http://ice1.somafm.com/u80s-128-mp3,Underground 80s ~ Soma FM,Underground 80s, ~ Early 80s UK Synthpop and a bit of New Wave http://ice1.somafm.com/deepspaceone-128-mp3,Deep Spare One ~ Soma FM,Deep Space One, ~ Deep ambient electronic experimental and space music. For inner and outer space exploration http://ice1.somafm.com/beatblender-128-mp3,Beat Blender ~ Soma FM,Beat Blender, ~ A late night blend of deep-house and downtempo chill http://ice1.somafm.com/suburbsofgoa-128-mp3,Suburbs of Goa ~ Soma FM,Suburbs of Goa, ~ Desi-influenced Asian world beats and beyond http://ice1.somafm.com/bootliquor-128-mp3,Boot Liquor ~ Soma FM,Boot Liquor, ~ Americana Roots music for Cowhands Cowpokes and Cowtippers http://ice1.somafm.com/sonicuniverse-128-mp3,Sonic Universe ~ Soma FM,Sonic Universe, ~ Transcending the world of jazz with eclectic avant-garde takes on traditionhttp://ice1.somafm.com/poptron-128-mp3,PopTron ~ Soma FM,PopTron, ~ Electropop and indie dance rock with sparkle and pop http://ice1.somafm.com/folkfwd-128-mp3,Folk Forward ~ Soma FM,Folk Forward, ~ Indie Folk, Alt-folk and the occasional folk classics http://ice1.somafm.com/defcon-128-mp3,DEF CON Radio ~ Soma FM,DEF CON Radio, ~ Music for Hacking. The DEF CON Year-Round Channel http://ice1.somafm.com/seventies-128-mp3,Left Coast 70s ~ Soma FM,Left Coaast 70s, ~ Mellow album rock from the Seventies. Yacht friendly http://ice1.somafm.com/bagel-128-mp3,BAGeL Radio ~ Soma FM,BAGeL Radio, ~ What alternative rock radio should sound like http://ice1.somafm.com/thetrip-128-mp3,The Trip ~ Soma FM,The Trip, ~ Progressive house / trance. Tip top tunes http://ice1.somafm.com/fluid-128-mp3,Fluid ~ Soma FM,Fluid, ~ Drown in the electronic sound of instrumental hiphop future soul and liquid trap http://ice1.somafm.com/thistle-128-mp3,Thistle Radio ~ Soma FM,Thistle Radio, ~ Exploring music from Celtic roots and branches http://ice1.somafm.com/illstreet-128-mp3,Illinois Street Lounge ~ Soma FM,Illinois Street Lounge, ~ Classic bachelor pad playful exotica and vintage music of tomorrow http://ice1.somafm.com/7soul-128-mp3,Seven Inch Soul ~ Soma FM,Seven Inch Soul, ~ Vintage soul tracks from the original 45 RPM vinyl http://ice1.somafm.com/cliqhop-128-mp3,cliqhop idm ~ Soma FM,cliqhop idm, ~ Blips'n'beeps backed mostly w/beats. Intelligent Dance Music http://ice1.somafm.com/digitalis-128-mp3,Digitalis ~ Soma FM,Digitalis, Digitally affected analog rock to calm the agitated heart http://ice1.somafm.com/missioncontrol-128-mp3,Mission Control ~ Soma FM,Mission Control, ~ Celebrating NASA and Space Explorers everywhere http://ice1.somafm.com/dubstep-128-mp3,Dub Step Beyond ~ Soma FM,Dub Step Beyond, ~ Dubstep Dub and Deep Bass. May damage speakers at high volume http://ice1.somafm.com/doomed-128-mp3,Doomed ~ Soma FM,Doomed, ~ Dark industrial/ambient music for tortured souls http://ice1.somafm.com/brfm-128-mp3,Black Rock FM ~ Soma FM,Black Rock FM, ~ From the Playa to the world, back for the 2015 Burning Man festival http://ice1.somafm.com/covers-128-mp3,Covers ~ Soma FM,Covers, ~ Just covers. Songs you know by artists you don't. We've got you covered http://ice1.somafm.com/sf1033-128-mp3,SF 10-33 ~ Soma FM,SF 10-33, ~ Ambient music mixed with the sounds of San Francisco public safety radio traffic http://ice1.somafm.com/earwaves-128-mp3,Earwaves ~ Soma FM,Earwaves, ~ Spanning the history of electronic and experimental music from the early pioneers to the latest innovators http://ice1.somafm.com/metal-128-mp3,Metal Detector ~ Soma FM,Metal Detector, ~ From black to doom / prog to sludge / thrash to post / stoner to crossover / punk to industrial UPDATE SERVER SCRIPT Note, this is maybe only 10% my own work and is based on another script for which I have long since lost the details where I got it from. If you find the original author please let me know so I can credit them. // CTD Updater Script // Server UUID:debccf52-3ec9-0428-4f4f-dcc533199b30 // NOTE: This is an area to keep the UUID in the notes for reference. key serverID; string cardName = "Updates"; // Name of the Notecard with all of the Item:Version info string company = "Bertone Audio"; // Name of the company key lineTotalID; key locateID; integer lineCurrent = 0; // Line Offset integer lineTotal; // Line Offset string noteLine; string noteFront; string noteBack; string item; string version; key user; float watchdog = 10.0; integer InUse = FALSE; default { state_entry() { llWhisper(0,llGetKey()); llSetTimerEvent(5.0); lineTotalID = llGetNumberOfNotecardLines(cardName); } touch_start(integer total_number) { llResetScript(); } timer() { llGetNextEmail("",""); } email(string time, string address, string subject, string body, integer remaining) { llWhisper(0,"Received Request..."); if (InUse == FALSE) { InUse = TRUE; llSetText("In Use...",<1,1,1>,1.0); string message = llDeleteSubString(body, 0, llSubStringIndex(body, "\n\n") + 1); integer itemMark = llSubStringIndex(message,":"); integer verMark = llSubStringIndex(message,"|"); item = llGetSubString(message,0,(itemMark - 1)); version = llGetSubString(message,(itemMark + 1),(verMark - 1)); user = (key)llGetSubString(message,(verMark + 1), -1); llWhisper(0,"Item: " + item); llWhisper(0,"Version: " + version); llWhisper(0,"User: " + llKey2Name(user)); lineCurrent = 0; locateID = llGetNotecardLine(cardName,0); } } dataserver(key queryID, string data) { if (queryID == lineTotalID) { lineTotal = (integer)data; llInstantMessage(llGetOwner(),"Found " + (string)lineTotal + " items on update server."); } if (locateID == queryID) { if (data != EOF) { noteLine = data; integer marker = llSubStringIndex(noteLine,":"); if (marker != -1) { lineCurrent += 1; noteFront = llGetSubString(noteLine,0,( marker - 1 )); noteBack = llGetSubString(noteLine,( marker + 1 ), -1); } if (marker == -1) { llInstantMessage(llGetOwner(),"Error with Update Server Inventory line: " + (string)lineCurrent); } if (noteFront != item) locateID = llGetNotecardLine(cardName,lineCurrent); if (noteFront == item) { if ((float)noteBack > (float)version) { llGiveInventory(user,item); llInstantMessage(user,"Sending you the updated version of: " + item); } if ((float)noteBack < (float)version) llInstantMessage(user,"There was an error with the update of your " + item + ", please contact " + llKey2Name(llGetOwner())); if ((float)noteBack == (float)version) llInstantMessage(user,"Your " + item + " by " + company + " is up to date."); InUse = FALSE; llSetText("",<1,1,1>,0.0); } } } if (data == EOF) { InUse = FALSE; llSetText("",<1,1,1>,0.0); llInstantMessage(llGetOwner(),"Update Server Hit EOF on Update List"); } } } UPDATE SERVER NOTE CARD Bertone Audio - Classic Radio:165A Bertone Audio - Hidden Radio:165A Bertone Audio - Tube Radio:165A Bertone Audio - Pyramid Radio:165A Bertone Audio - Cube Radio:165A INSTRUCTIONS NOTE CARD
  17. Some time ago (2007) I developed a radio script for Second Life that I sold in my own store. When I closed the store in 2010 (since reopened) I decided to give away the script for reuse by any resident and it was posted in the old forums. To make it easier to find I am now posting it again here, although slightly updated to fix an glitch caused by recent (June 2017) changes to the llHTTPRequest command. I don't ask for any L$ in return but if you use it, and especially sell it, please credit me. Thanks. Below is the radio script, a copy of the notecard, a copy of the server script and a copy of the server notecard. RADIO SCRIPT // Bertone Audio Parcel Music Player by Cookie Bertone // last modified 22 July 2017 // previous minor revision 28 february 2016 // previous major revision 17 May 2010 // if instructions are renamed make change in this script also!! string version = "165A"; // Version number of this item string gName = "channels"; // name of the notecard that holds the channel list integer gLine = 0; // current line number, set to 0 so it starts at the beginning key gQueryID; // id used to identify dataserver queries list GenreElementList = []; integer populating_list = TRUE; string nPlaying = "Unknown"; integer FloatText = TRUE; integer ShowURL = FALSE; // start 150 extras list trackpulllist = []; float gap = 5.0; float counter = 0.0; string nPlayingURL = "NOT_SET"; string TrackElementHold = ""; integer nPlayingSHOW = TRUE; // end 150 extras // start 160 extras key gkOwner; key serverID = "d48e17c5-e8f6-1588-b57f-9d28423de917@lsl.secondlife.com"; integer InstalledTextures = 0; // end 160 extras key menuitem; // id used to get menu selection list MainMenu = ["tuner", "options", "off"]; list OptionsMenu = ["instructions", "texton", "textoff", "show url", "playing", "list", "reset", "update", "main menu"]; string tuner_dialog = "\nBAS Parcel Music Player\nBertone Audio Systems, Bilogorac (23, 196, 68)\n\nMake a selection or press 'ignore' to close this dialog box."; string chatline = "------------------------------------------------------"; list first_menu; list second_menu; list third_menu; list fourth_menu; list fifth_menu; list sixth_menu; list seventh_menu; list eigth_menu; list ninth_menu; string lastpage = "Page 9"; default { // when device is first rezzed it will reset the script on_rez(integer start_param) { llSay(0, "Player installed. Setting defaults."); llResetScript(); llSay(0, "Defaults set."); } // when script is started or restarted it will display some details about the device, // tell it to read the data file, start the listen and set the text on the device state_entry() { llSetLinkColor(2, <0.0, 0.9, 0.0>, ALL_SIDES); llSay(978, "reset"); llSay(0, "\n\n" +chatline+ "\nBAS PMP (Parcel Music Player) " +version+ "\nScript written by Cookie Bertone\nBertone Audio Systems, Bilogorac (23, 196, 68)\n" +chatline+ "\n\nLoading channels.\nPlease wait for 'Ready'.\n\n"); llSetParcelMusicURL(""); gQueryID = llGetNotecardLine(gName, gLine); // request first line llListen(87, "", NULL_KEY, ""); // listen for request on channel 87 llSetText("Bertone Audio System " +version, <0.0,1.0,1.0>, .5); llSetTimerEvent(gap); // Activate the timer listener every X seconds } // when the device is touched it will display the main menu touch_start(integer touchNumber) { llDialog(llDetectedKey(0), tuner_dialog, MainMenu, 87); } listen(integer channel, string name, key id, string message) { integer index = llListFindList(GenreElementList, [message]); if (index != -1) { llSay(0, "Found "+message+" in channel list. Setting channel."); llSetLinkColor(2, <0.0, 0.9, 0.0>, ALL_SIDES); gQueryID = llGetNotecardLine(gName, index); } else if (message=="list") { llSay(0, "Listing possible genres:"); integer x; integer length=llGetListLength(GenreElementList); for (x=0; x<length; x++) { llSay(0,llList2String(GenreElementList,x)); } } else if (message=="playing") { llSay(0, "Now playing: "+nPlaying); } else if (message=="texton") { FloatText = TRUE; nPlayingSHOW = TRUE; llSetText("Now playing: "+nPlaying+".", <0.0,1.0,1.0>, .5); } else if (message=="textoff") { FloatText = FALSE; nPlayingSHOW = FALSE; llSetText(" ", <0.0,1.0,1.0>, .5); } else if (message=="show url") { ShowURL = TRUE; } else if (message=="XXpictureXX") { integer InstalledTextures = llGetInventoryNumber(INVENTORY_TEXTURE); if (InstalledTextures == 1) { string TextureName = llGetInventoryName(INVENTORY_TEXTURE, 0); llSay (0,"Texture found: " +TextureName); if (name != "") llSetTexture(TextureName, 5); } if (InstalledTextures > 1) { float RandTexture = llFrand(InstalledTextures); integer TextureChoice = (integer)RandTexture; string TextureName = llGetInventoryName(INVENTORY_TEXTURE, TextureChoice); llSay (0,"Choosing a random texture: "+TextureName); if (name != "") llSetTexture(TextureName, 5); } if (InstalledTextures < 1) { llSay(0,"There are no textures installed."); } } else if (message=="instructions") { llGiveInventory(id, "radio instructions (16)"); } else if (message=="reset") { llSay(0, "Resetting."); llResetScript(); } else if (message=="options") { llDialog(id, tuner_dialog, OptionsMenu, 87); } else if (message=="update") { llOwnerSay("Contacting update server."); llEmail(serverID,"Update Request",llGetObjectName() + ":" + version + "|" + (string)llGetOwner()); } else if (message=="off") { llSay(0, "System Off"); llSetLinkColor(2, <1.0, 0.0, 0.0>, ALL_SIDES); llSay(978, "red"); llSetParcelMusicURL(""); //next two lines new for v1.5, these reset variables to stop it displaying track names when switched off nPlayingURL = "NOT_SET"; TrackElementHold = ""; if (FloatText = TRUE) { llSetText("Bertone Audio System " +version+ " OFF", <0.0,1.0,1.0>, .5); } } else if (message=="tuner") { if(llGetListLength(GenreElementList) > 80) { llSay(0, "Only the first 80 channels will be displayed in the menu."); } if(llGetListLength(GenreElementList) > 12) { // remember that a list starts at 0, not 1 // all the menus except the first one are set here so the following if statements can change them if necessary second_menu = ["Page 1", "main menu", "Page 3"] + llList2List(GenreElementList, 9, 17); third_menu = ["Page 2", "main menu", "Page 4"] + llList2List(GenreElementList, 18, 26); fourth_menu = ["Page 3", "main menu", "Page 5"] + llList2List(GenreElementList, 27, 35); fifth_menu = ["Page 4", "main menu", "Page 6"] + llList2List(GenreElementList, 36, 44); sixth_menu = ["Page 5", "main menu", "Page 7"] + llList2List(GenreElementList, 45, 53); seventh_menu = ["Page 6", "main menu", "Page 8"] + llList2List(GenreElementList, 54, 62); eigth_menu = ["Page 7", "main menu", "Page 9"] + llList2List(GenreElementList, 63, 71); ninth_menu = ["Page 8", "main menu", "Page 1"] + llList2List(GenreElementList, 72, 80); // this bit sets which page will be the last so no empty menus are displayed if(llGetListLength(GenreElementList) < 81) { ninth_menu = ["Page 8", "main menu", "Page 1"] + llList2List(GenreElementList, 72, 80); lastpage = "Page 9"; } if(llGetListLength(GenreElementList) < 72) { eigth_menu = ["Page 7", "main menu", "Page 1"] + llList2List(GenreElementList, 63, 71); lastpage = "Page 8"; } if(llGetListLength(GenreElementList) < 63) { seventh_menu = ["Page 6", "main menu", "Page 1"] + llList2List(GenreElementList, 54, 62); lastpage = "Page 7"; } if(llGetListLength(GenreElementList) < 54) { sixth_menu = ["Page 5", "main menu", "Page 1"] + llList2List(GenreElementList, 45, 53); lastpage = "Page 6"; } if(llGetListLength(GenreElementList) < 45) { fifth_menu = ["Page 4", "main menu", "Page 1"] + llList2List(GenreElementList, 36, 44); lastpage = "Page 5"; } if(llGetListLength(GenreElementList) < 36) { fourth_menu = ["Page 3", "main menu", "Page 1"] + llList2List(GenreElementList, 27, 35); lastpage = "Page 4"; } if(llGetListLength(GenreElementList) < 27) { third_menu = ["Page 2", "main menu", "Page 1"] + llList2List(GenreElementList, 18, 26); lastpage = "Page 3"; } if(llGetListLength(GenreElementList) < 18) { second_menu = ["Page 1", "main menu", "Page 1"] + llList2List(GenreElementList, 9, 17); lastpage = "Page 2"; } // the first menu is set here 'after' the last page has been defined (above) then the first dialog is displayed first_menu = [lastpage, "main menu", "Page 2"] + llList2List(GenreElementList, 0, 8); llDialog(id, tuner_dialog, first_menu, 87); } else { // if there are less than 12 items in the menu it displays this dialog that doesn't need the page buttons llDialog(id, tuner_dialog, GenreElementList, 87); } } else if(message=="Page 1") { llDialog(id, tuner_dialog, first_menu, 87); } else if(message=="Page 2") { llDialog(id, tuner_dialog, second_menu, 87); } else if(message=="Page 3") { llDialog(id, tuner_dialog, third_menu, 87); } else if(message=="Page 4") { llDialog(id, tuner_dialog, fourth_menu, 87); } else if(message=="Page 5") { llDialog(id, tuner_dialog, fifth_menu, 87); } else if(message=="Page 6") { llDialog(id, tuner_dialog, sixth_menu, 87); } else if(message=="Page 7") { llDialog(id, tuner_dialog, seventh_menu, 87); } else if(message=="Page 8") { llDialog(id, tuner_dialog, eigth_menu, 87); } else if(message=="Page 9") { llDialog(id, tuner_dialog, ninth_menu, 87); } else if(message=="main menu") { llDialog(id, tuner_dialog, MainMenu, 87); } else { llSay(0, "Sorry. I couldn't find a station or command with the ID: "+message); } } // timer section is new for version 1.5 timer() { //llHTTPRequest(nPlayingURL+"/7.html HTTP/1.0\nUser-Agent: XML Getter (Mozilla Compatible)\n\n",[],""); //llHTTPRequest(nPlayingURL+"/7.html HTTP/1.1\nUser-Agent:Mozilla\n\n",[],""); if (nPlayingURL != "NOT_SET") { llHTTPRequest(nPlayingURL+"/7.html", [HTTP_USER_AGENT, "BAS_"+version+" (Mozilla Compatible)"],""); } } // http_response section is new for version 1.5 http_response(key trackid, integer status, list metadata, string trackbody) { list TrackPullList = llParseString2List(trackbody,[","],[]); // takes the http result and turns it into a list string TrackElement = llList2String(TrackPullList,6); // takes the sixth item out of the http result list TrackElement = llDeleteSubString(TrackElement, -14, -1); // strips off the html junk text at the end if (nPlayingSHOW == TRUE) { if (TrackElementHold != TrackElement) { llSay(0, "Now playing: " + TrackElement + "."); // displays the result TrackElementHold = TrackElement; } } } dataserver(key query_id, string data) { if (populating_list == TRUE) // first pass through is to build up a list of Genre Names { if (data != EOF) { list StationList = llParseString2List(data,[","],[]); string GenreElement = llList2String(StationList,2); GenreElementList = GenreElementList + [llList2String(StationList,2)]; ++gLine; // increase line count by 1 gQueryID = llGetNotecardLine(gName, gLine); // request next line } else { populating_list = FALSE; llSetLinkColor(2, <1.0, 0.0, 0.0>, ALL_SIDES); llSay(0, "\n\nReady.\nTouch player to begin...\n\n"); } } else { list StationList = llParseString2List(data,[","],[]); // converts the line taken into a list string URLElement = llList2String(StationList,0); // grab the URL llSetParcelMusicURL(URLElement); llSetLinkColor(2, <0.9, 0.9, 0.9>, ALL_SIDES); llSay(978, "blue"); string StationElement = llList2String(StationList,1); if (ShowURL == TRUE) { llSay(0, "\n\nNow playing: "+StationElement+". ("+URLElement+"\n)"); } else { llSay(0, "\n\nNow playing: "+StationElement+".\n"); } if (FloatText == TRUE) { //llSay(0,"DIAGNOSTIC: FloatText is true"); llSetText("Now playing: "+StationElement+".", <0.0,1.0,1.0>, .5); } nPlaying = StationElement; // this holds the station name for use in other sections nPlayingURL = URLElement; // this holds the station URL for use in other sections } } } RADIO 'CHANNELS' NOTE CARD I have left a load of channels here for reference. They can be replaced with any compatible stream. http://ice1.somafm.com/groovesalad-128-mp3,Groove Salad ~ Soma FM,Groove Salad, ~ A nicely chilled plate of ambient downtempo beats and grooves http://ice1.somafm.com/dronezone-128-mp3,Drone Zone ~ Soma FM,Drone Zone, ~ Served best chilled and safe with most medications. Atmospheric textures with minimal beats http://ice1.somafm.com/indiepop-128-mp3,Indie Pop Rocks ~ Soma FM,Indie Pop, ~ New and classic favorite indie pop tracks http://ice1.somafm.com/lush-128-mp3,Lush ~ Soma FM,Lush, ~ Sensuous and mellow vocals with an electronic influence http://ice1.somafm.com/secretagent-128-mp3,Secret Agent ~ Soma FM,Secret Agent, ~ The soundtrack for your stylish mysterious dangerous life. For Spies and PIs too! http://ice1.somafm.com/spacestation-128-mp3,Space Station Soma ~ Soma FM,Space Station Soma, ~ Tune in turn on space out. Spaced-out ambient and mid-tempo electronica http://ice1.somafm.com/u80s-128-mp3,Underground 80s ~ Soma FM,Underground 80s, ~ Early 80s UK Synthpop and a bit of New Wave http://ice1.somafm.com/deepspaceone-128-mp3,Deep Spare One ~ Soma FM,Deep Space One, ~ Deep ambient electronic experimental and space music. For inner and outer space exploration http://ice1.somafm.com/beatblender-128-mp3,Beat Blender ~ Soma FM,Beat Blender, ~ A late night blend of deep-house and downtempo chill http://ice1.somafm.com/suburbsofgoa-128-mp3,Suburbs of Goa ~ Soma FM,Suburbs of Goa, ~ Desi-influenced Asian world beats and beyond http://ice1.somafm.com/bootliquor-128-mp3,Boot Liquor ~ Soma FM,Boot Liquor, ~ Americana Roots music for Cowhands Cowpokes and Cowtippers http://ice1.somafm.com/sonicuniverse-128-mp3,Sonic Universe ~ Soma FM,Sonic Universe, ~ Transcending the world of jazz with eclectic avant-garde takes on traditionhttp://ice1.somafm.com/poptron-128-mp3,PopTron ~ Soma FM,PopTron, ~ Electropop and indie dance rock with sparkle and pop http://ice1.somafm.com/folkfwd-128-mp3,Folk Forward ~ Soma FM,Folk Forward, ~ Indie Folk, Alt-folk and the occasional folk classics http://ice1.somafm.com/defcon-128-mp3,DEF CON Radio ~ Soma FM,DEF CON Radio, ~ Music for Hacking. The DEF CON Year-Round Channel http://ice1.somafm.com/seventies-128-mp3,Left Coast 70s ~ Soma FM,Left Coaast 70s, ~ Mellow album rock from the Seventies. Yacht friendly http://ice1.somafm.com/bagel-128-mp3,BAGeL Radio ~ Soma FM,BAGeL Radio, ~ What alternative rock radio should sound like http://ice1.somafm.com/thetrip-128-mp3,The Trip ~ Soma FM,The Trip, ~ Progressive house / trance. Tip top tunes http://ice1.somafm.com/fluid-128-mp3,Fluid ~ Soma FM,Fluid, ~ Drown in the electronic sound of instrumental hiphop future soul and liquid trap http://ice1.somafm.com/thistle-128-mp3,Thistle Radio ~ Soma FM,Thistle Radio, ~ Exploring music from Celtic roots and branches http://ice1.somafm.com/illstreet-128-mp3,Illinois Street Lounge ~ Soma FM,Illinois Street Lounge, ~ Classic bachelor pad playful exotica and vintage music of tomorrow http://ice1.somafm.com/7soul-128-mp3,Seven Inch Soul ~ Soma FM,Seven Inch Soul, ~ Vintage soul tracks from the original 45 RPM vinyl http://ice1.somafm.com/cliqhop-128-mp3,cliqhop idm ~ Soma FM,cliqhop idm, ~ Blips'n'beeps backed mostly w/beats. Intelligent Dance Music http://ice1.somafm.com/digitalis-128-mp3,Digitalis ~ Soma FM,Digitalis, Digitally affected analog rock to calm the agitated heart http://ice1.somafm.com/missioncontrol-128-mp3,Mission Control ~ Soma FM,Mission Control, ~ Celebrating NASA and Space Explorers everywhere http://ice1.somafm.com/dubstep-128-mp3,Dub Step Beyond ~ Soma FM,Dub Step Beyond, ~ Dubstep Dub and Deep Bass. May damage speakers at high volume http://ice1.somafm.com/doomed-128-mp3,Doomed ~ Soma FM,Doomed, ~ Dark industrial/ambient music for tortured souls http://ice1.somafm.com/brfm-128-mp3,Black Rock FM ~ Soma FM,Black Rock FM, ~ From the Playa to the world, back for the 2015 Burning Man festival http://ice1.somafm.com/covers-128-mp3,Covers ~ Soma FM,Covers, ~ Just covers. Songs you know by artists you don't. We've got you covered http://ice1.somafm.com/sf1033-128-mp3,SF 10-33 ~ Soma FM,SF 10-33, ~ Ambient music mixed with the sounds of San Francisco public safety radio traffic http://ice1.somafm.com/earwaves-128-mp3,Earwaves ~ Soma FM,Earwaves, ~ Spanning the history of electronic and experimental music from the early pioneers to the latest innovators http://ice1.somafm.com/metal-128-mp3,Metal Detector ~ Soma FM,Metal Detector, ~ From black to doom / prog to sludge / thrash to post / stoner to crossover / punk to industrial UPDATE SERVER SCRIPT Note, this is maybe only 10% my own work and is based on another script for which I have long since lost the details where I got it from. If you find the original author please let me know so I can credit them. // CTD Updater Script // Server UUID:debccf52-3ec9-0428-4f4f-dcc533199b30 // NOTE: This is an area to keep the UUID in the notes for reference. key serverID; string cardName = "Updates"; // Name of the Notecard with all of the Item:Version info string company = "Bertone Audio"; // Name of the company key lineTotalID; key locateID; integer lineCurrent = 0; // Line Offset integer lineTotal; // Line Offset string noteLine; string noteFront; string noteBack; string item; string version; key user; float watchdog = 10.0; integer InUse = FALSE; default { state_entry() { llWhisper(0,llGetKey()); llSetTimerEvent(5.0); lineTotalID = llGetNumberOfNotecardLines(cardName); } touch_start(integer total_number) { llResetScript(); } timer() { llGetNextEmail("",""); } email(string time, string address, string subject, string body, integer remaining) { llWhisper(0,"Received Request..."); if (InUse == FALSE) { InUse = TRUE; llSetText("In Use...",<1,1,1>,1.0); string message = llDeleteSubString(body, 0, llSubStringIndex(body, "\n\n") + 1); integer itemMark = llSubStringIndex(message,":"); integer verMark = llSubStringIndex(message,"|"); item = llGetSubString(message,0,(itemMark - 1)); version = llGetSubString(message,(itemMark + 1),(verMark - 1)); user = (key)llGetSubString(message,(verMark + 1), -1); llWhisper(0,"Item: " + item); llWhisper(0,"Version: " + version); llWhisper(0,"User: " + llKey2Name(user)); lineCurrent = 0; locateID = llGetNotecardLine(cardName,0); } } dataserver(key queryID, string data) { if (queryID == lineTotalID) { lineTotal = (integer)data; llInstantMessage(llGetOwner(),"Found " + (string)lineTotal + " items on update server."); } if (locateID == queryID) { if (data != EOF) { noteLine = data; integer marker = llSubStringIndex(noteLine,":"); if (marker != -1) { lineCurrent += 1; noteFront = llGetSubString(noteLine,0,( marker - 1 )); noteBack = llGetSubString(noteLine,( marker + 1 ), -1); } if (marker == -1) { llInstantMessage(llGetOwner(),"Error with Update Server Inventory line: " + (string)lineCurrent); } if (noteFront != item) locateID = llGetNotecardLine(cardName,lineCurrent); if (noteFront == item) { if ((float)noteBack > (float)version) { llGiveInventory(user,item); llInstantMessage(user,"Sending you the updated version of: " + item); } if ((float)noteBack < (float)version) llInstantMessage(user,"There was an error with the update of your " + item + ", please contact " + llKey2Name(llGetOwner())); if ((float)noteBack == (float)version) llInstantMessage(user,"Your " + item + " by " + company + " is up to date."); InUse = FALSE; llSetText("",<1,1,1>,0.0); } } } if (data == EOF) { InUse = FALSE; llSetText("",<1,1,1>,0.0); llInstantMessage(llGetOwner(),"Update Server Hit EOF on Update List"); } } } UPDATE SERVER NOTE CARD Bertone Audio - Classic Radio:165A Bertone Audio - Hidden Radio:165A Bertone Audio - Tube Radio:165A Bertone Audio - Pyramid Radio:165A Bertone Audio - Cube Radio:165A INSTRUCTIONS NOTE CARD
  18. Experiencing weird things last 24 hours: Rezz of an item can take minutes Building/making items and taking it into inventory, does not show up inventory but after several minutes or after a relog. Delivery from Marketplace does not show up in received items although popup text tells it is delivered. On next login it showed up in received items. Tried a clear inventory cache, nothing get cleared.... Connection perfect, fiber 30 Mbps, ping 19 ms. Internal ping sim 200-220 ms.