// Like, // Change by anything you want. Just put "" to use your username. string ownername = ""; // Put here the URL for your donation page. It should be something like "https://paypal.me/yourusername" string paypalurl = "https://paypal.me/yourusername"; // Put here a different currency if needed. Default is G$ (Gloebits) string currencyname = "G$"; // ...or some junk integer total; key owner; string particletex = llGetInventoryName(INVENTORY_TEXTURE,0); integer menu_handler; integer menu_channel; string lastgiver; key invitedclicker; // Le functions generalParticleEmitterOn() { llParticleSystem([ PSYS_PART_FLAGS , 0 //| PSYS_PART_BOUNCE_MASK //Bounce on object's z-axis //| PSYS_PART_WIND_MASK //Particles are moved by wind | PSYS_PART_INTERP_COLOR_MASK //Colors fade from start to end | PSYS_PART_INTERP_SCALE_MASK //Scale fades from beginning to end | PSYS_PART_FOLLOW_SRC_MASK //Particles follow the emitter //| PSYS_PART_FOLLOW_VELOCITY_MASK//Particles are created at the velocity of the emitter //| PSYS_PART_TARGET_POS_MASK //Particles follow the target | PSYS_PART_EMISSIVE_MASK //Particles will glow //| PSYS_PART_TARGET_LINEAR_MASK//Undocumented--Sends particles in straight line? , //PSYS_SRC_TARGET_KEY , NULL_KEY,//The particles will head towards the specified key //Select one of the following for a pattern: //PSYS_SRC_PATTERN_DROP Particles start at emitter with no velocity //PSYS_SRC_PATTERN_EXPLODE Particles explode from the emitter //PSYS_SRC_PATTERN_ANGLE Particles are emitted in a 2-D angle //PSYS_SRC_PATTERN_ANGLE_CONE Particles are emitted in a 3-D cone //PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY Particles are emitted everywhere except for a 3-D cone PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE ,PSYS_SRC_TEXTURE, particletex //UUID of the desired particle texture, or inventory name ,PSYS_SRC_MAX_AGE, 5.0 //Time, in seconds, for particles to be emitted. 0 = forever ,PSYS_PART_MAX_AGE, 5.0 //Lifetime, in seconds, that a particle lasts ,PSYS_SRC_BURST_RATE, 1.0 //How long, in seconds, between each emission ,PSYS_SRC_BURST_PART_COUNT, 10 //Number of particles per emission ,PSYS_SRC_BURST_RADIUS, 5.0 //Radius of emission ,PSYS_SRC_BURST_SPEED_MIN, 0.5 //Minimum speed of an emitted particle ,PSYS_SRC_BURST_SPEED_MAX, 0.7 //Maximum speed of an emitted particle ,PSYS_SRC_ACCEL, <0,0,0> //Acceleration of particles each second ,PSYS_PART_START_COLOR, <1,1,1> //Starting RGB color ,PSYS_PART_END_COLOR, <1,1,1> //Ending RGB color, if INTERP_COLOR_MASK is on ,PSYS_PART_START_ALPHA, 1.0 //Starting transparency, 1 is opaque, 0 is transparent. ,PSYS_PART_END_ALPHA, 0.0 //Ending transparency ,PSYS_PART_START_SCALE, <.5,.5,.5> //Starting particle size ,PSYS_PART_END_SCALE, <.1,.1,.1> //Ending particle size, if INTERP_SCALE_MASK is on ,PSYS_SRC_ANGLE_BEGIN, 1.54 //Inner angle for ANGLE patterns ,PSYS_SRC_ANGLE_END, 1.55 //Outer angle for ANGLE patterns ,PSYS_SRC_OMEGA, <0.0,0.0,0.0> //Rotation of ANGLE patterns, similar to llTargetOmega() ]); } generalParticleEmitterOff() { llParticleSystem([]); } updateText() { string str = ownername + "'s Tip Jar\nTouch me for options!\n \n"; if( total>0 ) str+= (string)total + currencyname + " donated so far\nLast tipper: " + lastgiver; else str+= "0" + currencyname + " for now. Fill me up!"; llSetText(str, <0,1,0>, 1); } menu(key user,string title,list buttons) { menu_channel = (integer)(llFrand(99999.0) * -1); menu_handler = llListen(menu_channel,"","",""); llDialog(user,title,buttons,menu_channel); llSetTimerEvent(30.0); } CleanListener() { invitedclicker = NULL_KEY; llSetTimerEvent(0.0); llListenRemove(menu_handler); } default { on_rez(integer s) { llResetScript(); } state_entry() { owner = llGetOwner(); if (ownername == "") ownername = llKey2Name(owner); total = 0; updateText(); generalParticleEmitterOn(); } money(key giver, integer amount) { lastgiver = llKey2Name(giver); llSay(0, "Thank you for the " + (string)amount + currencyname + ", " + lastgiver + "!"); total+=amount; updateText(); llOwnerSay((string)amount + currencyname + " received from " + lastgiver + ". Total: " + (string)total); } touch_start(integer count) { if(llDetectedKey(0) == owner) menu(owner,"Wat do?",["Reset"]); else { invitedclicker = llDetectedKey(0); menu(invitedclicker,"How you gonna tip?",[currencyname,"PayPal","I'm Not"]); } } listen(integer menu_channel, string name, key id, string message) { if( message == "Reset" && id == owner ) { llResetScript(); } else if( message == currencyname) { llDialog(invitedclicker,"To pay me with " + currencyname + ", just right click on me and 'pay' to pay the ammount you want.",["Gotcha"],menu_channel); CleanListener(); } else if( message == "PayPal") { llLoadURL(invitedclicker,"You can make a donation by using this PayPal Page.", paypalurl); CleanListener(); } else if( message == "I'm Not") { CleanListener(); } } timer() { CleanListener(); } }