10-27-2005 16:36
With all this hubbub about self-replicating items I considered a possible solution:

An object which is rezzed by another object should have a little "child" number, this isn't like parent/child in a linked set but a little different.
Basically, when an object is manually placed by a user, it's "child" number is 0, indicating that it is actually the parent item. When this object rezzes another object, the number it is given is +1 (to give one, if it creates an object it will be 2 and so on).

Why do this? Basically as this number increases, so should the sleep time after rezzing another object, this can be done exponentially, so the sleep time goes up more quickly in proportion to the child number (e.g child 4 waits 16 seconds, child 5 waits 25, child 6 waits 36). It should be noted however, that the increasing sleep time would actually feed back up the chain, as the children slow down, so will the parents.
Also put a hard limit on the child number, if an object is child 16 for example then it's attempts to rez another item will automatically fail.
Finally add in that for every object rezzed on that sim a counter for the object's owner is raised by one, if this exceeds another hard-coded limit then all rez attempts by object's with the same owner will fail. The counter would go down whenever the llDie() command is performed to remove something, or it is removed automatically.

In all cases it should be made sure that these hard-coded limits are fairly generous so that Tringo games and so-on can still function correctly (though they don't self replicate so very few objects should be rezzed by them) and that the error messages are meaningful, e.g "Tringo Bling has rezzed too many objects in this sim, please clear any excess objects and try again".


----------


Now it's a few extra stats to keep track of, but it seems to me like it would quite nicely limit things so that self-replicating attacks don't work, without impacting on anything that I know of (which admittedly isn't everything so let me know if I've overlooked something!).

For example, if you create a vendor which vends itself when people click on it, but sells you something if you pay it money. In this way anyone can help spread your sales by taking a vendor and placing it somewhere.
Every vendor rezzed by the one you place will be child 1, however when the people place these vendors somewhere they will be child 0 (ie the root item) as it has been manually placed.
Probablly an utter crap example but it would hold true and hopefully similar things don't require vast amounts of self-replication to work.