Basic Notecard Reader
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Basic Notecard Reader
Introduction
Quite often i read in configuration settings from a notecard. I thought i should stick up the core part of my notecard reading script. It's not exactly rocket science but hoepfully it's useful.
The Script
string NOTECARD = "notecard";
integer intLine1;
key keyConfigQueryhandle;
key keyConfigUUID;
default
{
state_entry()
{
if (llGetInventoryType(NOTECARD) == INVENTORY_NONE)
{
llSay(DEBUG_CHANNEL, "The notecard '"+NOTECARD+"' is missing!");
state main;
}
keyConfigQueryhandle = llGetNotecardLine(NOTECARD, intLine1);
keyConfigUUID = llGetInventoryKey(NOTECARD);
}
dataserver(key keyQueryId, string strData)
{
if (keyQueryId == keyConfigQueryhandle)
{
if (strData == EOF)
state main;
keyConfigQueryhandle = llGetNotecardLine(NOTECARD, ++intLine1);
strData = llStringTrim(strData, STRING_TRIM_HEAD); // Trim Whitespace; (not mandatory; if you use a space as marker you must erase this line
if (llGetSubString (strData, 0, 0) != "#") // is it a comment?
{
// OK .. now we do somthing in here with our notecard
}
}
}
}
state main
{
state_entry()
{
// rest of script execution here
}
changed(integer intChange)
{
if (intChange & CHANGED_INVENTORY)
{ // If the notecard has changed, then reload the notecard
if (keyConfigUUID != llGetInventoryKey(NOTECARD))
llResetScript();
}
}
}