Loca script vs Script in morphs

My game has morphs and I want the animations/emotes to be specific to each morph. I made this local script and placed it inside the morph and then realized it only plays the sounds/animations locally for each user. I want them to play the sounds and animations for everyone to see. I switched this script to a regular script and it wont play.

Anyone know why this only works as a local script?

local UIS = game:GetService("UserInputService")
local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")
local Animation = Humanoid:LoadAnimation(script:WaitForChild("taunt"))
local Animation2 = Humanoid:LoadAnimation(script:WaitForChild("laugh"))
local Animation3 = Humanoid:LoadAnimation(script:WaitForChild("wave"))
local Debounce = false
local Sound = script.Parent.Head.Yell
local Sound2 = script.Parent.Head.Laugh
local Sound3 = script.Parent.Head.Hello

UIS.InputBegan:Connect(function(key, gp)
	if not Debounce and not gp then

		if key.KeyCode == Enum.KeyCode.Q then
			Debounce = true
			Animation:Play()
			Sound:Play()
			
			task.wait(3)
			Debounce = false
			
		elseif key.KeyCode == Enum.KeyCode.R then
			Debounce = true
			Animation2:Play()
			Sound2:Play()
			
			task.wait(3)
			Debounce = false
			
		elseif key.KeyCode == Enum.KeyCode.H then
			Debounce = true
			Animation3:Play()
			Sound3:Play()
			
			task.wait(3)
			Debounce = false
		end		
	end		
end)

UserInputService is only available in local scripts.

Is there a way to get this result using something else?

Use Remote Events to transfer data from client side to server side

ok cool. lol It took me so long to learn this local script using userinput. My head exploded reading the remote event.

Local scripts only work for the client (Local player) and a normal script works for the server for example if I use a local script to open a GUI it will only open for the client and if I made a normal script to open a GUI it will open for everyone in the server