LSL Status/Kan-ed10
From OpenSimulator
(Difference between revisions)
Line 9: | Line 9: | ||
{ | { | ||
llListen( 0, "", llGetOwner(), ""); | llListen( 0, "", llGetOwner(), ""); | ||
− | + | ||
startPosition = llGetPos(); | startPosition = llGetPos(); | ||
groundLevel = llGround( startPosition ); | groundLevel = llGround( startPosition ); | ||
− | + | ||
llSay( 0, "Control this object with chat commands like:" ); | llSay( 0, "Control this object with chat commands like:" ); | ||
llSay( 0, "'up' or 'down' followed by a distance." ); | llSay( 0, "'up' or 'down' followed by a distance." ); | ||
} | } | ||
− | + | ||
listen( integer channel, string name, key id, string message ) | listen( integer channel, string name, key id, string message ) | ||
{ | { | ||
// separate the input into blank-delmited tokens. | // separate the input into blank-delmited tokens. | ||
list parsed = llParseString2List( message, [ " " ], [] ); | list parsed = llParseString2List( message, [ " " ], [] ); | ||
− | + | ||
// get the first part--the "command". | // get the first part--the "command". | ||
string command = llList2String( parsed, 0 ); | string command = llList2String( parsed, 0 ); |
Revision as of 22:25, 16 December 2007
Code:
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 ); } } } }
Status: Not working. The list type has not been implemented (and thus, llList2String() and llParseString2List())