ZenMondo's Not So Simple Tip Jar

From ZenMondo Wormser, 1 Year ago, written in Linden Scripting, viewed 430 times.
URL http://flynnos.org/flynnbin/view/1bd126de Embed
Download Paste or View Raw
  1. /////////////////////////////////////////////
  2. // ZenMondo's Not So Simple Tip Jar
  3. //
  4. // A Tip jar that allows a cut to be taken from the tip
  5. // and only authorized users to log in
  6. //
  7. // A notecard named CONGIG must be in the object's contents with this script
  8. //
  9. // The Notecard is formatted as follows:
  10. //
  11. // Percentage That the person
  12. // signed in will recieve (do not use a
  13. // a percent sign)
  14. //
  15. // cut = 80
  16. //
  17. // List of Users that can sign into
  18. // The Tip Jar. Seperate by commas
  19. // NOTE: Names are CaSe SeNSiTiVe
  20. // Put all the names on a single line
  21. // (do not hit return)
  22. //
  23. // users = ZenMondo Wormser, Ume Niosaki
  24. //
  25. //
  26. // LICENSE:
  27. //
  28. //  This script is given for free, and may NOT be
  29. //  resold or used in a commercial product.
  30. //  You may copy and distribute this script for free.
  31. //  When you redistribute or copy this script, you must
  32. //  do so with FULL PERMS (modify, copy, and transfer),
  33. //  and leave this notice intact.
  34. //
  35. //  You are free to modify this code, but any derivitive
  36. //  scripts must not be used in a commercial product or
  37. //  or sold, and must contain this license.  
  38. //
  39. //  This script is provided free for learning
  40. //  purposes, take it apart, break it, fix it,
  41. //  learn something.  If you come up with something
  42. //  clever, share it.
  43. //
  44. //  Questions about codepoetry (scripting) can always be addressed
  45. //  to me, ZenMondo Wormser.
  46. //
  47. /////////////////////////////////////////
  48.  
  49.  
  50.  
  51. integer position = 0;
  52. string notecard = "CONFIG";
  53. key query;
  54.  
  55. key online_query;
  56.  
  57. integer total;
  58. integer cut;
  59. list users;
  60.  
  61. string sign_in_name;
  62. key sign_in_key;
  63.  
  64. integer signed_in = FALSE;
  65.  
  66. integer isNameOnList( string name )
  67. {
  68.     integer len = llGetListLength( users );
  69.     integer i;
  70.     for( i = 0; i < len; i++ )
  71.     {
  72.         if( llList2String(users, i) == name )
  73.         {
  74.             return TRUE;
  75.         }
  76.     }
  77.     return FALSE;
  78. }
  79.  
  80. {
  81.     state_entry()
  82.     {
  83.         llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
  84.      
  85.         total = 0;
  86.        
  87.         llSetText("Click to Sign In...", <1,0,0>, 1.0);
  88.        
  89.         if(llGetInventoryType(notecard) == INVENTORY_NOTECARD)
  90.         {
  91.             query = llGetNotecardLine(notecard, position);
  92.         }
  93.        
  94.         else
  95.         {
  96.             llOwnerSay(notecard + " is not a notecard in the object's inventory.");
  97.         }
  98.     }
  99.  
  100.     touch_start(integer total_number)
  101.     {
  102.         if(!signed_in)
  103.         {
  104.             if(isNameOnList(llDetectedName(0)))
  105.             {
  106.                 //Sign In
  107.                 sign_in_name = llDetectedName(0);
  108.                 sign_in_key = llDetectedKey(0);
  109.                 llSetTimerEvent(60);
  110.                 signed_in = TRUE;
  111.                 total = 0;
  112.                 llSetText(sign_in_name + "\nL$ " + (string) total, <0,1,0>, 1.0);
  113.             }
  114.            
  115.             else
  116.             {
  117.                 llSay(0, "You are not authorized to sign in to this Tip Jar.");
  118.             }  
  119.         }
  120.        
  121.         else
  122.         {
  123.             if(sign_in_name == llDetectedName(0))
  124.             {
  125.                 //Sign OUt
  126.                 sign_in_name = "";
  127.                 sign_in_key = NULL_KEY;
  128.                 llSetTimerEvent(0);
  129.                 signed_in = FALSE;
  130.                 llSetText("Click to Sign In...", <1,0,0>, 1.0);
  131.             }                
  132.         }
  133.     }
  134.    
  135.     money(key giver, integer amount)
  136.     {
  137.         if(signed_in)
  138.         {    
  139.    
  140.             llInstantMessage(giver, "Thank you for your generosity, " + llKey2Name(giver) +".");
  141.             total += amount;
  142.             llSetText(sign_in_name + "\nL$ " + (string) total, <0,1,0>, 1.0);
  143.             float pay_out = (amount * cut) * 0.01;
  144.            
  145.             llGiveMoney(sign_in_key, (integer) pay_out);    
  146.    
  147.         }
  148.  
  149.         else
  150.         {
  151.             llGiveMoney(giver, amount);
  152.             llInstantMessage(giver, "Thank you, but no one is signed into this tip jar");
  153.         }
  154.        
  155.     }
  156.        
  157.      timer()
  158.     {
  159.         online_query = llRequestAgentData(sign_in_key, DATA_ONLINE);          
  160.     }
  161.    
  162.     dataserver(key request, string data)
  163.     {
  164.         if(query == request)
  165.         {
  166.             if(data == EOF)
  167.             {
  168.                                
  169.                 llSay(0, "Ready");
  170.                 //End of notecard!
  171.             }
  172.             else
  173.             {
  174.                 //Do something with the data
  175.                
  176.                 list cmds = llParseString2List(data, ["="], []);
  177.        
  178.                 string command = llStringTrim(llList2String(cmds, 0), STRING_TRIM);
  179.                 string value = llStringTrim(llList2String(cmds, 1), STRING_TRIM);
  180.                
  181.                 if(llToLower(command) == "cut")
  182.                 {
  183.                     cut = (integer) value;
  184.                     llOwnerSay("Cut set to: " + value + "%");
  185.                 }
  186.                
  187.                 if(llToLower(command) == "users")
  188.                 {
  189.                    users = llCSV2List(value);        
  190.                 }
  191.                 //Increase the position variable and
  192.                 ++position;
  193.                 //Continue reading the next lines.
  194.                 query = llGetNotecardLine(notecard, position);
  195.             }
  196.         }
  197.        
  198.         if(request == online_query)
  199.         {
  200.             integer online = (integer) data;
  201.        
  202.             if(online)
  203.             {
  204.                 ///Hunky Dory
  205.                 return;  
  206.             }
  207.        
  208.             else
  209.             {
  210.                 //Logged off or crashed or what have you.
  211.                 sign_in_name = "";
  212.                 sign_in_key = NULL_KEY;
  213.                 llSetTimerEvent(0);
  214.                 signed_in = FALSE;
  215.                 llSetText("Click to Sign In...", <1,0,0>, 1.0);
  216.                 return;
  217.             }
  218.        
  219.         }            
  220.        
  221.     }
  222.    
  223.     changed(integer change)
  224.     {
  225.         if(change & CHANGED_INVENTORY)
  226.         {
  227.             llResetScript();
  228.         }  
  229.     }
  230.    
  231.     {
  232.         if (perm & PERMISSION_DEBIT)
  233.         {            
  234.             //All is Hunky-Dory
  235.             return;
  236.         }
  237.         else
  238.         {
  239.            
  240.             llOwnerSay("This tip jar requires PERMISSION_DEBIT permission! Please Accept Debit Permissions.");
  241.              llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
  242.         }
  243.     }
  244.  
  245.     on_rez(integer start_param)
  246.     {
  247.         llResetScript();
  248.     }
  249. }

Reply to "ZenMondo's Not So Simple Tip Jar"

Here you can reply to the paste above

captcha