Unable to cast double with Vector3

Yo i ve got some trouble with making a fireball ability for my game. When i activate tool it says “Unable to cast double with Vector3” .
‘’'lua
local Tool = script.Parent
local Player = game.Players.LocalPlayer
local cooldown = 0 – Перезарядка
local fireEffect = nil – Эффект огня

– Функция для активации инструмента
local function onActivated()
if cooldown > 0 then return end – Если перезарядка идет, выходим из функции

local character = Player.Character or Player.CharacterAdded:Wait()
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if not humanoid then return end

local camera = workspace.CurrentCamera
local mousePosition = camera:WorldToScreenPoint(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)
local direction = CFrame.new(character.Head.Position, mousePosition).LookVector

--  Создаем  огненный  шар
local Fireball = game.ReplicatedStorage.Fireball:Clone()
Fireball.Parent = workspace
Fireball.CFrame = character.Head.CFrame * CFrame.new(0, 0.5, 1) * CFrame.Angles(0, math.rad(90), 0)

--  Запускаем  анимацию  огненного  шара
local speed = 20
local growFactor = 0.2
local fadeFactor = 0.05

local function animateFireball()
	local FireballSize = Fireball.Size
	local FireballTransparency = Fireball.Transparency
	while Fireball and Fireball.Parent do
		Fireball.CFrame = Fireball.CFrame:lerp(Fireball.CFrame + Fireball.CFrame.lookVector * speed, 1, 0.1)
		FireballSize = FireballSize + Vector3.new(growFactor, growFactor, growFactor)
		Fireball.Size = FireballSize
		FireballTransparency = FireballTransparency + fadeFactor
		Fireball.Transparency = math.clamp(FireballTransparency, 0, 1)

		if FireballTransparency >= 1 then
			Fireball:Destroy()
		end
		task.wait()
	end
end
animateFireball()

--  Запускаем  перезарядку
cooldown = 5
task.wait(5)
cooldown = 0

end

– Функция для активации прицела
local function onMouseClick()
if cooldown > 0 then return end
local camera = workspace.CurrentCamera
end

– Функция для урона от огненного шара
local function onFireballTouched(hit)
if hit.Parent:FindFirstChild(“Humanoid”) then
local humanoid = hit.Parent:FindFirstChild(“Humanoid”)
humanoid.Health -= 10 – Нанесение урона

	--  Создание  эффекта  огня  на  персонаже
	fireEffect = Instance.new("Fire", hit.Parent)
	fireEffect.Size = Vector3.new(1, 1, 1)

	--  Удаление  эффекта  через  7  секунд
	task.wait(7)
	fireEffect:Destroy()
end

end

– Функция для нанесения меньшего урона в течение 7 секунд
local function applyDamageOverTime(hit)
if hit.Parent:FindFirstChild(“Humanoid”) then
local humanoid = hit.Parent:FindFirstChild(“Humanoid”)
while humanoid.Health > 0 do
humanoid.Health -= 1 – Нанесение урона в течение 7 секунд
task.wait(1) – Задержка между нанесениями урона
end
end
end

– Обработка события касания огненным шаром
local Fireball = game.ReplicatedStorage.fireball:Clone()
Fireball.fireball.Touched:Connect(onFireballTouched)

– Обработка события при активации инструмента
Tool.Activated:Connect(onActivated)
the line where error is
local mousePosition = camera:WorldToScreenPoint(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)
any help priceless

im going to quickly type this as a correct code block so its easier to read, ill try to find the issue, if not, ill leave this here for other people to read it easier

local Tool = script.Parent
local Player = game.Players.LocalPlayer
local cooldown = 0 – Перезарядка
local fireEffect = nil – Эффект огня

– Функция для активации инструмента
local function onActivated()
if cooldown > 0 then return end – Если перезарядка идет, выходим из функции

local character = Player.Character or Player.CharacterAdded:Wait()
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if not humanoid then return end

local camera = workspace.CurrentCamera
local mousePosition = camera:WorldToScreenPoint(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)
local direction = CFrame.new(character.Head.Position, mousePosition).LookVector

--  Создаем  огненный  шар
local Fireball = game.ReplicatedStorage.Fireball:Clone()
Fireball.Parent = workspace
Fireball.CFrame = character.Head.CFrame * CFrame.new(0, 0.5, 1) * CFrame.Angles(0, math.rad(90), 0)

--  Запускаем  анимацию  огненного  шара
local speed = 20
local growFactor = 0.2
local fadeFactor = 0.05

local function animateFireball()
	local FireballSize = Fireball.Size
	local FireballTransparency = Fireball.Transparency
	while Fireball and Fireball.Parent do
		Fireball.CFrame = Fireball.CFrame:lerp(Fireball.CFrame + Fireball.CFrame.lookVector * speed, 1, 0.1)
		FireballSize = FireballSize + Vector3.new(growFactor, growFactor, growFactor)
		Fireball.Size = FireballSize
		FireballTransparency = FireballTransparency + fadeFactor
		Fireball.Transparency = math.clamp(FireballTransparency, 0, 1)

		if FireballTransparency >= 1 then
			Fireball:Destroy()
		end
		task.wait()
	end
end
animateFireball()

--  Запускаем  перезарядку
cooldown = 5
task.wait(5)
cooldown = 0
end

– Функция для активации прицела
local function onMouseClick()
if cooldown > 0 then return end
local camera = workspace.CurrentCamera
end

– Функция для урона от огненного шара
local function onFireballTouched(hit)
if hit.Parent:FindFirstChild(“Humanoid”) then
local humanoid = hit.Parent:FindFirstChild(“Humanoid”)
humanoid.Health -= 10 – Нанесение урона

	--  Создание  эффекта  огня  на  персонаже
	fireEffect = Instance.new("Fire", hit.Parent)
	fireEffect.Size = Vector3.new(1, 1, 1)

	--  Удаление  эффекта  через  7  секунд
	task.wait(7)
	fireEffect:Destroy()
end
end

– Функция для нанесения меньшего урона в течение 7 секунд
local function applyDamageOverTime(hit)
if hit.Parent:FindFirstChild(“Humanoid”) then
local humanoid = hit.Parent:FindFirstChild(“Humanoid”)
while humanoid.Health > 0 do
humanoid.Health -= 1 – Нанесение урона в течение 7 секунд
task.wait(1) – Задержка между нанесениями урона
end
end
end

– Обработка события касания огненным шаром
local Fireball = game.ReplicatedStorage.fireball:Clone()
Fireball.fireball.Touched:Connect(onFireballTouched)

– Обработка события при активации инструмента
Tool.Activated:Connect(onActivated)
the line where error is
local mousePosition = camera:WorldToScreenPoint(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)

what line does it say the error is in?

where world to screen point is

i changed the code and solved the trouble so you cant use vector 3 using only x and y there s also need to use z