12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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 );
- }
- }
- }
|