|
Exile Loudon
Aspiring Scripter
Join date: 10 Dec 2005
Posts: 122
|
03-31-2006 21:22
Since you can't move more then like 96 m with one move to target and I want to move to 300m, how would I loop it so it would move to 300m on command? I want it so when I say "/2 private box" it moves me up 300m from wherever I am, and rezzes a platform. I thought my script would work, but it doesn't seem to work. It ony moves to 200m, and it rezzes the platform before I start moving. Here is the script: default { state_entry() { llListen(2,"",llGetOwner(),""); } listen(integer channel, string name, key id, string message) { vector pos = llGetPos(); if (message == "privacy box") { llOwnerSay("Moving 300m higher into the air..."); llMoveToTarget(pos + <0,0,60>,1); integer target = llTarget(pos,1); llStopMoveToTarget(); llTargetRemove(target); vector pos1 = llGetPos(); llMoveToTarget(pos1 + <0,0,60>,1); integer target1 = llTarget(pos1,1); llStopMoveToTarget(); llTargetRemove(target1); vector pos2 = llGetPos(); llMoveToTarget(pos2 + <0,0,60>,1); integer target2 = llTarget(pos2,1); llTargetRemove(target2); llStopMoveToTarget(); vector pos3 = llGetPos(); llMoveToTarget(pos3 + <0,0,60>,1); integer target3 = llTarget(pos3,1); llTargetRemove(target3); llStopMoveToTarget(); vector pos4 = llGetPos(); llMoveToTarget(pos4 + <0,0,60>,1); integer target4 = llTarget(pos4,1); llTargetRemove(target2); llStopMoveToTarget(); llOwnerSay("Arrived, rezzing platform."); llRezObject("Privacy Platform",pos, ZERO_VECTOR, ZERO_ROTATION, 0); } } }
|
|
Jillian Callahan
Rotary-winged Neko Girl
Join date: 24 Jun 2004
Posts: 3,766
|
03-31-2006 21:53
vector target; move(vector targ) { if (llVecDist(llGetPos(), targ) < 55.0) // if closer than 55 meters { llMoveToTarget(targ, 1.0); // go directly there } else { llMoveToTarget(llGetPos + <0.0,0.0,55.0>, 0.2); // otherwise go 55 meters over current postion (because llMoveToTarget has a 60 meter range) } } default { state_entry() { llListen(1, "", llGetOwner(), ""); } listen(integer c, string name, key id, string msg) { if (llToLower(msg) == "skybox") state skybox; } } state skybox { state_entry() { llMinEventDelay(0.1); // so not to get silly about not_at_target target = llGetPos() + <0.0, 0.0, 300.0>; // Your target altitude llTarget(target, 0.5); // to fire events related to getting there move(target); // calls subroutine to move you } not_at_target() { move(target); // if we're not there yet, update the mover } at_target(integer tnum, vector tpos, vector opos) { llTargetRemove(tnum); // remove to stop firing events llMoveToTarget(llGetPos(), 0.2); // hold position llRezObject("platform name", llGetPos(), ZERO_VECTOR, ZERO_ROTATION, 0); // res the platform llStopMoveToTarget(); // drop onto platform state default; // return to listen state } } Not compiled or tested, written while sleepy. Hope it helps though! 
|
|
Exile Loudon
Aspiring Scripter
Join date: 10 Dec 2005
Posts: 122
|
04-01-2006 04:23
This works perfectly (A few little changes were made, but nothing drastic.) Once again, Jillian, Thank you!
|