User:Toady Nakamura/Simple Recording Tipjar
Jump to navigation
Jump to search
- Put this script in any object you own for an instant tipjar.
- By Toady Nakamura
<lsl> integer totaldonated;
default {
on_rez( integer sparam )
{
llResetScript(); // reset when rezzed out
}
state_entry()
{
llSetText("Donation Box\nL$0 Donated so far",<1.0,1.0,1.0>,0.85);
// set text, "message", color vector (here white), and intensity (here 85%)
}
money(key id, integer amount)// When someone pays the system records their key & the amount
{
totaldonated = totaldonated + amount;
// add the amount just given to the total from before
// "amount" comes from the money event
llSetText("Donation Box \n L$" + (string)totaldonated + " Donated so far",<1.0,1.0,1.0>,0.85);
// set the text to show the gift
llInstantMessage(id,"Thank you for the donation!, " + llKey2Name(id));
// send a private thank you to giver.
// "id" comes from the money event
llInstantMessage(llGetOwner(), llKey2Name(id) + " just donated $L" + (string)amount);
// privately message owner to say how much the donation was and the name of the giver.
}
} </lsl>
Fancier Recording Tipjar
I found this one on the LSL-101/Logic page and added it here for reference so you can see the difference between a simple script and one which is a bit more complicated. This one shows
- Donations so far
- Last donation
- Largest donation
<lsl> integer i; // donations so far integer m; // high gift amount integer n; // last gift amount if not high gift string donorh; // high donor's name string donorl; // donor's name string owner; // owner's name vector color1 = <1,1,1>; // one color vector color2 = <1,0,0>; // another color vector color3 = <1,1,0>; // one more color! float alpha = 1.0; // intensity of set text (zero to 1.0)
default {
state_entry()
{
owner = llKey2Name(llGetOwner()); // get the owner's name
llSetPayPrice(20, [10,20,50,100]); // set the box of possible amounts with $20L as least
llSetText("MY Tip Jar\nDonations so far: L$0\n:'(\n ", color1, alpha); // set text
}
money(key id, integer amount)
{
string thanks = llKey2Name(id); // gets id from money event, converts to name string
list tlst = llParseString2List(thanks, [""], [" "]); //divide the list using blank space as separator
string thank = llList2String(tlst, 0); // use only the first name part
llSay(0,"Thank you kindly, " + (string)thank + "!"); // Acknowledge gift in chat
if (amount > m) // if gift is higher than HIGH GIFT ... (remember m starts out at zero)
{
i += amount; // add the amount to donations so far
m = amount; // holds the amount of this gift & changes the former high gift to the new high gift amount
donorh = llKey2Name(id); // set the high donor's name
// use all that to make the set text display
llSetText(owner +"'s Tip Jar\nDonations so far: L$" + (string)i +
"\nLast donation: L$" + (string)m +
"\nLargest donation: L$" + (string)m +
" (" + (string)donorh + ")", color2, alpha);
}
else if (amount <= m) // if gift is not higher than HIGH GIFT
{
i += amount;// add the amount to donations so far
n = amount; // holds the amount of this gift.
// use all that to make the set text display
donorl = llKey2Name(id); // set donor name
llSetText(owner +"'s Tip Jar\nDonations so far: L$" + (string)i +
"\nLast donation: L$" + (string)n +
"\nLargest donation: L$" + (string)m +
" (" + (string)donorh + ")", color3, alpha);
}
}
on_rez(integer start_param)
{
llResetScript();
}
}</lsl>