|Description||It would be very useful if Opensim had a command that would allow replacing the UUID of assets in primitive inventories, for all objects on the region or in a given area of the region.|
Example: If there are 10 objects containing a sound that has the UID 1234000, and the owner wanted to replace that sound with a new one which has the UID 4321000, in an area ranging between 128 and 192 on all axes, he would use a command of the form: replace-inventory-uid 1234000 4321000 128,128,128 192,192,192.
|Additional Information||A practical example is why I need this feature: I'm creating a large residential building on my region, with 48 apartments and hundreds of overall rooms. Each apartment contains many scripted doors, lights, switches, window covers, etc. But all objects of each type use the same script, and there are about 5 scripts in total.|
Occasionally, I decide to change some things in this universal script, or find a better sound to replace an existing one with. In order to do this, I'd have to find and select nearly a thousand objects, delete the old item, and drag in the new one. I already did this several times on a few hundred prims of one type, and it took +30 minutes of constant annoying work. Eventually I found a Sqlite command that let me replace the UUID's in the region database while Opensim was down, which is the workaround I'm currently sticking with. This is an example what I had to use under sqlite3 to update my script on all lamps:
UPDATE primitems SET assetID=REPLACE(assetID, 'd266677d-5976-4cff-a693-59379de4658b', 'f829a413-311a-467b-9838-dd9a8d651543');
A command to replace an UID in all object inventories would make this very easy. If there's something I want to modify in the light script for instance, I take a copy from one lamp, do the changes I need, save the new script, get its UID as well as the old script's, then run the replace command in Opensim console. All lights in the apartment building then have the change applied to them.