First Name Letter Prize

From Second Life Wiki
Jump to navigation Jump to search


First Name Letter Prize

I got bored one day and saw these lucky chairs and made something of my own and decided to open source it

-- UPDATE ADDED 19 DECEMBER 2009 DUE TO PEOPLE WITH LOWERCASE NAMES

   // CONVERT IT ALL INTO LOWERCASE
   firstletter  = llToLower(firstletter);
   winnerletter = llToLower(winnerletter);

Okay, let's see the script!

Here's the script.

//    First Name Prize Script for use in Second Life
//    Copyright (C) 2009  RaithSphere Whybrow (Second Life Avatar Name)/Gavin Owen (Real Name)
 
//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
 
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
 
//    You should have received a copy of the GNU General Public License
//    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
// CONFIG \\
 
// How Often do we change Letter?
// THIS IS IN MINUITES
// SO SIMPLE MATHS 
integer changeletter = 10;
integer timerevent;
string winnerletter;
 
// ENABLE DEBUG MODE 0 = NO & 1 = YES
integer debug = 0;
 
// LETS GET TEH ALPHABET!
list letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
 
// DEBUG SHIT DON'T MESS WITH THIS
deBug(string dmsg)
{
    if(debug)
    llOwnerSay(dmsg);
}
 
 
// THIS IS THE CHECK NAME SUB
checkname(key whositting)
{
    // SAYS THE AVATARS KEY IN DEBUG MESSAGE
    deBug((string)whositting);
    // WE NEED TO KNOW WHO IS SITTING HERE A KEY IS USELESS!
    string whothat = llKey2Name(whositting);
    // SPLIT THER NAME UP 
    list name  = llParseString2List(whothat, [" "], []);
    // 0 is the First name change to 1 if you want to use LASTNAME
    string who = llList2String(name, 0);
    // Get the Length of the name
    integer length = llStringLength(who);
    // DELETE EVERYTHING AFTER LAST LETTER
    string firstletter= llDeleteSubString(who, 1, length);   

    // CONVERT IT ALL INTO LOWERCASE
    firstletter  = llToLower(firstletter);
    winnerletter = llToLower(winnerletter);
 
            // OK SO LETS SEE THEN IF THIS MATCHES
             if(firstletter == winnerletter)
             {
                 llSay(0, "We Have a Winner!!!");
                 llUnSit(whositting);
 
                // to give a different inventory item type,
                // replace "INVENTORY_OBJECT" with "INVENTORY_NOTECARD", etc.
                 llGiveInventory(whositting,llGetInventoryName(INVENTORY_OBJECT, 0));
 
                 getnewletter();
             }
             // NOPE THEY LOSE!!
             else
             {
                 llSay(0, "Your first name doesn't begin with the letter "+winnerletter+ " it's "+firstletter);      
                 llUnSit(whositting);             
            }     
}
 
// SUB TO GET A NEW LETTER
getnewletter()
{
    // LETS SHUFFLE THE LIST AND GET A LETTER!
    list shuffled = llListRandomize(letters, 1);
    // NOW LETS SAY
    winnerletter = llList2String(shuffled, 0);
    llShout(0, "We are now looking for a lucky winner who's firstname starts with "+winnerletter);
    llSetText("Current letter is "+winnerletter, <1,1,1>, 1);
}
 
default
{
    state_entry()
    {
     // START BE GETTING A LETTER
     getnewletter();
 
     // THIS CONVERTS THE MINUITES INTO SECONDS WHICH IS WHAT LSL LIKES FOR TIMERS
     timerevent = (changeletter * 60);
 
     // START THE TIMER EVENT
     llSetTimerEvent(timerevent);
 
     // MAKE A SIT TARGET
     llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION);
 
    }
 
    timer()
    {
        // TIMER HAS RUN GET A NEW LETTER!!
        getnewletter();
    }
 
    changed(integer change)
    {
        if (change & CHANGED_INVENTORY)         
        {
            // YOU CHANGED THE SCRIPT OR SOMETHING IN HERE
            // RESET THE SCRIPT
            llResetScript();
        }
        if (change & CHANGED_LINK) 
        {
          key av = llAvatarOnSitTarget();
          if (av) { checkname(llAvatarOnSitTarget());}
        }
    }
}

First Name Letter Prize (Linden Version)

After being contacted by Zoom Blitz i changed this now so there is also a linden giving version

As with most scripts involving money i advise you get a few people you trust or a few alts to test this out

//    Lucky Chair Script for use in Second Life (LINDEN VERSION)
//    Copyright (C) 2009  RaithSphere Whybrow (Second Life Avatar Name)/Gavin Owen (Real Name)

//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.

//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.

//    You should have received a copy of the GNU General Public License
//    along with this program.  If not, see <http://www.gnu.org/licenses/>.

// CONFIG \\

// How Often do we change Letter?
// THIS IS IN MINUITES
// SO SIMPLE MATHS 
integer changeletter = 10;
integer timerevent;
string winnerletter;

// LINDEN 
integer lindens = 100;

// ENABLE DEBUG MODE 0 = NO & 1 = YES
integer debug = 0;

// LETS GET TEH ALPHABET!
list letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];

// DEBUG SHIT DON'T MESS WITH THIS
deBug(string dmsg)
{
    if(debug)
    llOwnerSay(dmsg);
}


// THIS IS THE CHECK NAME SUB
checkname(key whositting)
{
    // SAYS THE AVATARS KEY IN DEBUG MESSAGE
    deBug((string)whositting);
    // WE NEED TO KNOW WHO IS SITTING HERE A KEY IS USELESS!
    string whothat = llKey2Name(whositting);
    // SPLIT THER NAME UP 
    list name  = llParseString2List(whothat, [" "], []);
    // 0 is the First name change to 1 if you want to use LASTNAME
    string who = llList2String(name, 0);
    // Get the Length of the name
    integer length = llStringLength(who);
    // DELETE EVERYTHING AFTER LAST LETTER
    string firstletter= llDeleteSubString(who, 1, length);   

    // CONVERT IT ALL INTO LOWERCASE
    firstletter  = llToLower(firstletter);
    winnerletter = llToLower(winnerletter);
        
            // OK SO LETS SEE THEN IF THIS MATCHES
             if(firstletter == winnerletter)
             {
                 llSay(0, "Congratulations "+who+" you just won L$"+(string)lindens);
              
    
    
                 llUnSit(whositting);
                
                // OK THIS WILL GIVE CASH TO THE WINNER
                llGiveMoney(whositting, lindens);
                 getnewletter();
             }
             // NOPE THEY LOSE!!
             else
             {
                 llSay(0, "Your first name doesn't begin with the letter "+winnerletter+ " it's "+firstletter);      
                 llUnSit(whositting);             
            }     
}

// SUB TO GET A NEW LETTER
getnewletter()
{
    // LETS SHUFFLE THE LIST AND GET A LETTER!
    list shuffled = llListRandomize(letters, 1);
    // NOW LETS SAY
    winnerletter = llList2String(shuffled, 0);
    llShout(0, "We are now looking for a lucky winner who's firstname starts with "+winnerletter+" who will get L$"+(string)lindens);
}

default
{
    state_entry()
    {
     // OK LETS GET THE DEBIT PERMISSIONS
     llRequestPermissions(llGetOwner(), PERMISSION_DEBIT );   
    }
    
    timer()
    {
        // TIMER HAS RUN GET A NEW LETTER!!
        getnewletter();
    }
    
    changed(integer change)
    {
        if (change & CHANGED_INVENTORY)         
        {
            // YOU CHANGED THE SCRIPT OR SOMETHING IN HERE
            // RESET THE SCRIPT
            llResetScript();
        }
        if (change & CHANGED_LINK) 
        {
          key av = llAvatarOnSitTarget();
          if (av) { checkname(llAvatarOnSitTarget());}
        }
    }
    // OK CHECKING RUNTIME PERMISSIONS
    run_time_permissions (integer perm)
    {
        // OK WE GRANTED IT DEBIT RIGHTS
        if(perm & PERMISSION_DEBIT)
        {
           // START BE GETTING A LETTER
           getnewletter();
        
           // THIS CONVERTS THE MINUITES INTO SECONDS WHICH IS WHAT LSL LIKES FOR TIMERS
           timerevent = (changeletter * 60);
     
     // START THE TIMER EVENT
     llSetTimerEvent(timerevent);
     
     // MAKE A SIT TARGET
     llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); 
        }
    }
}