Don't click here unless you want to be banned.

LSL Wiki : ExampleSelfReplication

HomePage :: PageIndex :: RecentChanges :: RecentlyCommented :: UserSettings :: You are crawl338.us.archive.org
This is an very basic self-replicating script. It has a 'Time To Live' (ttl) counter, which ensures that the object won't keep replicating.

This example shows uses of the llGiveInventory and llRezObject functions as well as the object_rez, on_rez and changed events.

Please note that a ttl mechanism is nowhere near enough for a 'real' script!

See the page on self replication for more info about fail-safing and an assortment of amusing moral stories.

Basic steps

- Create a prim, call it 'rezTest'
- Add this script to it
- Take a copy and put in into the inventory of the first object
- Touch the first object

// The ttl variable is a counter, decreased for each subsequent replication,
// the child that get rezzed with a ttl value of zero will not procreate.

integer ttl = 3;


rez_child()
{
    // Check if we're allowed to create any more offspring
    if(ttl > 0)
    {
        // Offspring ttl should be one closer to zero
        integer ttl_child = ttl - 1;

        // Rez child one meter above me
        llRezObject("rezTest", llGetPos()+<0.,0.,1.>, <0.,0.,0.>, <0.,0.,0.,0.>, ttl_child);
    }
}

default
{
    // If you touch me, we'll have babies!
    touch_start(integer total_number)
    {
        rez_child();
    }
 
    // llRezObject throws event object_rez on the parent with the offspring as parameter   
    object_rez(key child) 
    { 
        // Give copy of child to child
        llGiveInventory(child, llKey2Name(child)); 
    } 
    
    // When rezzed, the event on_rez is called on me as the child
    on_rez(integer ttl_in)
    {
        // Save child (this one) ttl;
        ttl = ttl_in;
    }

    // Because of the script-delay we have to connect the grand-child rezzing 
    // to the 'changed' event, which happens when someone (the parent) has
    // given me (as the child) something (a copy of myself)
    changed(integer change)
    {
        if(change == CHANGED_INVENTORY)
        {
            rez_child();        
        }
    }
}


Here is an easier to understand example...

default
{
touch_start ( integer NUMBER )
{
llRezObject ( "Object", < 0., 0., 1. >, ZERO_VECTOR, ZERO_ROTATION, 0 );
}

object_rez ( key ITEM )
{
llGiveInventory ( ITEM, llKey2Name ( ITEM ) );
}
}

Hope it helps clear this up ...Moira Willenov.

Jasa SEO Jasa SEO Murah Sepatu Online Toko Sepatu Online Sepatu Sepatu Murah Sepatu Safety Sepatu Futsal Cheapes Hostgator Coupon Link Booking Televisori offerte Notebook Offerte Berita Terkini Internet Marketer Muda Internet Marketer Indonesia Portatile Apple RDAnet Lorks Karikatur Bisnis Modal Kecil Bisnis UKM Berita Terbaru Iklan Baris Jasa SEO Jasa SEO Murah SEO Indonesia Konsultan SEO SEO Belajar SEO Kursus SEO Kursus SEO Murah Jam Tangan Casio Jam Tangan Casio Jam Tangan Murah Jam Tangan Grosir Baju Terbaru Grosir Baju Baju Terbaru Grosir Baju Murah Bisnis Online Belajar SEO Kerupuk Kerupuk kulit Social Bookmark Dofollow Social Bookmark Kumpulan Puisi Kirim Puisi bola hantu Penumbuh Rambut Penumbuh Rambut timbangan WBC Wonogiri Jasa SEO Murah Jasa SEO Jam Tangan Murah
There are 5 comments on this page. [Display comments/form]