Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Notecard Settings Reader

Konigmann Lippmann
Registered User
Join date: 15 Jun 2004
Posts: 40
01-20-2005 09:41
I've written a number of things that have a notecard in them to customize various settings. I wanted to release the code that reads the notecard for public use.

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>
Little Gray
Registered User
Join date: 16 Oct 2006
Posts: 48
Notecard Settings Reader
03-24-2007 18:18
This is an extremely handy script ... it's great for where you want people to be able to set variables but not modiy a script, and, where you need to have multiple copies of a script running in differen to objects each with different settings. It seemed to work fine, except, I'm now having problems using it in a script that requires permissions (for the object to give money).

It seems no matter where I put the llRequestPermissions statement, the script always wants to check for permissions immediately upon rez or reset. I.E. I can put the permissions request in a non-default state that requires a user to interact with the script before entering, or, put the permissions request in a condititional statement that is not me when the script initially loads. The problem occurs where I want to load information pertaining to what permissions are granted from the notecard.

Am I missing something, or, is there no way to delay request permissions until after the settings have loaded from a notecard? Are permissions requests always performed immediately?
Nada Epoch
The Librarian
Join date: 4 Nov 2002
Posts: 1,423
Discussion Thread
04-09-2007 05:05
/54/d1/176344/1.html
_____________________
i've got nothing. ;)