Zum Inhalt springen

Second Life/Selfreplication: Unterschied zwischen den Versionen

Ninnghizidha (Diskussion | Beiträge)
KKeine Bearbeitungszusammenfassung
Ninnghizidha (Diskussion | Beiträge)
Keine 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;
== code ==






rez_child()
integer ttl = 3;
{
 
  // Check if we're allowed to create any more offspring
 
 
rez_child()
{
   if(ttl > 0)
   if(ttl > 0)
   {
   {
      // Offspring ttl should be one closer to zero
       integer ttl_child = ttl - 1;
       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);
       llRezObject("1000er", llGetPos()+<1.5,0,0>, <0,0,0>, llEuler2Rot(<0,90,0> * DEG_TO_RAD) , ttl_child);
   }
   }
}
}




default
default
{
{
  // If you touch me, we'll have babies!
 
   touch_start(integer total_number)
   touch_start(integer total_number)
   {
   {
Zeile 28: Zeile 27:




  // llRezObject throws event object_rez on the parent with the offspring as parameter 
   object_rez(key child)  
   object_rez(key child)  
   {  
   {  
      // Give copy of child to child
       llGiveInventory(child, llKey2Name(child));  
       llGiveInventory(child, llKey2Name(child));  
   }  
   }  
 
 
 
  // When rezzed, the event on_rez is called on me as the child
   on_rez(integer ttl_in)
   on_rez(integer ttl_in)
   {
   {
      // Save child (this one) ttl;
       ttl = ttl_in;
       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)
   changed(integer change)
   {
   {
Zeile 54: Zeile 46:
       }
       }
   }
   }
}
}