Advertisement
Shinobiace

Fish Script with state change(animation)

Oct 23rd, 2020
427
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. integer visible = TRUE;
  2. vector defaultsize;
  3.    
  4. //Random number variable
  5. float   FloatValue;
  6. integer IntValue;
  7. string  StringValue;
  8.  
  9. integer lchan;
  10.  
  11. integer mchan; //menu channel
  12. integer mhandle;
  13.  key owner;
  14.  
  15. //key id;
  16. integer nchan; // to get answer channel        
  17. integer cchan; //2nd menu channel
  18. integer chandle;
  19.  
  20. integer nextmenu; //check for if the 1st menu was answered
  21. float   FloatValue2;
  22. integer IntValue2;
  23. string StringValue2;
  24.  
  25. integer fishdrop = FALSE;
  26. list leaderboard;
  27. integer totalpoints;
  28. string username;
  29. key unowner;
  30. key lid;
  31. string lusername;
  32. string ltotalpoints;
  33.  
  34.  
  35. string cmd2;
  36. float fishingtime;
  37. float fishingcounter;
  38. integer ifishingtime;
  39. integer animation = FALSE;
  40.  
  41. integer stopmtimer = TRUE;
  42. fishtime()
  43. {
  44.     fishingtime = 10.0 - llFrand(3.0);
  45.     ifishingtime = (integer)fishingtime;
  46.     llSay(0,"Fishing time: "+ (string)fishingtime);
  47.     for(fishingcounter = 0; fishingcounter<= ifishingtime; ++fishingcounter)
  48.     {
  49.          llSetTimerEvent(fishingtime);  
  50.          animation = TRUE;    
  51.     }      
  52.     llSleep(0.3);              
  53. }
  54. addpoints()
  55. {
  56.     totalpoints += 1;
  57. }
  58. show()
  59. {
  60.     llSetAlpha(1,ALL_SIDES);
  61.     visible = TRUE;
  62.     return;
  63. }
  64. hide()
  65. {
  66.     llSetAlpha(0,ALL_SIDES);
  67.     visible = FALSE;
  68.     return;
  69. }
  70.  
  71. Ssize()
  72. {  
  73.    
  74.    
  75.    llSetScale(defaultsize/4);
  76.    
  77. }
  78. Msize()
  79. {  
  80.    
  81.    llSetScale(defaultsize/2);
  82.    
  83. }
  84. Bsize()
  85. {  
  86.    
  87.    llSetScale(defaultsize);
  88.    
  89. }
  90. Randomcolor()
  91. {
  92.     //Red:4,blue:5,green:6,yellow:7,black:8,white:9
  93.    
  94.     if(StringValue2=="4") // Red
  95.     {
  96.         llSetLinkColor(LINK_THIS, <1.0, 0.0, 0.0>, ALL_SIDES);
  97.     }
  98.     else if(StringValue2=="5") // Blue
  99.     {
  100.         llSetLinkColor(LINK_THIS, <0.0, 0.0, 1.0>, ALL_SIDES);
  101.     }
  102.     else if(StringValue2=="6") // Green
  103.     {
  104.         llSetLinkColor(LINK_THIS, <0.0, 1.0, 0.0>, ALL_SIDES);
  105.     }
  106.     else if(StringValue2=="7") // Yellow
  107.     {
  108.         llSetLinkColor(LINK_THIS, <1.0, 1.0, 0.0>, ALL_SIDES);
  109.     }
  110.     else if(StringValue2=="8") // Black
  111.     {
  112.         llSetLinkColor(LINK_THIS, <0.0, 0.0, 0.0>, ALL_SIDES);
  113.     }
  114.     else if(StringValue2=="9") // White
  115.     {
  116.         llSetLinkColor(LINK_THIS, <1.0, 1.0, 1.0>, ALL_SIDES);
  117.     }
  118.  
  119.    
  120. }
  121.  
  122.  
  123. integer GetCh(key id)   // make a unieq channel from the key inputted
  124. {
  125.     return ((integer)("0x"+llGetSubString((string)id,-8,-1)) & 0x3FFFFFFF) ^ 0xBFFFFFFF;
  126. }
  127.  
  128.  
  129. key Region()  // get the region uuid
  130. {
  131.     vector z = llGetRegionCorner();
  132.  
  133.     return (key)((string)(z.x/256 + 100*z.y));
  134.  
  135. }
  136.  
  137. integer allow; // First use a boolean to only allow fishing again once an answer has been given.
  138.  
  139. list ans; // we also need a list to store the buttons.
  140.  
  141. list ans2;
  142. Timer()
  143. {
  144.  
  145.  llSetTimerEvent(0.0);  
  146.   llSetTimerEvent(60.0);    
  147. }
  148.  
  149. default
  150. {
  151.     attach(key id)
  152.     {
  153.      
  154.      if(id)
  155.      llResetScript();
  156.        
  157.     }
  158.    
  159.     state_entry()
  160.     {
  161.         nextmenu = FALSE;
  162.         allow = TRUE; // allow fishing
  163.         owner = llGetOwner();
  164.         //unowner = llRequestUsername(llGetOwner());
  165.         username = llGetUsername(owner);
  166.  
  167.         mchan = -1 - (integer)("0x" + llGetSubString( (string)llGetKey(), -8, -1) );
  168.         cchan = ((integer)("0x"+llGetSubString((string)llGetOwner(),-8,-1)) - 567) | 0x8000000;
  169.         //nchan =  ((integer)("0x"+llGetSubString((string)llGetOwner(),-8,-1)) - 123) | 0x8000000;
  170.         llListen(-11223,"Fish Pond",NULL_KEY,"");
  171.         llSetAlpha(1,ALL_SIDES);  
  172.         defaultsize = <0.4/6, 2.0/6, 5.0/6>;  
  173.         llSetScale(defaultsize);      
  174.         lchan = ((integer)("0x"+llGetSubString((string)llGetOwner(),-8,-1)) - 723) | 0x8000000;
  175.         llListen(lchan,"Fish Pond",NULL_KEY,"");  
  176.        // llListen(nchan,"Fish Pond",NULL_KEY,"");
  177.         llListen(-66778,"Fishing Rod",NULL_KEY,"");        
  178.     }
  179.    
  180.     listen(integer channel, string what, key who, string msg)
  181.     {
  182.       //  if(llGetOwnerKey(who) == llGetOwner()) // Note that the message comes from the pond and not the owner of the rod. You can't use llGetOwnerKey(who) because the owner of the pond and the owner of the rod are not necessarily the same owner.
  183.      
  184.    
  185.            
  186.      if(msg == "on" && allow )  // 13. Remember to check the parsed message.
  187.             {
  188.                 hide();
  189.                 llSetScale(defaultsize);
  190.             }
  191.            
  192.                
  193.                
  194.             else if(msg == "off" && allow ) // only catch a fish if allowed
  195.             {
  196.                
  197.                  
  198.                 //allow = FALSE;
  199.                 //fishtime();
  200.                 //llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
  201.                 //llSetTimerEvent(0.0);
  202.                
  203.                 //llSay(0,"fishing time: "+(string)ifishingtime);
  204.                
  205.                
  206.                
  207.                 state wait_animation;
  208.                 show();
  209.                
  210.                                
  211.                
  212.                 //random number generator
  213.        
  214.                 FloatValue  = 3.0 - llFrand(2.0);
  215.                 IntValue    = llRound(FloatValue);
  216.                 StringValue = (string)IntValue;
  217.                 FloatValue2  = 9.0 - llFrand(5.0);  
  218.                 IntValue2    = llRound(FloatValue2);
  219.                 StringValue2 = (string)IntValue2;
  220.                
  221.                // llOwnerSay("Int is " + StringValue);
  222.          
  223.               //  llSay(GetCh(Region()) - 34, StringValue);   //offset must be the same as in the instruction board
  224.              // we don't need to send the value to the instruction board.
  225.                
  226.                  llSay(0,"fish region chan: " + (string)(GetCh(Region()) - 34));    
  227.                
  228.                
  229.                 if(IntValue == 1)
  230.                 {
  231.                     Ssize();
  232.                     Randomcolor();
  233.                 }
  234.                 else if(IntValue == 2)
  235.                 {
  236.                     Msize();
  237.                     Randomcolor();
  238.                 }
  239.                 else if(IntValue == 3)
  240.                 {
  241.                     Bsize();
  242.                     Randomcolor();
  243.                 }
  244.                
  245.               llSay(cchan, (string) StringValue2);
  246.               string answer2;
  247.               string answer3;
  248.               string answer4; // variable to store the buttons  
  249.              
  250.               if(StringValue == "1")
  251.             {
  252.  
  253.                 answer2= "Small Fish";
  254.                 answer3= "Medium Fish";
  255.                 answer4= "Big Fish";            
  256.             }
  257.             else if(StringValue == "2")
  258.             {              
  259.                 answer2= "Medium Fish";
  260.                 answer3= "Small Fish";
  261.                 answer4= "Big Fish";                
  262.             }
  263.             else if(StringValue == "3")
  264.             {                            
  265.                 answer2= "Big Fish";
  266.                 answer3= "Medium Fish";
  267.                 answer4= "Small Fish";
  268.                
  269.             }  // we got the buttons
  270.                
  271.             // Now lets get the dialog set up.
  272.             string  question = "\n" + "What Fish have you caught?";
  273.             ans = [answer2] + [answer3] +[answer4];
  274.            list rand_buttons = llListRandomize( llList2List(ans,0,-1),1);  //make a new list and randomize the buttons. This will retain the order of the original list.
  275.        
  276.             list buttons = rand_buttons;    // set the buttons as the new list.
  277.            
  278.              llListenRemove(mhandle);
  279.              mhandle = llListen(mchan, "", owner, "");
  280.              llOwnerSay((string)ans);  
  281.              
  282.              
  283.              llDialog(owner, question, buttons, mchan);
  284.              
  285.              Timer();
  286.              allow = FALSE; // don't allow fishing again until a button is selected
  287.              string corans = llList2String(ans,0);
  288.              llOwnerSay("The ans for size is: " + corans);                              
  289.             }
  290.            
  291.            
  292.           else if(channel == mchan)
  293.         {
  294.             //Check what answer you chose is same to the the fish you caught
  295.            
  296.             // We know that the correct answer always comes after the user id in the list.
  297.              
  298.            string corans = llList2String(ans,0); // gets the first element and sets it ascorrect answer
  299.            
  300.              if(msg=="Small Fish")
  301.             {
  302.                 if(msg != corans)
  303.                 {
  304.                     llSay(0,"Wrong Answer");
  305.                  
  306.                 }
  307.                 else
  308.                 {
  309.                     llSay(0,"Congratz It right");
  310.                     addpoints();
  311.  
  312.                 }
  313.                    
  314.                
  315.             }
  316.             else if(msg == "Medium Fish")
  317.             {
  318.                 if(msg != corans)
  319.                 {
  320.                     llSay(0,"Wrong Answer");
  321.  
  322.                 }
  323.                 else
  324.                 {
  325.                     llSay(0,"Congratz It right");
  326. addpoints();
  327.                 }
  328.             }
  329.             else if(msg == "Big Fish")
  330.             {
  331.                 if(msg != corans)
  332.                 {
  333.                     llSay(0,"Wrong Answer");
  334.                
  335.                 }
  336.                 else
  337.                 {
  338.                     llSay(0,"Congratz It right");
  339.                  addpoints();
  340.                 }
  341.             }
  342.            
  343.             nextmenu = TRUE; // button was selected so allow fishing again.
  344.            // llListenRemove(mhandle);
  345.            
  346.            
  347.                  if(nextmenu==TRUE)
  348.                 {
  349.                    
  350.                    
  351.                 string answer5;  // answer5 will always be the correct answer
  352.                 string answer6;
  353.                 string answer7;
  354.                 string answer8;
  355.                 string answer9;
  356.                 string answer10;
  357.                 if(StringValue2 == "4") //red
  358.                 {
  359.            
  360.                 answer5= "Red";
  361.                 answer6= "Blue";
  362.                 answer7= "Green";  
  363.                 answer8= "Yellow";
  364.                 answer9= "Black";
  365.                 answer10= "White";              
  366.                 }
  367.                 else if(StringValue2 == "5") //blue
  368.                 {    
  369.                 answer5= "Blue";
  370.                 answer6= "Red";
  371.                 answer7= "Green";  
  372.                 answer8= "Yellow";
  373.                 answer9= "Black";
  374.                 answer10= "White";
  375.                  
  376.                 }
  377.                 else if(StringValue2 == "6") //green
  378.                 {              
  379.                 answer5= "Green";
  380.                 answer6= "Blue";
  381.                 answer7= "Red";  
  382.                 answer8= "Yellow";
  383.                 answer9= "Black";
  384.                 answer10= "White";              
  385.                 }
  386.                  else if(StringValue2 == "7") //yellow
  387.                 {    
  388.                 answer5= "Yellow";
  389.                 answer6= "Blue";
  390.                 answer7= "Green";  
  391.                 answer8= "Red";
  392.                 answer9= "Black";
  393.                 answer10= "White";
  394.                  
  395.                 }
  396.                 else if(StringValue2 == "8") //black
  397.                 {              
  398.                 answer5= "Black";
  399.                 answer6= "Blue";
  400.                 answer7= "Green";  
  401.                 answer8= "Yellow";
  402.                 answer9= "Red";
  403.                 answer10= "White";
  404.                 }
  405.                  else if(StringValue2 == "9") //white
  406.                 {    
  407.                 answer5= "White";
  408.                 answer6= "Blue";
  409.                 answer7= "Green";  
  410.                 answer8= "Yellow";
  411.                 answer9= "Black";
  412.                 answer10= "Red";                
  413.                 }
  414.                 string  cquestion = "\n" + "What color Fish did you caught?";
  415.                 ans2 = [answer5] + [answer6] + [answer7] + [answer8] + [answer9] + [answer10];
  416.                 list crand_buttons = llListRandomize( llList2List(ans2,0,-1),1);      
  417.                 list cbuttons = crand_buttons;    // set the buttons as the new list.
  418.            
  419.                 llListenRemove(chandle);
  420.                 chandle = llListen(cchan, "", owner, "");
  421.                 llOwnerSay((string)ans2);  
  422.                 llDialog(owner, cquestion, cbuttons, cchan);
  423.                 //if(stopmtimer == FALSE)
  424.                 //{
  425.                 Timer();
  426.                 //}
  427.                 //allow = FALSE; // don't allow fishing again until a button is selected
  428.                 string corans2 = llList2String(ans2,0);
  429.                 llOwnerSay("The ans for color is: " + corans2);      
  430.                 }    
  431.            
  432.         }
  433.          else if(channel == cchan)
  434.             {
  435.                 //find the answer
  436.                
  437.            
  438.                
  439.                 string corans2 = llList2String(ans2,0);
  440.                 llOwnerSay("Fish Colour is: " + corans2);
  441.                 if(msg == "Red")
  442.                 {
  443.                     if(msg != corans2)
  444.                     {
  445.                         llSay(0, "Too bad, that's wrong");
  446.                     }
  447.                     else
  448.                     {
  449.                         llSay(0, "Congratz, you're right");
  450.                         addpoints();
  451.                     }
  452.                    
  453.                 }
  454.                 else if(msg == "Blue")
  455.                 {
  456.                     if(msg != corans2)
  457.                     {
  458.                         llSay(0, "Too bad, that's wrong");
  459.                        
  460.                     }
  461.                     else
  462.                     {
  463.                         llSay(0, "Congratz, you're right");
  464.                         addpoints();
  465.                     }
  466.                    
  467.                 }
  468.                 else if(msg == "Green")
  469.                 {
  470.                     if(msg != corans2)
  471.                     {
  472.                         llSay(0, "Too bad, that's wrong");
  473.                        
  474.                     }
  475.                     else
  476.                     {
  477.                         llSay(0, "Congratz, you're right");
  478.                         addpoints();
  479.                     }
  480.                    
  481.                 }
  482.                 else if(msg == "Yellow")
  483.                 {
  484.                     if(msg != corans2)
  485.                     {
  486.                         llSay(0, "Too bad, that's wrong");
  487.                        
  488.                     }
  489.                     else
  490.                     {
  491.                         llSay(0, "Congratz, you're right");
  492.                         addpoints();
  493.                     }
  494.                    
  495.                 }
  496.                 else if(msg == "Black")
  497.                 {
  498.                     if(msg != corans2)
  499.                     {
  500.                         llSay(0, "Too bad, that's wrong");
  501.                        
  502.  
  503.                     }
  504.                     else
  505.                     {
  506.                         llSay(0,"Congratz, you're right");
  507.                         addpoints();
  508.                     }
  509.                    
  510.                 }
  511.                 else if(msg == "White")
  512.                 {
  513.                     if(msg != corans2)
  514.                     {
  515.                         llSay(0, "Too bad, that's wrong");
  516.                     }
  517.                     else
  518.                     {
  519.                         llSay(0, "Congratz, you're right");
  520.                         addpoints();
  521.                     }
  522.                    
  523.                 }
  524.                 list leaderboard = [owner]+"|" + [username]+"|" + [totalpoints]; // 3 Elements in a List
  525.                
  526.                 llOwnerSay("leaderboard: "+ (string)leaderboard);
  527.                 llSay( GetCh(Region()) - 35, (string)leaderboard);
  528.                
  529.                
  530.                 nextmenu = FALSE;
  531.                 allow = TRUE;      
  532.                    
  533.             }
  534.              
  535.     }
  536.    
  537.     /*
  538.      run_time_permissions(integer permissions)
  539.     {
  540.         if (permissions & PERMISSION_TRIGGER_ANIMATION)
  541.         {   // If permission to animate was granted, start the animation.
  542.             llStartAnimation("Fishing Middle Animation");
  543.            
  544.              llSay(0,"Animation started");
  545.              llSleep(fishingtime);
  546.             animation = FALSE;
  547.             if(animation == FALSE);
  548.             {
  549.                 llSay(0,"Animation stop");
  550.                 llStopAnimation("Fishing Middle Animation");
  551.             }
  552.         }
  553.     }
  554.     */
  555.    
  556.      timer() // After 60 seconds this event will run
  557.     {
  558.      
  559.       llSetTimerEvent(0.0);
  560.      
  561.       llListenRemove(mhandle); // Removes mhandle instance
  562.       llListenRemove(chandle);
  563.       llSay(0,"Menu timed out.Please try again");
  564.       allow = TRUE;  // if user doesn't click a button drop the fish and allow fishing again.
  565.      
  566.     }
  567.     state_exit()
  568.     {
  569.         llSay(0, "The script leaves the default state.");
  570.     }
  571.    
  572.  
  573. }
  574.  
  575. state wait_animation
  576. {
  577.     state_entry()
  578.     {
  579.         key owner;
  580.         owner = llGetOwner();
  581.         llSay(0, "The script entered state 'two'");
  582.         llMessageLinked(LINK_THIS, 0, "Fishing Time/Anim", owner);  
  583.     }
  584.     link_message(integer source, integer num, string str, key id)
  585.     {
  586.         key ownerid;
  587.         ownerid = llGetOwner();
  588.         if(ownerid== id )
  589.         {
  590.             state default;
  591.         }
  592.        
  593.     }
  594.  
  595.     state_exit()
  596.     {
  597.         llSay(0, "The script leaves state 'wait_animation'");
  598.     }
  599. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement