Advertisement
MusouMiko

Untitled

Feb 16th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.50 KB | None | 0 0
  1. float bunny_strength;
  2. key ql_bunnifier_key;
  3. key ql_bunnifier_next_key;
  4.  
  5. cl_bunny(string level) {
  6.     if(llGetSubString(level, 0, 4) == "help "){
  7.         key who = (key)llGetSubString(level, 5, -1);
  8.         llRegionSayTo(who, 0, "Parameter format: <level>\n\n\Where <level> is the probability that you'll append your message with a pyon, pyon~");
  9.     }
  10.     else {
  11.         bunny_strength = ((float)level) / 100.0;
  12.         llOwnerSay("Bunny Power set to " + (string)((integer)(bunny_strength * 100)) + "%");    
  13.     }
  14. }
  15.  
  16. //searches a message for punctuation or end of line, appents ", pyon" before the punctuation.
  17. string fp_bunny(string message) {
  18.     integer i=0;
  19.     integer j=0;
  20.     while(i <= llStringLength(message) - 1) {
  21.         string s = llGetSubString(message, i, i);       //ith character
  22.         string t = llGetSubString(message, i-1, i-1);     //last character, to determine end of ellipses
  23.         string u = llGetSubString(message, i+1, i+1);   //next character, for finding end of string
  24.         j=i+6;  //position of i + length of a pyon.
  25.        
  26.         if (llStringLength(message) == 1 && !(s == "." || s == "," || s == "~" || s == "…" || s == "?" || s == "!")) { //single character case, execute different
  27.             s = s+", pyon.";
  28.             j=i+7;
  29.         //    llSay(0x7FFFFFFF, "one liner " + s);
  30.         } else if(s == "." || s == "," || s == "~" || s == "…" || s == "?" || s == "!") {
  31.             if(i == 0) {    //very start of string message
  32.                 s = "pyon"+s;
  33.                 j=i+5;
  34.             } else if(t == "?" || t == "!" || t == "~" || t == "…" || t == "." || t == ",") {
  35.                 //do nothing
  36.             }
  37.             else{
  38.                 s = ", pyon"+s;
  39.             }
  40.             //llSay(0x7FFFFFFF, "period found.");
  41.            /* if(t == ".") { //ellipses found, need to iterate to find end.
  42.                 while(j <= llStringLength(message)-1 && t == "."){/*keep iterating to find end of ellipses
  43.                     t = llGetSubString(message, j+1, j+1);
  44.                     j++;
  45.                     //llSay(0x7FFFFFFF, "loop for periods.");
  46.                 }
  47.                 loop = j;
  48.             }
  49.         } else if(s == "," || s == "~" || s == "…" || s == "?" || s == "!"){
  50.             s = ", pyon"+s;
  51.             //llSay(0x7FFFFFFF, "syntax detected.");
  52.             if(t == "?" || t == "!" || t == "~" || t == "…" || t == "." || t == ",") {
  53.                 while(j <= llStringLength(message)-1 && (t == "?" || t == "!" || t == "~" || t == "…" || t == "." || t == ",")) {
  54.                     t = llGetSubString(message, j+1, j+1);
  55.                     j++;
  56.                     //llSay(0x7FFFFFFF, "loop for syntax.");
  57.                 }
  58.                 loop = j;
  59.             } */
  60.         } else if(u == "") {//found end of line, append a pyon and force loop to close
  61.             s = s+ ", pyon";
  62.         //    llSay(0x7FFFFFFF, "eol: " + s);
  63.         }
  64.         else {
  65.             s = "";
  66.             j = 0;
  67.         //    llSay(0x7FFFFFFF, "we're done.");
  68.         }
  69.        
  70.         if(llFrand(1.0) < bunny_strength && s != "") {
  71.             if(llStringLength(message) == 1)
  72.                 return s;
  73.             else if(i == llStringLength(message)-1)
  74.                 message = llGetSubString(message, 0, i-1) + s;
  75.             else if(i > 0)
  76.                 message = llGetSubString(message, 0, i-1) + s + llGetSubString(message, i+1, -1);
  77.             else
  78.                 message = s + llGetSubString(message, i+1, -1);
  79.            
  80.             i+=j;  
  81.         }  else{  
  82.             i++;
  83.         }
  84.     }
  85.     return message;
  86. }
  87.  
  88. default
  89. {
  90.    
  91.     state_entry()
  92.     {
  93.         bunny_strength = 0.4;
  94.         ql_bunnifier_key = llGetInventoryKey(llGetScriptName());
  95.         llMessageLinked(LINK_ROOT, 802, "fp_bunnifier", ql_bunnifier_key);
  96.     }
  97.    
  98.     link_message(integer source, integer number, string message, key id) {
  99.         if(number == -1801) {
  100.             llMessageLinked(LINK_ROOT, 802, "fp_bunnifier", ql_bunnifier_key);
  101.         } else if(id == ql_bunnifier_key) {
  102.            
  103.             if(number == -1803) {
  104.                 ql_bunnifier_next_key = (key)message;    
  105.             } else if(number == -1804) {
  106.                 cl_bunny(message);    
  107.             } else if(number == -1810) {
  108.                 message = fp_bunny(message);
  109.             //    llSay(0x7FFFFFFF, fp_bunny(message));
  110.             }
  111.            
  112.             llMessageLinked(LINK_ROOT, 810, message, "");    
  113.         }
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement