Remote Function Not Working

My remote function isn’t working. I want the local script to fire a server event and the server script to print a message. I have used this in other creations and it worked.
When the program is run and “Q” is pressed it prints “Firing Event” but, the player(plr) from the Server script does not print. Everything is located inside of StarterPlayerScripts. Please tell me if there are anyways to fix this problem. Thanks for the help. :grinning:

This is the code in the Local Script

(Movement)

local UserInputService = game:GetService("UserInputService")

local Player = game.Players.LocalPlayer
local Character

Player.CharacterAdded:Connect(function()
	Character = Player.Character
end)

UserInputService.InputBegan:Connect(function(input, gameProcessedEvent)
	if input.KeyCode == Enum.KeyCode.Q and Character ~= nil then
		print("Firing Event")
		script.Parent.Event:FireServer(input)

	end
end)

This is the Code in the Server Script.

(Roll)

script.Parent.Event.OnServerEvent:Connect(function(plr, input)
	print(plr)
end)

Here is a screen shot of where everything is located.

If you don’t understand any parts of the code please ask. Thank you.

The server script does’nt run in the StarterPlayerScripts, i think you better place it in the ServerScriptService

Any server scripts should be placed in ServerScriptStorage especially if it involves remote functions and etc, any client related scripts should be in the Player bins.

Ok, Thank you. I’ll make sure to do that.

The Event should be placed in ReplicatedStorage, and the Roll script needs to be in ServerScriptService.

Thanks a lot. This worked great.