Down here is my localscript. If I were to run this script in local script, it would print out 'instance'
player = game.Players.LocalPlayer
character = player.Character
mouse = player:GetMouse()
team = player.Team
hit = mouse.Hit
print(mouse)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local hitre = ReplicatedStorage:WaitForChild("hitre")
hitre:FireServer(mouse.Hit, team, player:GetMouse())
Down here is the (compromised) serverscript. If I were to run this, it would print out 'nil'
ReplicatedStorage = game:GetService("ReplicatedStorage")
UserInputService = game:GetService("UserInputService")
hitre = Instance.new("RemoteEvent",game.ReplicatedStorage)
hitre.Name = "hitre"
hitre.OnServerEvent:connect(function(player, hit, team, mouse)
print(mouse)
end)
Why is that?

4 comments
Do you perhaps know a different way?
Well, what is the reason taht you need to use the mouse in a server script?
I need mouse.Hit's position to make an NPC move to a point where the player clicks on. But I can't request scripts so I'll figure out myself.
well you can do all of that in a local script. Then when you have the position you want the NPC to move to you send it to a server script