User:Allen Kerensky/Myriad Lite Dev/Myriad Lite Module Rumors-v0.0.0-20110911.lsl

= Myriad_Lite_Module_Rumors-v0.0.0-20110911.lsl = This script goes into a separate prim attached to your Myriad Lite HUD.

// Myriad_Lite_Module_Rumors-v0.0.0-20110911.lsl // The Myriad RPG System was designed, written, and illustrated by Ashok Desai // Myriad RPG licensed under the Creative Commons Attribution 2.0 UK: England and Wales // http://creativecommons.org/licenses/by/2.0/uk/ // Myriad Lite software Copyright (c) 2011 by Allen Kerensky (OSG/SL) // Myriad Lite Module Rumors licensed under the // Creative Commons Attribution-Share Alike-Non-Commercial 3.0 Unported // http://creativecommons.org/licenses/by-nc-sa/3.0/

// CONSTANTS - DO NOT CHANGE DURING RUN string VERSION = "0.0.0"; // Allen Kerensky's script version string VERSIONDATE = "20110911"; // Allen Kerensky's script yyyymmdd integer MODULE_RUMORS = -5; // Which Module Link Message number do I listen for? integer CHANMYRIAD = -999; // regionwide rendezvous channel string CHAN_PREFIX = "0x"; // channel prefix for calculating dynamic channels string DIV = "|"; // message field divider

// RUNTIME GLOBALS - CAN CHANGE DURING RUN integer CHANOBJ; // channel of thing we're talking to string RUMOR; // the current rumor we've heard integer FLAG_DEBUG; // configure in SETUP function, LSLINT hack

DEBUG(string debugmsg) { if ( FLAG_DEBUG == TRUE ) llSay(DEBUG_CHANNEL,"DEBUG: "+debugmsg); }

// SETUP - begin bringing the HUD online SETUP { FLAG_DEBUG=TRUE; llOwnerSay("Myriad Lite Module Rumors "+VERSION+" "+VERSIONDATE+" starting."); llRegionSay(CHANMYRIAD,"RUMOR_SERVER_FIND"); }

// RESET - shut down running animations then reset the script to reload character sheet RESET { llResetScript; // now reset }

// DEFAULT STATE - load character sheet default {

// STATE ENTRY - called on Reset state_entry { SETUP; // show credits and start character sheet load }

// ON_REZ - logged in with meter, or worn from inventory while running on_rez(integer param) { param = 0; //LSLINT RESET; // a reset to reload character }

// ATTACH - logged in with meter or worn from inventory/ground while running attach(key id) { id = NULL_KEY; // LSLINT RESET; // a reset to reload character }   changed(integer changes) { if ( changes & CHANGED_REGION ) { // moved to another region SETUP; return; }       if ( changes & CHANGED_TELEPORT ) { // moved somewhere - are we in same region? SETUP; return; }   }

// LINK MESSAGE - commands to and from other prims in HUD link_message(integer sender,integer channel,string message, key speakerid) { if ( channel != MODULE_RUMORS ) { return; } // ignore all link messages not for us       DEBUG("Rumor Module Incoming Link Message: "+message); sender = 0; // LSLINT channel = 0; // LSLINT // break down the commands and messages into units we can work with list fields = llParseString2List(message,[DIV],[]); // break into list of fields based on DIVider string command = llList2String(fields,0); // assume the first field is a Myriad Lite command //string data1  = llList2String(fields,1); //string data2  = llList2String(fields,2); //string data3  = llList2String(fields,3);

if ( command == "RUMOR_RESET" ) { RESET; return; }       if ( command == "RUMOR_SERVER_FIND" ) { llRegionSay(CHANMYRIAD,"RUMOR_FIND_SERVER"); return; }               if ( command == "RUMOR_SERVER_FOUND" ) { // calculate dynamic channel of item/player talking to us           CHANOBJ = (integer)(CHAN_PREFIX + llGetSubString((string)speakerid,0,6)); llOwnerSay("This region supports Myriad Lite rumors."); return; }       if ( command == "RUMOR_GET" ) { // does player want to get a rumor from system? llRegionSay(CHANOBJ,"RUMOR_GET|"+llGetKey); return; }       if ( command == "RUMOR_SHOW" ) { // incoming rumor from the system RUMOR = ""; RUMOR = llGetSubString(message,llSubStringIndex(message,DIV),-1); llOwnerSay("You hear a rumor, \""+RUMOR+"\""); return; }       if ( command == "RUMOR_MAIN" ) { // ask for rumor main menu (admins only) llRegionSay(CHANOBJ,"RUMOR_MAIN" ); return; }       if ( command == "RUMOR_MODERATE" ) { // ask for first rumor to moderate (admins only) llRegionSay(CHANOBJ,"RUMOR_MODERATE" ); return; }       if ( command == "RUMOR_YES" ) { // approve rumor (for admins only) llRegionSay(CHANOBJ,"RUMOR_LIST" ); return; }       if ( command == "RUMOR_LIST" ) { // ask for list of all rumors in system (for admins only) llRegionSay(CHANOBJ,"RUMOR_LIST" ); return; }       if ( command == "RUMOR_PENDING" ) { // ask for next pending rumor llRegionSay(CHANOBJ,"RUMOR_PENDING"); return; }       if ( command == "RUMOR_NONE_PENDING" ) { // none left llOwnerSay("No rumors pending"); }       if ( command == "RUMOR_APPROVE" ) { // approve a pending rumor (for admins only) llRegionSay(CHANOBJ,"RUMOR_APPROVE"); return; }       if ( command == "RUMOR_APPROVED" ) { // confirmed llOwnerSay("Rumor approved."); return; }       if ( command == "RUMOR_REMOVE" ) { // remove a pending llRegionSay(CHANOBJ,"RUMOR_REMOVE"); return; }       if ( command == "RUMOR_REMOVED" ) { // confirmed llOwnerSay("Rumor Removed"); return; }       if ( command == "RUMOR_PUT" ) { // does player want to put a rumor into system? llRegionSay(CHANOBJ,"RUMOR_PUT|"+llKey2Name(llGetOwner)+"|"+llList2String(fields,1)); return; }   } // end listen } // end state running // END