Settings Notecard

De DigiWiki.

// SampleSettingsReader.lsl
// Written by Konigmann Lippmann
// Thanks to Apotheus Silverman for his MultiItem Vendor...
// It seems like everything I write is based on it in one way or another.
 
 
// Default values
integer iShowHoverText = TRUE;
string sHoverTextValue = "No Settings?";
vector vColor = <1.0,0.0,0.0>;
 
 
// Globals
integer iNotecardIndex;
integer iNotecardCount;
integer iNoteCardLine;
key kCurrentDataRequest;
string sSettingsNotecard;
 
 
integer StringLeftICompare( string sLeftMatch, string sLongString )
{
    integer iLength;
 
    iLength = llStringLength( sLeftMatch ) - 1;
    if( llToLower(llGetSubString( sLongString, 0, iLength ) ) == llToLower(sLeftMatch) )
        return( TRUE );
    return( FALSE );
}
 
 
string GetValue( string sString )
{
    integer iStart;
    string sValue = "";
    string sbValue = "";
 
    iStart = llSubStringIndex( sString, "=" ) + 1;
    if( iStart )
    {
        sValue = llGetSubString( sString, iStart, llStringLength(sString) - 1 );
        if( sValue )
        {
            sbValue = llToLower( sValue );
            if( sbValue == "true" )
                sValue = "1";
            if( sbValue == "false" )
                sValue = "0";
            return( sValue );
        }
    }
    return( NULL_KEY );
}
 
 
default
{
    on_rez( integer param )
    {
        llResetScript();
    }
 
    state_entry()
    {
        integer iii;
 
        llSetText( "Initializing...", <0,0.5,0>, 1.0 );
 
        iNotecardCount = llGetInventoryNumber( INVENTORY_NOTECARD );
        iNotecardIndex = 0;
        if( iNotecardCount > iNotecardIndex )
        {
            sSettingsNotecard = llGetInventoryName( INVENTORY_NOTECARD, iNotecardIndex );
            iNoteCardLine = 0;
            kCurrentDataRequest = llGetNotecardLine( sSettingsNotecard, iNoteCardLine );
            iNotecardIndex++;
        }
        if( iNotecardIndex == 0 )
        {
            llWhisper( 0, "Using Default Values." );
            state run_object;
        }
    }
 
    dataserver( key kQuery, string sData )
    {
        list lSetting;
 
        kCurrentDataRequest = "";
        if( sData != EOF )
        {
            // you can string several of these tests for whatever values you may want.
 
            if( StringLeftICompare( "ShowHoverText=", sData ) )
                iShowHoverText = (integer)GetValue( sData );
 
            else if( StringLeftICompare( "HoverTextValue=", sData ) )
                sHoverTextValue = (string)GetValue( sData );
 
            else if( StringLeftICompare( "Color=", sData ) )
                vColor = (vector)GetValue( sData );
 
            kCurrentDataRequest = llGetNotecardLine( sSettingsNotecard, ++iNoteCardLine );
        }
        else
        {
            iNotecardIndex++;
            if( iNotecardIndex < llGetInventoryNumber( INVENTORY_NOTECARD ) )
            {
                sSettingsNotecard = llGetInventoryName( INVENTORY_NOTECARD, iNotecardIndex );
 
                iNoteCardLine = 0;
                llGetNotecardLine( sSettingsNotecard, iNoteCardLine );
            }
            else
            {
                state run_object;
            }
        }
    }
}
 
 
// This is where your actual code would go
state run_object
{
    state_entry()
    {
        if( TRUE == iShowHoverText )
            llSetText( sHoverTextValue, vColor, 1.0 );
        else
            llSetText( "", <0,0,0>, 0.0 );
    }
}

Here is a sample notecard:

ShowHoverText=True
HoverTextValue=It has worked!
Color=<1.0,1.0,1.0>
Outils personnels
  • Cette page a été consultée 436 fois.
donate
Google Ads