Advertisement
salahzar

MoveHud (slave)

Jan 24th, 2015
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. key ownerkey=NULL_KEY;
  2. integer listener=0;
  3. float d=0.5;
  4. integer r=45;
  5. integer a=5;
  6.  
  7. vector initial_pos;
  8. rotation initial_rot;
  9.  
  10. integer getChannel()
  11. {
  12.        return 0x80000000 | (integer)("0x"+(string)ownerkey);
  13. }
  14. rotation r2rot(){
  15.     return llEuler2Rot(<0,0,DEG_TO_RAD*r>);
  16. }
  17.  
  18. free()
  19. {
  20.     llSetTimerEvent(0);
  21.    if(ownerkey!=NULL_KEY) llListenRemove(listener);
  22.    listener=0;
  23.    ownerkey=NULL_KEY;
  24.    llSetText(".",<0,1,0>,1);
  25.    
  26. }
  27. busy()
  28. {
  29.    show();
  30.    llSetTimerEvent(60);
  31.    listener=llListen(getChannel(),"",NULL_KEY,"");
  32. }
  33. show(){
  34.    // string sPos=FormatVector(llGetPos(),0);
  35.    // string sRot=FormatRotation(llGetRot(),0);
  36.    // llSay(0,(string)llGetPos());
  37.    llSetText(osKey2Name(ownerkey),<1,1,0>,1);
  38. //    llSetText(osKey2Name(ownerkey)+"\n d="+(string)FormatDecimal(d,1)+" a="+(string)r+"\n"+sPos+" "+sRot,<1,1,1>,1);
  39. }
  40.  
  41. string FormatDecimal(float number, integer precision)
  42. {    
  43.     float roundingValue = llPow(10, -precision)*0.5;
  44.     float rounded;
  45.     if (number < 0) rounded = number - roundingValue;
  46.     else            rounded = number + roundingValue;
  47.  
  48.     if (precision < 1) // Rounding integer value
  49.     {
  50.         integer intRounding = (integer)llPow(10, -precision);
  51.         rounded = (integer)rounded/intRounding*intRounding;
  52.         precision = -1; // Don't truncate integer value
  53.     }
  54.  
  55.     string strNumber = (string)rounded;
  56.     return llGetSubString(strNumber, 0, llSubStringIndex(strNumber, ".") + precision);
  57. }
  58. string FormatVector(vector v,integer precision){
  59.     return "<"+FormatDecimal(v.x,precision)+","+FormatDecimal(v.y,precision)+","+FormatDecimal(v.z,precision)+">";
  60. }
  61. string FormatRotation(rotation r,integer precision){
  62.     vector euler=llRot2Euler(r)/DEG_TO_RAD;
  63.     return FormatVector(euler,precision);
  64. }
  65.  
  66. default
  67. {
  68.     state_entry()
  69.     {
  70.         initial_pos=llGetPos();
  71.         initial_rot=llGetRot();
  72.         llSay(0, "Script running");
  73.         free();
  74.     }
  75.     touch_start(integer count)
  76.     {
  77.         if(llDetectedKey(0)==ownerkey)
  78.         {
  79.             free();
  80.             return;
  81.         }
  82.         if(ownerkey!=NULL_KEY)
  83.         {
  84.             llSay(0,"Sono impegnato con "+osKey2Name(ownerkey));
  85.             return;
  86.         }
  87.         ownerkey=llDetectedKey(0);
  88.         busy();
  89.  
  90.     }
  91.     timer()
  92.     {
  93.         free();        
  94.     }
  95.     listen(integer channel,string name,key id,string str)
  96.     {
  97.         if(str=="Up") llSetPos(llGetPos()+<d,0,0>);
  98.         if(str=="Down") llSetPos(llGetPos()-<d,0,0>);
  99.         if(str=="Left") llSetPos(llGetPos()+<0,d,0>);
  100.         if(str=="Right") llSetPos(llGetPos()-<0,d,0>);
  101.        
  102.         if(str=="ZUp") llSetPos(llGetPos()+<0,0,d>);
  103.         if(str=="ZDown") llSetPos(llGetPos()+<0,0,-d>);
  104.        
  105.         if(str=="RotRight") llSetRot(llGetRot()*r2rot());
  106.         if(str=="RotLeft") llSetRot(llGetRot()/r2rot());
  107.        
  108.         if(str=="+1") d=d+0.1;
  109.                    
  110.         if(str=="-1") d=d-0.1;
  111.         if(str=="+a") r=r+5;
  112.         if(str=="-a") r=r-5;
  113.        
  114.         if(str=="Reset"){
  115.             vector pos=llGetPos();
  116.             while(llVecDist(pos,initial_pos)>0.1){
  117.                 llSetPos(initial_pos);
  118.                 pos=llGetPos();
  119.             }
  120.             llSetRot(initial_rot);
  121.             llResetScript();
  122.         }
  123.         else show();
  124.        
  125.     }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement