LSL tests: recursive function

It’s good practice to make code easy to maintain, so sometimes you’ll want to use less code using recursive functions. In order to find out how to this works in Second Life I created this small recusive example:

integer i = 0;
integer top = 0;
integer Monkeys()
{
    llOwnerSay("monkeys");
    i++;
    if (i <= top)
        return Monkeys();
    else
        return i;
}
default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }
    touch_start(integer total_number)
    {
        i = 0;
        top = Monkeys();
        llOwnerSay((string)top);
    }
}

This script says monkeys an increasing amount of times every time you touch it by calling itself if and keeping track of the total amount of times the function is called. First time there will be 1 monkey, next time 2 monkeys etc. Find more products at our shop in Badmoon.

June 18, 2008 at 2:34 PM in Uncategorised

LSL tests: walking states

I had to create a simple script to turn a neon sign on and off. I decided to have both versions of the sign in a single texture and changing the offset with a script. Instead of using a timer and using llSetTimeout() instead I opted to pause the script for a small amount of time. The script does not respond when it’s sleeping which should be less laggy then the timeout. All i do then at the start of a state is offsetting the texture to show the on/off alternatively.

default
{
    state_entry()
    {
        llOffsetTexture(0.0,0.25,ALL_SIDES);
        llSleep(1.37);
        state off;
    }
}

state off
{
    state_entry()
    {
        llOffsetTexture(0.0,0.75,ALL_SIDES);
        llSleep(.723);
        state default;
    }
}

Hope this is of use to you. See the result in our Higher / Lower game at Badmoon.

June 17, 2008 at 2:00 PM in Uncategorised