In my new game, I was trying to make a gun that would face your mouse cursor, but it keeps returning the error stated in the title despite mouse.Hit.Position being a Vector3. (Before anyone asks, Position and p are both valid.)
My serverside is
local Facing = script.Parent
local CenterBrick = game.Workspace:WaitForChild("MamiMusket").Centeral
Facing.OnServerEvent:Connect(function(mouseHit)
CenterBrick.CFrame = CFrame.new(CenterBrick.Position, mouseHit)
end)
and my clientside is
local LP = game.Players.LocalPlayer
local mouse = LP:GetMouse()
local remote = game.Workspace.MamiMusket.Center.Facing``
while wait() do
remote:FireServer(Vector3.new(mouse.Hit.Position))
end
My serverside script shares the parent with the remoteEvent while my clientside is parented to starterGui. I know that, that will be a terrible solution with multiple people but i am only currently trying to get the guns to function at all before I can improve upon their functionality.
Any help would be appreciated,
Thanks!
Edit: I do not need to hold the gun, I want it to orbit around me. Meaning that the problem cannot be solved by simply using my lookVector instead.

3 comments
You're trying to make the CenterBrick face a player object itself, that's your issue. Also you don't need to call tostring directly on roblox types; print does that for you and they have a __tostring metamethod that formats the properties. And don't call wait in the conditional part of a while loop. Instead, call it in the body of the loop and use true as condition instead for an infinite loop.
Oops, I gave the wrong client script.
The script from before was for troubleshooting purposes, my bad.