Second Life/Selfreplication: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
// 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()+<1.5,0,0>, <0,0,0>, llEuler2Rot(<0,90,0> * DEG_TO_RAD) , 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(); | |||
} | |||
} | |||
} |