|
metaissance Maladay
Registered User
Join date: 11 Mar 2006
Posts: 10
|
03-15-2006 00:54
I am an SL noob, but a decent coder and scripter - I have been reading through the scripting threads and tutorials and it doesn't seem like what I want to do is possible. I just wanted confirmation that this really isn't possible (or if some bright star has figured this out)
1)I would like to be able to control all of the functions on the UI tabs through scripting, many of them are not available in any ll function I have yet seen. Is there a more complete list of ll functions than the generally published one?
2)I would also like to be able to instantiate and link prims through scripts. Eggy's XML export code is the closest thing I have yet seen, but of course its output not input. I understand the danger of self-replicators or prims that create other prims to SL, but is there any way to take control of your Av via scripting to automate building? (i.e. script a self creating multi-prim object then drop it into a root prim and touch activate it)
|
|
Eloise Pasteur
Curious Individual
Join date: 14 Jul 2004
Posts: 1,952
|
03-15-2006 01:46
1) No. The section under llTakeControls() lists all the available controls that can be taken. At various times we've asked for a more complete keyboard map, but no joy so far.
2) Yes, I think from your description it's possible. It depends on precisely what you're trying to do, and it may not be pretty but it is possible. You're looking for llRezObject() in a touch event (usually touch_start) - that will let you rez objects (single prim or multi-prim) within 10m of the rezzing object (with some caveats about funny measurements etc.) and at various angles and rotations. You could also put a script in each base object (so you only rez a cube say) and, on rez tweak it through llSetPrimitiveParams() or similar to the desired shape. It's got nothing to do with taking control of your av's building functions though, it's a separate entity entirely.
There are also some caveats:
llRezObject hits a sim pretty hard - my partner and I were messing around with physical objects recently. She created by hand, me by script, but otherwise the objects were identical. The impact when my rezzer was running was much, much higher. It's almost certainly neater to build your object and put it in by hand, although I have seen scripts that run things and fabricate by script, rezzing whole objects is a single rez call after all.
If you rez separate objects they'll remain separate prims unless you either link by hand, or ask for link permissions. Link permissions will have to be asked for by individual prim, so a moderately complex build (say 50 prims) will require 50 clicks on a dialog box to say you grant permissions.
|
|
metaissance Maladay
Registered User
Join date: 11 Mar 2006
Posts: 10
|
03-15-2006 03:56
Thanks Eloise,
Sucks about the lack of full UI scripting support.
Yeah, this is going to be messy. I was hoping you could rez a prim that wasn't already pre-exisiting in your inventory, but looks like that is not possible. From what you said looks like I would have to have a base object containing the required number of prims, rez them, then use llSetPrimitiveParams to tweak them into shape, etc. Maybe I could just keep a default box that has bunch of boxes (i.e. box1, box2, etc) in its inventory for this purpose. The linking permissions manual click is a pain in the arse, but bearable (with a 1 second delay though- argh!).
Where I'm going with this is that it may be possible to build an offline 3D construction program, using an open source 3D editor, and then bring the designs in through a script that self constructs the object. Would just require good parameter matchup and conversion between the external editor and the llRezobject function. This should also allow object export through Eggy's XML script. This would get you the basic shape at least, tweaking textures would be another issue. Will do some more investigation soon.
|
|
Zepp Zaftig
Unregistered Abuser
Join date: 20 Mar 2005
Posts: 470
|
03-15-2006 06:13
When you rez something from an objects inventory, you just rez a copy so no need for more than one prim in the inventory of the object. There's one script that does something similar.
|
|
Eloise Pasteur
Curious Individual
Join date: 14 Jul 2004
Posts: 1,952
|
03-15-2006 07:08
Thanks Zepp, I was going to point out both of those too when I got the chance.
Remember if you're planning to sell this you need to set your prim that you're rezzing to at least copy, modify, and you might need to enable transfer too, I'm not 100% sure about that.
|
|
metaissance Maladay
Registered User
Join date: 11 Mar 2006
Posts: 10
|
03-15-2006 10:20
Thanks Zepp and Eloise, Just dropped Jeffrey a message on that thread - he has pretty much already gone in the direction I was thinking (Blender imports) but I wonder if he has gotten to nurbs yet. No plans on sales yet, just the pure joy of creation  If I can get around to a custom OpenGL based modeler than does transparent upload/download of objects, then we can talk sales meta PS I really wonder why LL is so resistant to releasing an offline modeler tool? Or even better, an Av styler/clothing editor/texture editor/land creation/3D modeler tool. Essentially "the Construct" ala the Matrix - a stripped down SL server. I don't buy their argument about security, its probably more about IP issues and profit models. Should be nearly trivial since the tools already exist - hopefully the promised open sourcing won't be toooo long in coming. Frustrating to see them sitting on the sweet tool they have created. Rant over.
|
|
Ben Bacon
Registered User
Join date: 14 Jul 2005
Posts: 809
|
03-16-2006 02:41
From: Eloise Pasteur If you rez separate objects they'll remain separate prims unless you either link by hand, or ask for link permissions. Link permissions will have to be asked for by individual prim, so a moderately complex build (say 50 prims) will require 50 clicks on a dialog box to say you grant permissions. I usually get around this by having my rezzor object (I call it a "seed"  request link permissions. Then it links each rezzed prim to itself as they are rezzed. Once all prims in the linkset are linked, the seed unlinks itself out of the object, and start builiding the next object (in the case of multi-object builds)
|
|
metaissance Maladay
Registered User
Join date: 11 Mar 2006
Posts: 10
|
03-16-2006 07:24
From: Ben Bacon I usually get around this by having my rezzor object (I call it a "seed"  request link permissions. Then it links each rezzed prim to itself as they are rezzed. Once all prims in the linkset are linked, the seed unlinks itself out of the object, and start builiding the next object (in the case of multi-object builds) Great work-around Ben. That helps enormously.
|