Advertisement
salahzar

Script Chimico per fiasca

May 2nd, 2014
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. vector COLOR=<1,1,0>;
  2. integer TIMEOUT=15;
  3. shake()
  4. {
  5.     vector pos=llGetPos();
  6.     rotation rot=llGetRot();
  7.     vector eulrandom1=<llFrand(PI/8),llFrand(PI/8),llFrand(PI/8)>;
  8.     vector eulrandom2=<llFrand(PI/8),llFrand(PI/8),llFrand(PI/8)>;
  9.     llSetRot(rot*llEuler2Rot(eulrandom1));
  10.     llSleep(0.1);
  11.     llSetRot(rot*llEuler2Rot(eulrandom2));
  12.     llSleep(0.02);
  13.     llSetRot(rot);
  14.     llSleep(0.5);
  15. }
  16. switchoff()
  17. {
  18.     llParticleSystem([]);
  19. }
  20. smoke(vector direction)
  21. {
  22.         llParticleSystem(
  23.         [
  24.             PSYS_SRC_PATTERN,PSYS_SRC_PATTERN_ANGLE,
  25.             PSYS_SRC_BURST_RADIUS,0,
  26.             PSYS_SRC_ANGLE_BEGIN,0,
  27.             PSYS_SRC_ANGLE_END,0,
  28.             PSYS_SRC_TARGET_KEY,llGetKey(),
  29.             PSYS_PART_START_COLOR,COLOR,
  30.             PSYS_PART_END_COLOR,<0.242279,0.023346,0.074658>,
  31.             PSYS_PART_START_ALPHA,1,
  32.             PSYS_PART_END_ALPHA,1,
  33.             //PSYS_PART_START_GLOW,0,
  34.             //PSYS_PART_END_GLOW,0,
  35.             //PSYS_PART_BLEND_FUNC_SOURCE,PSYS_PART_BF_SOURCE_ALPHA,
  36.             //PSYS_PART_BLEND_FUNC_DEST,PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA,
  37.             PSYS_PART_START_SCALE,<0.040000,0.040000,0.000000>,
  38.             PSYS_PART_END_SCALE,<0.500000,0.500000,0.000000>,
  39.             PSYS_SRC_TEXTURE,"",
  40.             PSYS_SRC_MAX_AGE,0,
  41.             PSYS_PART_MAX_AGE,2,
  42.             PSYS_SRC_BURST_RATE,0,
  43.             PSYS_SRC_BURST_PART_COUNT,5,
  44.             PSYS_SRC_ACCEL,direction,
  45.             PSYS_SRC_OMEGA,<0.000000,0.000000,0.600000>,
  46.             PSYS_SRC_BURST_SPEED_MIN,0.5,
  47.             PSYS_SRC_BURST_SPEED_MAX,0.5,
  48.             PSYS_PART_FLAGS,
  49.                 0 |
  50.                 PSYS_PART_EMISSIVE_MASK |
  51.                 PSYS_PART_FOLLOW_SRC_MASK |
  52.                 PSYS_PART_INTERP_COLOR_MASK |
  53.                 PSYS_PART_INTERP_SCALE_MASK |
  54.                 PSYS_PART_WIND_MASK
  55.         ]);
  56.    
  57. }
  58. integer LISTEN;
  59. key ID;
  60. default
  61. {
  62.     state_entry()
  63.     {
  64.         switchoff();
  65.         llSetLinkColor(1,<1,1,1>,ALL_SIDES);
  66.         LISTEN=-1; llSetLinkColor(2,COLOR,ALL_SIDES);
  67.         ID=NULL_KEY;
  68.         llSay(0,"reset");
  69.     }
  70.     touch_start(integer count)
  71.     {
  72.         key id=llDetectedKey(0);
  73.         if(ID==NULL_KEY)
  74.         {
  75.             ID=id;
  76.             smoke(<0,0,0.3>);
  77.              
  78.             llSetPos(llGetPos()+<0,0,0.3>);
  79.        
  80.            
  81.         }
  82.         if(ID==id)
  83.         {
  84.             llSetTimerEvent(TIMEOUT);
  85.             LISTEN=llListen(-1,"",ID,"");
  86.             llDialog(ID,"Scegli:",["AGITA", "1CC","2CC","3CC","5CC","POSA"],-1);
  87.         }
  88.    
  89.        
  90.     }
  91.     timer()
  92.     {
  93.         llSay(0,"timeout");  llSetPos(llGetPos()+<0,0,-0.3>);
  94.         llResetScript();
  95.     }
  96.     listen(integer channel,string name, key id, string str)
  97.     {
  98.         llSetTimerEvent(TIMEOUT);
  99.         llListenRemove(LISTEN);
  100.         if(str=="POSA")
  101.         {
  102.             llSetTimerEvent(0);
  103.             llSetPos(llGetPos()+<0,0,-0.3>);
  104.             llResetScript();
  105.             return;
  106.         }
  107.         llWhisper(100,str);
  108.         if(str=="AGITA")
  109.         {
  110.             integer i;
  111.             for(i=0;i<3;i++)
  112.             {
  113.                 shake();
  114.             }
  115.         }
  116.         else
  117.         {
  118.             llSay(0,"Sto versando "+str+" di "+llGetObjectDesc());
  119.             rotation rot=llGetRot();
  120.             smoke(<-0.8,0,-0.1>);
  121.             llSetRot(rot*llEuler2Rot(<PI/2,0,0>));
  122.            
  123.             llSleep(4);
  124.             llSetRot(rot);
  125.             smoke(<0,0,0.3>);
  126.         }
  127.        
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement