Would an exploiter be able to change an Anim ID in a local script and have it replicate to the server?

So I’m playing an animation on the using a local script and I am wondering if an exploiter would be able to change the animation ID to something else and if other players would be able to see it.

local Track = Instance.new("Animation")
Track.AnimationId = "rbxassetid://123456789" <-- Could an exploiter change this
local Anim = c.Humanoid:LoadAnimation(Track)
Anim:Play()
1 Like

No, Exploiters can’t access any scripts. They can only change things for themself either way.

I am pretty sure they can, I think he means if they can edit the animation id from a local script and replicate it to the server and exploiters can manipulate local scripts.

Yah, this is what I meant, I know exploiters can insert their own local scripts and such but I was wondering if they could change the Animation ID in a local script and have it replicate to other clients.

No exploiters can’t change the animation Id.

Animations don’t really replicate across the server as animations are client sided, they could change it if you were firing a remote event and had the animation Id as an argument. But no they won’t be able to change it or edit any scripts.

Player movement is replicated, which includes animations. This is why you’re able to load an animation onto a humanoid from a local script and can expect other players to see it without setting up any remote’s. So… yes, an exploiter could insert, load, and play an animation onto their own humanoid and other players will see it.

1 Like

Wdym animations are replicated from client to server with no remote event needed.

Roblox handles the animation syncing between client and server for you, thats why commands such as /e dance work IIRC

1 Like

It seems like you don’t know much about animations, please read this:

Should I load an Animation on the client or server?

In order for AnimationTracks to replicate correctly, it’s important to know when they should be loaded on the client (via a LocalScript ) or on the server (via a Script ).

If an Animator is a descendant of a Humanoid or AnimationController in a Player’s Character then animations started on that Player’s client will be replicated to the server and other clients.

If the Animator is not a descendant of a player character, its animations must be loaded and started on the server to replicate.

The Animator object must be initially created on the server and replicated to clients for animation replication to work at all. If an Animator is created locally, then AnimationTracks loaded with that Animator will not replicate.

Both Humanoid:LoadAnimation and AnimationController:LoadAnimation will create an Animator if one does not already exist. When calling LoadAnimation from LocalScripts you need to be careful to wait for the Animator to replicate from the server before calling LoadAnimation if you want character animations to replicate. You can do this with WaitForChild(“Animator”).

As for the OP (@Schkr1) I think so. If this was the case, exploiters can just play a random animation. But what countermeasure? They can only play the Animation if it’s owned by the owner of the game.

This is pretty useless for exploiters if they can only play certain animations. As for the icing on the cake, or another countermeasure, you can get all the animations played on the Humanoid. (Example: check if they are holding a certain tool which has that animation)

6 Likes

I mean what I said. You can test it in studio yourself by starting up a test server. You only have to load and play an animation from a local script and the movement will automatically be replicated.

This is also why exploiters can teleport themselves or increase WalkSpeed. Technically the WalkSpeed property itself isn’t being replicated - your player movement is.

Sorry it sounding like you were saying that you could only load animations oto the humanoid on the server.

Depends where you’re making this. If you’re making it in a function then sure, they can access constants and the stack to change different values, however if this was in no way related in ANY WAY (no events, no global functions, nothing) to the global environment of the local script, then no, they would not be able to. But do note they’re able to change how roblox global functions behave, so theoretically if they change the Instance.new function to look for when animations are being made and determine they’re from THAT local script, then yes, they could change it.