Should ability animations be played on a LocalScript or through a ServerScript with FireClient()?

Quick question, I have a localscript that has like:
UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end

if input.UserInputType == Enum.UserInputType.MouseButton1 then
	local chain = chr:GetAttribute("M1chain")
	local success = moveHandler:InvokeServer("m1")
	if success then
		print("m1")
		if chain == 1 then
			slash1:Play(0,nil,1)
			task.delay(1.1, function()
				slash1:Stop(0.3)
			end)
		elseif chain == 2 then
			slash2:Play(0,nil,1)
			task.delay(1.1, function()
				slash2:Stop(0.3)
			end)
		elseif chain == 3 then
			slash3:Play(0,nil,1)
			task.delay(1.1, function()
				slash3:Stop(0.3)
			end)
		end
	end
end

I think this is the fastest and snappiest way to play animations, but I feel like the animations can be manipulated or changed by an exploiter. Is that true? Is it that easy?
Thats why I’m thinking of using FireClient() for animations, but what do you guys think? I need feedback

1 Like

You should play animations on the client. Explotiers can already manipulate any type of animation that’s currently playing on their character by setting speed values, stopping the track, playing it, or deleeting it and all of that. There is not much way to combat this but I don’t see why exploiters would want to mess with the animation track anyway, there’s not a way to get the speficic animation track either.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.