LSL Status/Kan-ed11
From OpenSimulator
(Difference between revisions)
m (Robot: Cosmetic changes) |
|||
| (One intermediate revision by one user not shown) | |||
| Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
| − | {{ | + | {{Quicklinks}} |
<br /> | <br /> | ||
| Line 58: | Line 58: | ||
'''Status:''' Working! | '''Status:''' Working! | ||
| − | |||
[[Category:Scripts]] | [[Category:Scripts]] | ||
Latest revision as of 19: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!