Second Life/Selfreplication: Unterschied zwischen den Versionen
K Die Seite wurde neu angelegt: // 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;... |
KKeine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
// The ttl variable is a counter, decreased for each subsequent replication, | // 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. | // the child that get rezzed with a ttl value of zero will not procreate. | ||
integer ttl = 3; | integer ttl = 3; | ||
rez_child() | rez_child() | ||
{ | { | ||
// Check if we're allowed to create any more offspring | // Check if we're allowed to create any more offspring | ||
if(ttl > 0) | if(ttl > 0) | ||
| Zeile 16: | Zeile 16: | ||
llRezObject("1000er", llGetPos()+<0,0,1>, <0,0,0>, <0,0,0,0>, ttl_child); | llRezObject("1000er", llGetPos()+<0,0,1>, <0,0,0>, <0,0,0,0>, ttl_child); | ||
} | } | ||
} | } | ||
default | default | ||
{ | { | ||
// If you touch me, we'll have babies! | // If you touch me, we'll have babies! | ||
touch_start(integer total_number) | touch_start(integer total_number) | ||
| Zeile 50: | Zeile 50: | ||
} | } | ||
} | } | ||
} | } | ||
Version vom 5. April 2007, 19:09 Uhr
// 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("1000er", 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();
}
}
}