It keeps saying that it's a nil value(look at the bottom of the script)
wait()
local event = script.Parent
event.OnServerEvent:Connect(function(player)
local anim = player.Character.Humanoid:LoadAnimation(script.Charge)
anim:Play()
local darknebula = Instance.new("Part")
darknebula.Shape = "Ball"
darknebula.Parent = player.Character.RightHand
darknebula.Size = Vector3.new(35, 35, 35)
darknebula.Color = Color3.fromRGB(0, 0, 0)
darknebula.Material = "Neon"
darknebula.Name = "darknebula"
darknebula.Massless = true
local weld = Instance.new("Weld")
weld.Name = "Weld"
weld.Parent = darknebula
weld.Part1 = darknebula
weld.Part0 = player.Character.RightHand
weld.C0 = CFrame.new(0, 0, 0)
weld.C1 = CFrame.new(0, 35, 0)
local bg = Instance.new("BodyGyro",player.Character.UpperTorso)
bg.Name = "skillgyro"
bg.D = 100
bg.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
local bp = Instance.new("BodyPosition",player.Character.UpperTorso)
bp.Name = "skillposition"
bp.Position = player.Character.HumanoidRootPart.Position
bp.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
local mouse = player:GetMouse()
local Pos = mouse.CFrame
bg.CFrame = CFrame.new(player.Character.UpperTorso.Position,Pos)

2 comments
You cannot get mouse from a server script. Furthermore CFrame isnt a propert of mouse. It's Hit. Also, the 2nd arg of CFrame.new should be a Vector3 aswell.
So is there any way for me to get it in a local script and transfer it to a server one?