Basic Notecard Reader

From Second Life Wiki
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.

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();
        }
    }
}

See also