Hi, I'm not exactly sure how to transfer parameters from the client to the server via Remote Events. I'm trying to create a laser gun and I pretty much followed the guide on the Roblox Dev website, but instead of using a Local Script I tried to use Remote Events. Here's what I have.

LocalScript:

local tool = script.Parent
local handle = tool:WaitForChild("Handle")
local RS = game:GetService("ReplicatedStorage")
local FlameEvent = RS:WaitForChild("FlameThrowEvent")

local player = game.Players.LocalPlayer
local Mouse = player:GetMouse()
local handlepos = handle.CFrame.p
local mousepos = Mouse.hit.p

local debounce = false


tool.Activated:connect(function()
	if debounce == false then
		debounce = true
		
		FlameEvent:FireServer(handlepos, mousepos)
		
		wait(2)
		debounce = false
	end
end)

Server Script:

local RS = game:GetService("ReplicatedStorage")
local FireEvent = RS:WaitForChild("FlameThrowEvent")

local DebrisFolder = Instance.new("Folder")
DebrisFolder.Parent = game.Workspace

function FireBlaze(player, start, finish)
	local ray = Ray.new(start, (finish - start).unit * 300)
	local part, position = workspace:FindPartOnRay(ray, player.Character, false, true)
	
	local flame = Instance.new("Part")
	flame.Transparency = 0.5
	flame.Anchored = true
	flame.CanCollide = false
	flame.Locked = true
	
	
	local distance = (start - position).magnitude
	flame.Size = Vector3.new(4, 4, distance)
	flame.CFrame = CFrame.new(start, position) * CFrame.new(0, 0, -distance/2)
	
	flame.Parent = game.Workspace
	game:GetService("Debris"):AddItem(flame, .5)

	
end

FireEvent.OnServerEvent:connect(function(player, handlepos, mousepos)
		FireBlaze(player, handlepos, mousepos)
end)

I don't get any errors, but it doesn't work as it's supposed to since the part just spawns at a random point on the map. Did I use the parameters wrong here, or is it something else?