Jump to content

animation troll breaker


Mollymews
 Share

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 8
Link to comment
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
Link to comment
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

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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 2
  • Thanks 1
Link to comment
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
Link to comment
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
Link to comment
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
Link to comment
Share on other sites

  • 2 years later...

I am trying to find something I can let my client when I am afk sit me to on undeform my av as sometimes moving me from a piece of furniture to another seems to make the anims get stuck, especially my face. I cannot seem to find an object like that and do not know how to script :( closest I found was an object that does it, but then it disappears after it runs which won't work. I need to keep the object there and set it as a sit target for my sintec force me to sit hud so it can be activated if I am afk. Anyone know of something like this or a way to do it???

Link to comment
Share on other sites

15 hours ago, Alana Eberhardt said:

I am trying to find something I can let my client when I am afk sit me to on undeform my av as sometimes moving me from a piece of furniture to another seems to make the anims get stuck, especially my face. I cannot seem to find an object like that and do not know how to script :( closest I found was an object that does it, but then it disappears after it runs which won't work. I need to keep the object there and set it as a sit target for my sintec force me to sit hud so it can be activated if I am afk. Anyone know of something like this or a way to do it???

is possible to script up what you asking for here

this said, as I don't know anyone who has done this then would be best to post the ask in Wanted forum as you will have a better chance of getting a response from somebody who may be interested in doing it for you. Or post in Inworld Employment if you got money to spend on it

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...