123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- vector startPosition;
- float groundLevel;
-
- default
- {
- state_entry()
- {
- llListen( 0, "", llGetOwner(), "");
- startPosition = llGetPos();
- groundLevel = llGround( startPosition );
-
- llSay( 0, "Control this object with chat commands like:" );
- llSay( 0, "'up' or 'down' followed by a distance." );
- }
-
- listen( integer channel, string name, key id, string message )
- {
- // separate the input into blank-delmited tokens.
- list parsed = llParseString2List( message, [ " " ], [] );
- // get the first part--the "command".
- string command = llList2String( parsed, 0 );
-
- // get the second part--the "distance".
- string distance_string = llList2String( parsed, 1 );
- float distance = ( float )distance_string;
-
- vector position = llGetPos();
-
- if( command == "up" )
- {
- if( ( position.z + distance ) < (startPosition.z + 10.0 ) )
- {
- llSetPos( llGetPos() + < 0, 0, distance > ); // move up
- llSetText( "Went up " + (string)distance, < 1, 0, 0 >, 1 );
- }
- else
- {
- llSetText( "Can't go so high.", < 1, 0, 0 >, 1 );
- }
- }
- else if( command == "down" )
- {
- if( ( position.z - distance ) > groundLevel )
- {
- llSetPos( llGetPos() + < 0, 0, -distance > ); // move down
- llSetText( "Went down " + (string)distance, < 1, 0, 0 >, 1 );
- }
- else
- {
- llSetText( "Can't go so low.", < 1, 0, 0 >, 1 );
- }
- }
- }
- }
|