Computer:jaycoonlanguage
Revision as of 08:34, 9 October 2012 by Kireji Haiku (talk | contribs) (a few readability improvements)
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
This is a language that is written in LSL. It reads a notecard specified by the user (meant for use with my computer that you can buy here: http://slurl.com/secondlife/Coda/249/46/73) <lsl> // initialised: Starts un initialised integer open = FALSE;
string notecard;
key notecardLineQueryID; key notecardTextQueryID;
integer lines; string process; string line; string notcard; list ints; list strings;
default {
state_entry() { // PUBLIC_CHANNEL has the integer value 0 llListen(PUBLIC_CHANNEL, "", NULL_KEY, ""); llListen(4, "", NULL_KEY, ""); }
listen(integer channel, string name, key id, string message) { // init start if(message == "os:load progs") llSay(4, "prog:jaycoonlanguage");
else if(message == "bios:startjaycoonlanguage") open = TRUE;
else if(message == "close" && open) open = FALSE; // init done
// set notecard if(~llSubStringIndex(message, "notecard:") && open) notecard = llDeleteSubString(message, 0, 9);
if(message == "compile" && notecard != "" && open) { // start compiling notecardLineQueryID = llGetNumberOfnotecardLineQueryIDs(notecard); process = "lines"; integer contvar = 0; while (contvar <= lines) { notecardTextQueryID = llGetnotecardLineQueryID(notecard,contvar);
if(~llSubStringIndex(line, "print:")) { line = llDeleteSubString(line,0,6);
if(~llListFindList(ints, [line])) llSay(PUBLIC_CHANNEL, llList2String(ints,llListFindList(ints, [line])));
if(~llListFindList(strings, [line])) llSay(PUBLIC_CHANNEL, llList2String(ints,llListFindList(strings, [line])));
llSay(PUBLIC_CHANNEL, line); } if(~llSubStringIndex(line, "int:")) { line = llDeleteSubString(line, 0, 4); ints += (integer)line; } if(~llSubStringIndex(line, "string:")) { line = llDeleteSubString(line, 0, 4); strings += (string)line; }
++contvar; } } }
dataserver(key query_id, string data) { if(query_id == notecardLineQueryID) lines = (integer)data;
if(query_id == notecardTextQueryID) line = data; }
} </lsl>