Voting

Category

real language

Bookmarking

Del.icio.us Digg Diigo DZone Earthlink Google Kick.ie
Windows Live LookLater Ma.gnolia Reddit Rojo StumbleUpon Technorati

Language LSL

(SecondLife Script Language)

Date:06/04/11
Author:Linden Lab
URL:https://marketplace.secondlife.com/stores/67237
Comments:0
Info:http://wiki.secondlife.com/wiki/LSL_Portal
Score: (2.33 in 3 votes)
//  Thorenbuilt - 99 Bottles of Beer
//  http://99-bottles-of-beer.net/
//  As counted in Thor's Tavern, Thorstein's Lair in 1045
//  
//  LSL is an event driven script language used in SecondLife
//  Because the song is sung in public chat, a regular loop would 
//  make it impossible to hold a normal conversation ("chatspam"). 
//  Instead, a timer event is used for the countdown.


//  Fill the shelves:
float   fTimer      = 30.0;
integer iBottles    = 0;
integer iMaxLoad    = 99;
integer iRunning    = FALSE;


//  Pass 'em around:
default
{
    //  This is where it all begins:
    state_entry()
    {
        iBottles = iMaxLoad;
        llSay(0, "Touch me to pass the bottles!");
    }

    //  Start or stop counting when object is clicked:
    touch_start(integer iNum)
    {
        iRunning = !iRunning;
        if (iRunning)
            llSetTimerEvent(fTimer);
        else
        {
            llSetTimerEvent(0.0);
            llSay(0, "They pulled the plug and stopped the count, " + 
                "holding the bottles of beer on the wall.");
        }
    }

    //  It's time to pass another bottle:
    timer()
    {
        string sBottles = " bottles ";
        if (iBottles > 0)
        {
            if (iBottles == 1) // down to the last bottle
                sBottles = " bottle ";
            llSay(0, (string)iBottles + sBottles + "of beer on the wall, " + 
                (string)iBottles + sBottles + "of beer.");
            iBottles--; // take one
            if (iBottles == 1) // only one left
                sBottles = " bottle ";
            if (iBottles > 0) // still more on the wall
                llSay(0, "Take one down and pass it around, " + 
                    (string)iBottles + sBottles + "of beer on the wall.");
            else // last one gone
                llSay(0, "Take one down and pass it around, " + 
                    "no more bottles of beer on the wall.");
        }
        else // go shopping:
        {
            llSay(0, "No more bottles of beer on the wall, " + 
                "no more bottles of beer.");
            iBottles = iMaxLoad; // fill the shelves
            llSay(0, "Go to the store and buy some more, " + 
                (string)iBottles + sBottles + "of beer on the wall.");
        }
    }
}

Download Source | Write Comment

Alternative Versions

Comments

Download Source | Write Comment

Add Comment

Please provide a value for the fields Name, Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.

Please don't post large portions of code here! Use the form to submit new examples or updates instead!

Name:

eMail:

URL:

Security Code:
  
Comment: