Advertisement
Kodos

HumbleBundle Vendor

Oct 1st, 2014
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. integer minimum;
  2. integer average;
  3. integer divisor;
  4. integer total;
  5. string baseItem;
  6. string bonusItem;
  7. string buyMessage = "Thank you for purchasing!";
  8. integer mainChannel;
  9. list getInventory()
  10. {
  11.     integer i;
  12.     list inventory;
  13.     for (i=0; i<llGetInventoryNumber(INVENTORY_ALL); i++)
  14.     {
  15.        inventory += [llGetInventoryName(INVENTORY_ALL, i)];
  16.     }
  17.     return inventory;
  18. }
  19.  
  20. setPriceFloat()
  21. {
  22.     llSetText("Minimum price: " + (string)minimum + "\nAverage price: " + (string)average + "\nPurchase item: " + baseItem + "\nBonus Item: " + bonusItem, <1.0,1.0,1.0>, 1.0);
  23. }
  24. default
  25. {
  26.     state_entry()
  27.     {
  28.         llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
  29.         llSetPayPrice(PAY_HIDE, [PAY_HIDE, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
  30.         setPriceFloat();
  31.     }
  32.  
  33.     touch_start(integer total_number)
  34.     {
  35.         if (llDetectedKey(0) == llGetOwner())
  36.         {
  37.             llDialog(llGetOwner(), "Welcome!", ["Set minimum price", "Set base item", "Set bonus item", "Set message", "Close"], -42);
  38.             mainChannel = llListen(-42, "", llGetOwner(), "");
  39.         }
  40.         llInstantMessage(llDetectedKey(0), "The minimum price is " + (string)minimum + " and the average price is " + (string)average);
  41.     }
  42.  
  43.     listen(integer channel, string name, key id, string message)
  44.     {
  45.         if (channel == -42) {
  46.             if (message == "Set minimum price")
  47.                 llTextBox(llGetOwner(), "Please enter the minimum price", -42);
  48.             else if (message == "Set base item") {
  49.                 llDialog(llGetOwner(), "Choose item buyers get", getInventory(), -100);
  50.                 llListenRemove(mainChannel);
  51.                 mainChannel = llListen(-100, "", llGetOwner(), "");
  52.             }
  53.             else if (message == "Set bonus item") {
  54.                 llDialog(llGetOwner(), "Choose bonus item buyers get for beating the average", getInventory(), -142);
  55.                 llListenRemove(mainChannel);
  56.                 mainChannel = llListen(-142, "", llGetOwner(), "");
  57.             }
  58.             else if (message == "Set message") {
  59.                 llTextBox(llGetOwner(), "Please enter message to be shown on purchase", -50);
  60.                 llListenRemove(mainChannel);
  61.                 mainChannel = llListen(-50, "", llGetOwner(), "");
  62.             }
  63.             else if (message == "Close") {
  64.                 llListenRemove(mainChannel);
  65.             }
  66.             else if ((integer)message > 0) {
  67.                 integer mini = (integer)message;
  68.                 if (!(llGetPermissions() & PERMISSION_DEBIT))
  69.                     llSetPayPrice(PAY_HIDE, [PAY_HIDE, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
  70.                 else {
  71.                     llSetPayPrice(mini, [PAY_HIDE, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
  72.                     minimum = mini;
  73.                     llListenRemove(mainChannel);
  74.                     if (average == 0)
  75.                         average = minimum;
  76.                     setPriceFloat();
  77.                 }
  78.             }
  79.         }
  80.         else if (channel == -100) {
  81.             baseItem = message;
  82.             llListenRemove(mainChannel);
  83.             setPriceFloat();
  84.         }
  85.         else if (channel == -142) {
  86.             bonusItem = message;
  87.             llListenRemove(mainChannel);
  88.             setPriceFloat();
  89.         }
  90.         else if (channel == -50) {
  91.             buyMessage = message;
  92.             llListenRemove(mainChannel);
  93.         }
  94.  
  95.     }
  96.  
  97.     money(key id, integer amount)
  98.     {
  99.         if (amount >= minimum) {
  100.             if (amount > average) {
  101.                 llGiveInventory(id, baseItem);
  102.                 llGiveInventory(id, bonusItem);
  103.             }
  104.             else {
  105.                 llGiveInventory(id, baseItem);
  106.             }
  107.             llInstantMessage(id, buyMessage);
  108.             total += amount;
  109.             divisor++;
  110.             average = total/divisor;
  111.             setPriceFloat();
  112.         }
  113.         else {
  114.             llWhisper(0, "Sorry that is not enough, your money is being refunded.");
  115.             llGiveMoney(id, amount);
  116.         }
  117.     }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement