CODE
// 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;
}
}
}
}
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
CODE
ShowHoverText=True
HoverTextValue=It has worked!
Color=<1.0,1.0,1.0>