Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector whereibelong;
- vector howiamsupposedtobe;
- string corename;
- integer datachan=-72492424;
- goto(vector destination){
- integer ok=0;
- do{
- if(llGetPos()!=destination)
- llSetPrimitiveParams([PRIM_POSITION, destination]);
- else ok=1;
- } while(ok==0);
- }
- default{
- on_rez(integer param){
- if(param!=0)
- datachan=param;
- }
- state_entry(){
- llListen(datachan,"","","");
- }
- listen(integer chan,string who,key id,string msg){
- if(msg=="compilelist"){
- corename=who;
- state compilemode;
- }
- else if(msg=="reorient")
- state orientmode;
- else if(msg=="x")
- llDie();
- }
- }
- state compilemode{
- state_entry(){
- llSensor(corename,"",SCRIPTED,200,PI);
- }
- sensor(integer no){
- vector originpos=llDetectedPos(0);
- vector originrot=llRot2Euler(llDetectedRot(0))*RAD_TO_DEG;
- whereibelong=originpos-llGetPos();
- howiamsupposedtobe=originrot-llRot2Euler(llGetRot())*RAD_TO_DEG;
- llShout(datachan,llGetObjectName());
- state default;
- }
- }
- state orientmode{
- state_entry(){
- llSensor(corename,"",SCRIPTED,200,PI);
- }
- sensor(integer no){
- vector poopPos=llDetectedPos(0);
- vector poopRot=llRot2Euler(llDetectedRot(0))*RAD_TO_DEG;
- goto(poopPos-(whereibelong*llDetectedRot(0)));
- llSetRot(llEuler2Rot((poopRot-howiamsupposedtobe)*DEG_TO_RAD));
- state default;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment