53 lines
1.4 KiB
Plaintext
53 lines
1.4 KiB
Plaintext
|
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 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|