Archive

Archive for October, 2009

Random: Renaming “no modify” items

October 22nd, 2009 Kitty Comments off

*waves*

While poking at the inventory code this morning I found a work-around for renaming “no modify” inventory items.

Aside from being a godsend for inventory organization it would make #RLV folders a whole lot easier to explain, create and maintain (no more having to create separate folders for “no modify” items).

Since it’s technically a bug (the sim/inventory server should be checking that the item is “modify” to match the current viewer behaviour) I’m not going to even consider using it; but it does mean that since LL has to fix one or the other anyway it might be possible to nudge them to “fix” the current default behaviour (which doesn’t allow renaming of “no modify” inventory items) for the better.

https://jira.secondlife.com/browse/SVC-3675 <- vote, vote! :)… Or if you agree with the current behaviour you can voice that

Categories: Uncategorized Tags:

Proposal: @getattachnames

October 20th, 2009 Kitty 3 comments

There’s been some buzz about the extra attachment points that are now included in Emerald by default, particularly in how they relate to “force stripping”.

Personally I don’t think they’ll ever get all that much use since they’ll look wrong/silly to everyone who isn’t using Emerald and as soon as people figure that out the appeal of them drops significantly.

Whether or not people will end up using them doesn’t really matter though: at some point or another LL might officially add more attachment points (or clothing layers for that matter) and all the same problems will crop up then anyway so it would be better to try and figure out a way in which scripts can make themselves more “future-proof” now.

After peeking at several “force strip” dialogs most seem to fall into three categories:

  • A list of all worn attachment point names spread across different dialogs
  • A list of all worn attachment point names divided into categories
  • A list of custom grouped attachment points (i.e. clicking “shoes” will force-detach l/r upper leg, l/r lower leg and l/r foot)

So a hypothetical @getattachnames[:<option>] would return a comma-separated list of attachment point names:

  • Without  an option it would return all worn  attachment point names
  • <option> could specify one of the pre-defined body areas (head, torso, arms, legs  and HUD) and return all worn attachment point names on that area
  • <option> could specify the joint name and return all worn attachment point names on that joint

(the “body areas” weren’t really chosen arbitrarily; they’re the same ones you see in the “Attach To” pie menu when you right-click on a rezzed linkset)

(<joint name> wouldn’t be particularly accurate in some cases – “r upper leg” is attached to the “mHipRight” joint along with “right hip” for instance – so it may or may not be a good idea to add that)

Practical example:

  • @getattachnames=1
    Skull,Left Foot,Right Foot,Spine,Left Ear,Right Ear,R Forearm,L Forearm,R Lower Leg,L Lower Leg,Top,Top Left,Center,Bottom Left,Bottom,Bottom Right
  • @getattachnames:head=1
    Skull,Left Ear,Right Ear
  • @getattachnames:torso=1
    Spine
  • @getattachnames:arms=1
    R Forearm,L Forearm
  • @getattachnames:legs=1
    Left Foot,Right Foot,R Lower Leg,L Lower Leg
  • @getattachnames:hud=1
    Top,Top Left,Center,Bottom Left,Bottom,Bottom Right

Additionally @getattachnameswearable and @getattachnamesremovable could be added:

  • @getattachnames returns the list of attachment point names that are worn
  • @getattachnameswearable returns the list of attachment point names that can be attached to (which is any attachment point that doesn’t have a @remattach=n locked attachment *and* isn’t @addattach=n locked)
  • @getattachnamesremovable returns the list of attachment point names that can be removed by the issuing prim (which is any worn attachment point that isn’t @remattach=n locked)

The reasoning for @getattachnamesremovable: it’s more intuitive for a “force strip” dialog to only show attachment points that can actually be force-detached by the script.

Practical examples (same as above – l/r forearm and l/r lower leg are @detach=n locked; Top and Bottom Right are “nostrip”):

  • @getattachnamesremovable=1
    Skull,Left Foot,Right Foot,Spine,Left Ear,Right Ear,Top Left,Center,Bottom Left,Bottom
  • @getattachnamesremovable:head=1
    Skull,Left Ear,Right Ear

Finally: there’s the question of whether the script should be responsible for clearing its attachment locks or whether the viewer should just ignore them (the latter is how “Hide Locked Attachments” works).

Example:

  • Collar executes: @detach=n,remattach=n
  • Collar executes: @getattachnamesremovable=1
    <empty response> since there isn’t a single attachment point that can be @detach[:<attachpt>]=force’d and actually end up detached
  • What the collar should have done was:
    @remattach=y, getattachnamesremovable=1,remattach=n
  • And then later on:
    @remattach=y, remattach:pelvis=force,remattach=n

It would be easy for the viewer to ignore any @detach[:<attachpt>] and @add/remattach[:<attachpt>] locks though which means it could just go:

  • Collar executes: @detach=n,remattach=n
  • Collar executes: @getattachnamesremovable=1
    <full list of attachment points that be force-detached by the collar>
  • Collar executes: @remattach=y, remattach:pelvis=force,remattach=n

The collar script still needs to know that it should release its @remattach restriction when actually force-detaching but it’s a step in the right direction.

(Personally I think it would make the most sense for @remattach[:<attachpt>]=force to just only check *other* prims’ attachment locks which would mean that @remattach=n,remattach:pelvis=force would “just work” – on the condition that no other prim has “pelvis” locked obviously. It would certainly save scripts a whole lot of hassle)

In closing: this is a *proposal* rather than an announcement. Yes the code has already been written, but simply because it’s a lot easier for me to propose something when I know it’ll actually work :) .

Even if LL decides to block non-standard attachment points with the next rolling restart there will still come a time when we either get new attachment points and/or get multiple attachments per attachment point index so it’s probably best to figure out a solution everyone is – relatively – happy with.

Even if we never get new attachment points it would relieve scripts from having to translate @getattach into a list of attachment point names (less code and no hard coded look-up list should free up some script memory)

Additionally the entire post can be done over for clothing layers: LL supposedly was/is working on extra tattoo layers so when/if we get those all existing scripts that rely on @getoutfit and their hard-coded list of layer names won’t be able to deal with those new layers without an update.

Additional thoughts:

  • I personally prefer @getattachnames[:[<option>;][wearable|removable]=<channel> over three separate commands (basically making the suffix an additional and optional parameter)
  • It might be preferable to fold attachment points together (i.e. Chest and Chest (2) and Chest 2 would all simply report as “Chest” one single time)
Categories: Uncategorized Tags:

Release: RLVa-1.0.5

October 15th, 2009 Kitty 2 comments

I should be in bed already so this is going to be short :) .

Most notable changes:

  • added @add/remattach, @viewscript and @viewtexture (RLV-1.22)
  • @detach:<attachpt>=n and @addattach[:<attachpt>]=n no longer run the risk of detaching attachments on relog which is a much needed fix
  • non-scripted attachments will now reattach properly when accidentally detached (technically it’s any attachment which didn’t change while attached and hence won’t cause a new asset to be created when detached)
  • added a convenience feature for “Enable Wear” combined with @addattach: if a “Wear” ends up detaching something on an “addattach locked” attachment point then the old attachment will reattach itself (this is needed since you wouldn’t be able to wear again yourself)
  • “Enable Wear” will disable itself when you’re @addattach=n restricted since in that case there isn’t any attachment point that you could wear something on
  • reenabled “Copy and Wear” (should have happened in 0.2.2 but I forgot): as with “Add to/Replace Outfit” it’ll work regardless of “Enable Wear” but of course if “Enable Wear” is disabled then it’ll only actually do something if the attachments inside of the object are named properly
  • changed “A/This/That human being” to “A/This/That being” (some people felt the former was ill suited for non-human avies)
  • “Hide locked attachments” was changed to report from the issuing object’s point of view rather than a global view (see example in release notes)

Code downloads:
RLVa-1.0.5e_20091014_SL-1.23.4-full.patch – SL-1.23.4
RLVa-1.0.5e_20091014_SL-1.22.11-full.patch – SL-1.22.11
RLVa-1.0.5e_20091014_Snowglobe-1.1.2-full.patch – Snowglobe-1.1.2

RLVa-1.0.5e_20091014_SL-1.23.4-diff.patch – From 1.0.4e to 1.0.5e (SL-1.23.4)
RLVa-1.0.5e_20091014_SL-1.22.11-diff.patch – From 1.0.4e to 1.0.5e (SL-1.22.11)
RLVa-1.0.5e_20091014_Snowglobe-1.1.2-diff.patch – From 1.0.4e to 1.0.5e (Snowglobe-1.1.2)

Release notes:
release_notes_RLVa-1.0.5.txt

Categories: Uncategorized Tags:

Release: RLVa-1.0.4

October 10th, 2009 Kitty Comments off

*waves*

This isn’t as polished as I would like it to be but since Emerald and Imprudence will be doing a new release “very soon” it seemed more important to push this out now rather than hold out.

The primary change is adding the new RLV-1.21 commands (@permissive, the @XXX_sec ones, @versionnum and @defaultwear).

“Enable Wear” remains a user setting (although it is turned on by default now), except when you’re @defaultwear=n restricted obviously in which case the “Enable Wear” option will be grayed out to indicate that it’s being overridden.

One (undocumented) change in RLV-1.21 is that restrictions will be carried over in case of a reattach-on-detach (i.e. if an attachment issues @detach=n,fartouch=n, becomes detached and gets reattached then it will still have @detach=n,fartouch=n set).

I didn’t add this in RLVa though for a number of reasons: every RLV script will already be reinforcing its restrictions in its on_rez()/attach() events to handle relogs so I can’t really see any good reason for it (feel free to poke me if I’m missing something though :) ). Additionally, scripts that explicitly don’t reinforce their restrictions on attach (because they penalize or automatically unlock on detach for instance) will not be expecting anything but a clean slate in their on_rez()/attach() events so they wouldn’t think to issue @clear on attach and in those cases the user is forced to relog to get rid of stray permissions.

(Sowwies if the above sounds disjointed but I’m sick at the moment :( )

Code downloads:
RLVa-1.0.4e_20091010_SL-1.23.4-full.patch – SL-1.23.4
RLVa-1.0.4e_20091010_SL-1.22.11-full.patch – SL-1.22.11
RLVa-1.0.4e_20091010_Snowglobe-1.1.2-full.patch – Snowglobe-1.1.2

RLVa-1.0.4e_20091010_SL-1.23.4-diff.patch– From 1.0.3e to 1.0.4e (SL-1.23.4)
RLVa-1.0.4e_20091010_SL-1.22.11-diff.patch– From 1.0.3e to 1.0.4e (SL-1.22.11)
RLVa-1.0.4e_20091010_Snowglobe-1.1.2-diff.patch – From 1.0.3e to 1.0.4e (Snowglobe-1.1.2)

Release notes:
release_notes_RLVa-1.0.4.txt

Categories: Uncategorized Tags:

Release: RLVa-1.0.3

October 10th, 2009 Kitty Comments off

*waves*

This one has been gathering dust for a while now but I never did seem to get around to releasing it. Bad Kitty, I know :( .

Code downloads:
RLVa-1.0.3e_20091003_SL-1.23.4-full.patch – SL-1.23.4
RLVa-1.0.3e_20091003_SL-1.22.11-full.patch – SL-1.22.11
RLVa-1.0.3e_20091003_Snowglobe-1.1.2-full.patch – Snowglobe-1.1.2

RLVa-1.0.3e_20091003_SL-1.23.4-diff.patch – From 1.0.2c to 1.0.3e (SL-1.23.4)
RLVa-1.0.3e_20091003_SL-1.22.11-diff.patch – From 1.0.2c to 1.0.3e (SL-1.22.11)
RLVa-1.0.3e_20091003_Snowglobe-1.1.2-diff.patch – From 1.0.2c to 1.0.3e (Snowglobe-1.1.2)

Release notes:
release_notes_RLVa-1.0.3.txt

Categories: Uncategorized Tags: