Advertisement
salahzar

Movimento Pezzi edmondo

May 3rd, 2013
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // modifica
  2. list initialpositions=[ 0,0,0,0,0,0,0,0 ];
  3. list tokenslinks     =[ 0,0,0,0,0,0,0,0 ];
  4.  
  5. vector centralpos;
  6.  
  7. vector target; integer targetlink;
  8. vector getPos(integer link)
  9. {
  10.     key id=llGetLinkKey(link);
  11.    
  12.     vector pos=llList2Vector(llGetObjectDetails(id,[OBJECT_POS]),0);
  13.  
  14.     return pos;
  15.    
  16. }
  17. accendi(integer link)
  18. {
  19.     llSetLinkPrimitiveParamsFast(link,[PRIM_FULLBRIGHT,ALL_SIDES,TRUE,
  20.                         PRIM_POINT_LIGHT,TRUE,
  21.                                     <1.0,0.7,1.0>,  // light color vector range: 0.0-1.0 *3
  22.                                     1.0,            // intensity    (0.0-1.0)
  23.                                     10.0,           // radius       (.1-20.0)
  24.                                     0.6
  25. ]);
  26. }
  27.  
  28. spegni(integer link)
  29. {
  30.      llSetLinkPrimitiveParamsFast(link,[PRIM_FULLBRIGHT,ALL_SIDES,FALSE,
  31.      PRIM_POINT_LIGHT, FALSE,   // if this is false, light is off,
  32.                                      <0.0,1.0,0.0>,1.0, 10.0, 0.5
  33.      
  34.      ]);
  35. }
  36.  
  37.  
  38. default
  39. {
  40.  state_entry()
  41.  {
  42.     llSetText("",<1,1,1>,1);
  43.     centralpos=getPos(1);
  44.    
  45.     // mette a posto tutti i pezzi
  46.     integer i=0;
  47.     for(i=2;i<=llGetNumberOfPrims();i++)
  48.     {
  49.         string name=llGetLinkName(i);
  50.         if(llGetSubString(name,0,0)=="S")
  51.         {
  52.             integer num=(integer)llGetSubString(name,1,-1);
  53.             initialpositions=llListReplaceList(initialpositions,[ getPos(i)-centralpos + <0,0,0.1> ],num-1,num-1);
  54.         }
  55.         integer index=(integer)name;
  56.         if( index > 0)
  57.         {
  58.             tokenslinks=llListReplaceList(tokenslinks,[ i ], index-1, index-1 );
  59.         }
  60.        
  61.     }
  62.     //llSay(0,llList2CSV(tokenslinks));
  63.    
  64.     for(i=0;i<8;i++)
  65.     {
  66.         integer tokenlink=llList2Integer(tokenslinks,i);
  67.         target=llList2Vector(initialpositions,i);
  68.         //llSay(0,"Moving token # "+i+" link: "+(string)tokenlink+ " named: "+llGetLinkName(tokenlink)+" to "+(string)target);
  69.         llSetLinkPrimitiveParamsFast( tokenlink, [ PRIM_POSITION, target ]);
  70.     }
  71.     target=ZERO_VECTOR;
  72.     llListen(100,"",llGetOwner(),"");
  73.     llSay(0,"Ready");
  74.    
  75.  }
  76.  changed(integer change)
  77.  {
  78.     if(change & CHANGED_OWNER) llResetScript();
  79.  }
  80.  on_rez(integer rez)
  81.  {
  82.      llResetScript();
  83.  }
  84.  listen(integer channel,string name,key id,string str)
  85.  {
  86.      if(str=="RESET") llResetScript();
  87.  }
  88.  
  89.  touch_start(integer total_number)
  90.  {
  91.     integer link=llDetectedLinkNumber(0);
  92.     string name=llGetLinkName(link);
  93.     if(link==1)
  94.     {
  95.         llDialog(llDetectedKey(0),"Menu",["RESET"],100);
  96.         return;
  97.     }
  98.    
  99.     integer number=(integer)name;
  100.     if(number>0){
  101.         if(target==ZERO_VECTOR)
  102.         {
  103.             llSay(0,"Clicca prima un posto dove andare");
  104.             return;
  105.         }
  106.         llSetLinkPrimitiveParamsFast( link, [ PRIM_POSITION, target ]);
  107.         spegni(targetlink);
  108.         llSetTimerEvent(0); target=ZERO_VECTOR; //spegni(targetlink);
  109.         return;
  110.     }
  111.     if(llGetSubString(name,0,0)=="S" || llGetSubString(name,0,0)=="T")
  112.     {
  113.         llSetTimerEvent(10);
  114.         target=getPos(link)-centralpos+<0,0,0.1>;
  115.         accendi(link); spegni(targetlink); targetlink=link;
  116.         llSay(0,"Marcato luogo di arrivo, clicca la cornice da muovere entro 10 secondi");
  117.         return;
  118.        
  119.     }
  120.    
  121.    
  122.    
  123.  }
  124.  timer()
  125.  {
  126.      llSay(0,"Tempo scaduto");
  127.      llSetTimerEvent(0);
  128.      target=ZERO_VECTOR; spegni(targetlink);
  129.  }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement