Jump to content
Mollymews

animation troll breaker

Recommended Posts

i put this together as a quick response to a perennial problem with granting animation permissions to a script owned by another person, who then trolls us by not releasing our permissions from their script, enabling them to play animations on us at will

we can't revoke permissions granted to another person's script but we can control what animations do play on our avatar

this script helps us to mute (stop) animations we do not want to play on us

drop this script into a prim and wear it as a HUD. Touch to bring up a menu dialog

the dialog List button will dump to chat the uuids (keys) of the animations currently playing on us. From this we can determine which animations we suspect. Copy paste the suspect uuid into list 'suspects' and reset the script

when dialog Mute button is toggled ON then it will stop the suspect animations on a fast timer. When toggled OFF then the timer is stopped and any animations in the suspect list will not be stopped should they play

the purpose here is to frustrate our troll by breaking their animation control over our avatar. Breaking their trolling behaviour is even sweeter when they paid money to buy their troll script

list suspects =
[
   "uuid (key) of an animation we want to stop playing on us",
   "another uuid",
   "and another and so on"
   // "b1c1ef33-3914-d2fb-8c89-fbd346a48e07"  example
];

integer chan = -161616;  // change channel to whichever
integer hnd;
integer mute;

default
{
    state_entry()
    {
        hnd = llListen(chan, "", llGetOwner(), "");
        llListenControl(hnd, FALSE);
        llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
    }
    
    attach(key id)
    {
        if (id) llResetScript();
    }
    
    touch_start(integer total_number)
    {
        llListenControl(hnd, TRUE);
        llDialog(llGetOwner(), 
            "Mute is currently " + llList2String(["OFF", "ON"], mute) +
            "\nMute - toggle to mute (stop) suspect animations" +
            "\nList - dump uuids (keys) of playing animations to chat",
            ["Mute", "List"], chan); 
    } 
    
    listen(integer channel, string name, key id, string text)
    {
        llListenControl(hnd, FALSE);
        if (text == "Mute")
        {
            if (llGetListLength(suspects))
            {
                mute = !mute;   
                llSetTimerEvent(0.2 * (float)mute);
            }          
        }
        else if (text == "List")
        {
            llOwnerSay("*** Playing Animations ***");         
            list anims = llGetAnimationList(llGetOwner());
            integer len = llGetListLength(anims);
            integer i;
            for (i = 0; i < len; i++)
                llOwnerSay(llList2String(anims, i));
        }            
    }
            
    run_time_permissions(integer perms)
    {
        if (perms)
        {
            mute = llGetListLength(suspects) > 0;
            llSetTimerEvent(0.2 * (float)mute);                        
        }
    }

    timer()
    {
        list anims = llGetAnimationList(llGetOwner());
        integer len = llGetListLength(anims);
        integer i;
        for (i = 0; i < len; i++)
        {
            string anim = llList2String(anims, i);
            if (~llListFindList(suspects, [anim]))
                llStopAnimation((key)anim);
        }    
    }            
}

 

  • Like 7

Share this post


Link to post
Share on other sites

Thank you.  I am definitely going to take a look at this.  :)

Does not FS' "Stop animations and revoke permissions" work to accomplish the same goal though?

 

  • Like 1

Share this post


Link to post
Share on other sites
25 minutes ago, sandi Mexicola said:

Does not FS' "Stop animations and revoke permissions" work to accomplish the same goal though?

when the script is in a HUD that the troll is wearing then No

there are legit uses for HUDs that request this permission.  Dance huds, huggers,, etc. And people who do invite us on to these huds do release us. Most of the well scripted ones do release automatically when the agent being animated is: no longer on the region, requests to be removed (stopped), etc

the troll HUD script doesn't release the permission. Which means the troll can at anytime play any animation in the HUD on the agent on the region for which it has permission. No matter when previously that permission was given

a discussion from back in the day about this is here, and a bit about how FS does do revoke for a scripted object on the region

 

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Hey I just had the person who is abusing that on my avatar appear again and now tried using your script.  Unfortunately it doesn't prevent deformation animations so people have to use reset skeleton on me. If it possible to make it so it play an undeform animation right after like the old undeform scripts?

It's not ideal and doesn't always work from my experience but it would be better than this mess

 901b6f8f2b.png

Share this post


Link to post
Share on other sites
Posted (edited)
20 hours ago, sandi Mexicola said:

Does not FS' "Stop animations and revoke permissions" work to accomplish the same goal though?

The "revoke permissions" part doesn't work, at least as far as I've tested it. I think it's intended for objects you would sit on? (That part I haven't tested.)

For example, if my alt has an attachment that asks permission to animate me and I allow it... There's no way I can revoke permissions from that attachment. After selecting the option to stop & revoke, my alt can just restart the animation and it won't ask for permission. Edit:

20 minutes ago, sandi Mexicola said:

You're not running Firestorm by any chance?

Also, "reset skeleton" is a viewer-side thing. It won't reset your skeleton for other people.

Edited by Wulfie Reanimator
  • Thanks 1

Share this post


Link to post
Share on other sites
Posted (edited)
4 hours ago, sandi Mexicola said:

Thank you for the information!  I had no idea this was still a problem.  What does "revoke permissions" in FS do then, anything?

i am not much into viewer development so I don't exactly know how the FS team actually implemented this.  But what I do know/guess is that it has to do with implied permissions which are granted when we sit on an object

by Linden design, all viewers don't pop up the permissions dialog asking us to accept when we sit on an object.  Sitting on an object implies permission and the viewer automagically sends the accept message

when we stand, again by Linden design in the more recent Linden viewer releases, then any script permissions that were granted by implication (by sitting) are also revoked by implication (by standing)

my understanding is that FS surfaces this design factor as a user configurable viewer option (which the Linden  viewer doesn't)

to see what this script I posted is about, then log in an alt/friend who has a dance hud.  Then log in your ownself  on FS.  Have the alt/friend invite you on to their dance hud. Then in FS open the Animation Explorer. You will see that the your alt/friend dance animation, even tho is playing on your avatar, is not listed in the Animation Explorer and can't be muted/stopped

it maybe that a FS developer might read this one day and think hmmm! and add something like what this script does into the FS viewer itself. Basically an Animation Blacklist worked thru the FS LSL Bridge 

 

edit ps

i put this script here because a person asked again in Answers sub-form a few days ago, how they could stop this happening on their avatar, having been caught (social engineered) into having this happen to them

Edited by Mollymews

Share this post


Link to post
Share on other sites
Posted (edited)
6 hours ago, Icswcshadow said:

Hey I just had the person who is abusing that on my avatar appear again and now tried using your script.  Unfortunately it doesn't prevent deformation animations so people have to use reset skeleton on me. If it possible to make it so it play an undeform animation right after like the old undeform scripts?

to mod the script to play an undeformer animation then in the timer event where we stop the suspect animation add the extra lines below:

string anim = llList2String(anims, i);
if (~llListFindList(suspects, [anim]))
{
   llStopAnimation((key)anim);
   
   string undeformer = llGetInventoryName(INVENTORY_ANIMATION, 0);
   // undeformer is the animation, of our choice, in our HUD contents
   // that will restore our avatar to its normal state
   // whatever undeformed state that may be for our
   // particular avatar
   llStartAnimation(undeformer);
}


  edit add:  for completeness and efficiency. Because we know the name of our undeformer animation we don't need to call the llGetInventoryName() function. We can type our undeformer animation name directly into llStartAnimation()
  

   llStopAnimation((key)anim);
   llStartAnimation("the name of our undeformer animation");

 

 

Edited by Mollymews
oops typo
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

   I think it's so nice of the trolls to point out these system shortcomings as that may make LL able to do something about them, like actually allowing us an ability to revoke all permissions we have given, anywhere. Are there any old, dusty JIRAs having to do with this?

Share this post


Link to post
Share on other sites
3 minutes ago, Ivanova Shostakovich said:

   I think it's so nice of the trolls to point out these system shortcomings as that may make LL able to do something about them, like actually allowing us an ability to revoke all permissions we have given, anywhere. Are there any old, dusty JIRAs having to do with this?

If there was/is, it would almost definitely be turned down. Imagine a scenario where a script gains permission and is then moved to another sim from the avatar. The avatar then requests to revoke permissions from "any scripts." Now, the sim the avatar is on needs to process that request and pass it to all other sims/assets that may or may not be in-world, and revoke whatever permissions they have.

I can't imagine what LL would even begin to fix before that can be implemented.

  • Like 1

Share this post


Link to post
Share on other sites

Permission to affect an agent being stored with the script and not the agent is a SEVERE design flaw.  This was just as monumentally stupid as originally having inventory permission and grid access level checking done by the viewer instead of the service software.

  • Like 1

Share this post


Link to post
Share on other sites
On 1/11/2020 at 2:21 PM, Ardy Lay said:

Permission to affect an agent being stored with the script and not the agent is a SEVERE design flaw.  This was just as monumentally stupid as originally having inventory permission and grid access level checking done by the viewer instead of the service software.

In any other online service this would be fixed by changing that back to the agent no matter how much old content it impacted.

You do it, and then things just have to go get permissions again.

Better to take the hit once, than have an ongoing exploit problem.

Because SL is such an old MMO, it has this culture of 'don't break anything' - all the MMOs that came after it have learned that it's better to break broken things so you can put in fixes, take a short term smack in the face so you can actually stand up...

Edited by Pussycat Catnap

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...