With the help of the Ping Pong thread I got a way of making something move up and down by voice command and touch. I have one problem. I want it speed up or slow down. The script is presently set for five speeds but it only travels in one.
Here is the script. Any suggestions?
CODE
vector whereamI;
vector Imgoingwhere;
vector Imnowat;
integer attarget;
integer listen_handle;
float thingspeed;
movethething()
{
if (attarget == 0)
{
llSetPos(Imgoingwhere);
attarget = 1;
}
else
{
llSetPos(whereamI);
attarget = 0;
}
}
default
{
state_entry()
{
attarget = 0;
thingspeed = 0;
whereamI = llGetPos();
Imgoingwhere = whereamI + <0,0,0.3>;
llSetStatus(STATUS_PHANTOM,TRUE);
llSetAlpha(0,ALL_SIDES);
llListenRemove(listen_handle);
listen_handle = llListen(3006,"",NULL_KEY,"");
}
timer()
{
movethething();
}
listen(integer channel, string name, key id, string message)
{
if (message == "move 1")
{
llSetAlpha(1,ALL_SIDES);
llSetStatus(STATUS_PHANTOM,FALSE);
thingspeed = 4;
llSetTimerEvent(thingspeed);
}
else if (message == "move 2")
{
thingspeed = 2;
}
else if (message == "move 3")
{
thingspeed = 1;
}
else if (message == "move 4")
{
thingspeed = 0.5;
}
else if (message == "move 5")
{
thingspeed = 0.001;
}
else if (message == "stop")
{
thingspeed = 0;
llSetPos(whereamI);
llSetTimerEvent(0);
llSetStatus(STATUS_PHANTOM,TRUE);
llSetAlpha(0,ALL_SIDES);
}
else if (message == "show")
{
llSetAlpha(1,ALL_SIDES);
}
}
touch_start(integer total_number)
{
if (thingspeed == 0)
{
llSetAlpha(1,ALL_SIDES);
llSetStatus(STATUS_PHANTOM,FALSE);
thingspeed = 4;
}
else if (thingspeed == 0.001)
{
thingspeed = 0;
llSetStatus(STATUS_PHANTOM,TRUE);
llSetAlpha(0,ALL_SIDES);
}
else if (thingspeed == 0.5)
{
thingspeed = 0.01;
}
else
{
thingspeed = thingspeed / 2;
}
}
}
As always, thanks for your help.
Owner