Obviously, I can't access the camera inside the serverScript…. does anyone know a way to pass the information on through a RemoteEvent.. I am very new to these remote events. Basically, I am trying to make this code work inside a serverScript:
local ignoreList =
{}
table.insert(ignoreList, player.Character)
local Debris = game:GetService("Debris")
local ray = camera:ScreenPointToRay(mouse.X, mouse.y, 1)
local startPoint = Instance.new("Part", workspace)
startPoint.Size = Vector3.new(1,1,1)
startPoint.CFrame = CFrame.new(ray.Origin, ray.Origin + ray.Direction)
startPoint.Anchored = true
startPoint.CanCollide = false
startPoint.Transparency = 1
startPoint.Name = ("bulletPart")
Debris:AddItem(startPoint, .05)
local endPointRay = camera:ScreenPointToRay(mouse.X, mouse.y, 300)
local endPoint = Instance.new("Part", workspace)
endPoint.Size = Vector3.new(1,1,1)
endPoint.CFrame = CFrame.new(endPointRay.Origin, endPointRay.Origin + endPointRay.Direction)
endPoint.Anchored = true
endPoint.CanCollide = false
endPoint.Transparency = 1
endPoint.Name = ("bulletPart")
local startBeamRay = Ray.new(startPoint.CFrame.p, (endPoint.CFrame.p - startPoint.CFrame.p).unit * 50)
local hit, pos = workspace:FindPartOnRayWithIgnoreList(startBeamRay, ignoreList, false, true)
local dist = (startPoint.Position - pos).magnitude
local beam = Instance.new("Part", workspace)
beam.Anchored = true
beam.CanCollide = false
beam.Transparency = 1
beam.BrickColor = BrickColor.new("Cool yellow")
beam.Size = Vector3.new(.2,.2,dist)
beam.CFrame = CFrame.new(startPoint.CFrame.p, pos) * CFrame.new(0,0, -dist / 2)
beam.Name = ("bulletPart")
local oldPos = pos
if hit then
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if not humanoid then
humanoid = hit.Parent.Parent:FindFirstChild("Humanoid")
end
if humanoid then
humanoid:TakeDamage(30)
end
end
Debris:AddItem(beam, .08)
if hit == nil then
repeat
local newBeamRay = Ray.new(oldPos, (endPoint.CFrame.p - oldPos).unit * 20)
local hit, pos = workspace:FindPartOnRayWithIgnoreList(newBeamRay, ignoreList, false, true)
local dist = (oldPos - pos).magnitude
local Newbeam = Instance.new("Part", workspace)
Newbeam.Anchored = true
Newbeam.CanCollide = false
Newbeam.Transparency = .25
Newbeam.BrickColor = BrickColor.new("Cool yellow")
Newbeam.Size = Vector3.new(.2,.2,dist)
Newbeam.CFrame = CFrame.new(oldPos, pos) * CFrame.new(0,0, -dist / 2)
Newbeam.Name = ("bulletPart")
oldPos = pos
if hit then
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if not humanoid then
humanoid = hit.Parent.Parent:FindFirstChild("Humanoid")
end
if humanoid then
humanoid:TakeDamage(30)
end
end
Debris:AddItem(Newbeam, .02)
wait(.03)
until
hit ~= nil
Debris:AddItem(endPoint, .05)
end
I need that to happen inside a Server script but am not sure how to make that happen... Im sure there are errors in my code too so feel free to say if there is a place I can improve.

2 comments
When I was first using RemoteEvents, I learned they're basically connecting the server to the client by firing it. You can check it out here: https://developer.roblox.com/api-reference/class/RemoteEvent
^ Send the camera CFrame