LSL Status/Kan-ed11
From OpenSimulator
(Difference between revisions)
| Line 5: | Line 5: | ||
vector startPosition; | vector startPosition; | ||
float groundLevel; | float groundLevel; | ||
| − | + | ||
default | default | ||
{ | { | ||
Revision as of 22:29, 16 December 2007
Code:
integer dialog_channel= 427; // set a dialog channel
list menu = [ "Go up", "Go down" ];
vector startPosition;
float groundLevel;
default
{
state_entry()
{
// arrange to listen for dialog answers (from multiple users)
llListen( dialog_channel, "", NULL_KEY, "");
startPosition = llGetPos();
groundLevel = llGround( startPosition );
}
touch_start(integer total_number)
{
llDialog( llDetectedKey( 0 ), "What do you want to do?", menu,
dialog_channel );
}
listen(integer channel, string name, key id, string choice )
{
vector position = llGetPos();
// if a valid choice was made, implement that choice if possible.
// (llListFindList returns -1 if choice is not in the menu list.)
if ( llListFindList( menu, [ choice ]) != -1 )
{
if ( choice == "Go up" )
{
if( position.z < ( startPosition.z + 10.0 ) )
{
llSetPos( llGetPos() + < 0, 0, 1.0 > ); // move up
}
}
else if( choice == "Go down" )
{
if( position.z > ( groundLevel + 1.0 ) )
{
llSetPos( llGetPos() + < 0, 0, -1.0 > ); // move down
}
}
}
else
{
llSay( 0, "Invalid choice: " + choice );
}
}
}
Status: Not Working. The list type currently does not function. llDialog(), llListFindList(), llDetectedKey(), and llGround() are also not implemented.