LSL Status/Kan-ed11

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
m (Robot: Cosmetic changes)
 
(4 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
__NOTOC__
 +
{{Quicklinks}}
 +
<br />
 +
 
'''Code:'''
 
'''Code:'''
  
Line 53: Line 57:
 
  }
 
  }
  
'''Status:''' Not Working. The list type currently does not function. llDialog(), llListFindList(), llDetectedKey(), and llGround() are also not implemented.
+
'''Status:''' Working!
 +
 
 +
[[Category:Scripts]]

Latest revision as of 20:29, 3 March 2012


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: Working!

Personal tools
General
About This Wiki