right now you can fire many fire balls at the same time and creates lag id like it to have a wait time in between each fire ball like 5 seconds
Player = script.Parent.Parent.Parent
mouse = Player:GetMouse()
local keydowns = script.Parent.Frame.keydown.Value
local keydown1 = script.Parent.skills.skill1.keydown.Value
local keydown2 = script.Parent.skills.skill2.keydown.Value
local keydown3 = script.Parent.skills.skill3.keydown.Value
mouse.KeyDown:connect(function (key)
key = key:lower()
if key == keydowns then
script.Parent.Frame.Visible = not script.Parent.Frame.Visible
elseif key == keydown1 then
local enabled = true
if not enabled then
return
end
enabled = false
local cf = mouse.Hit
local target = cf.p
fire(target)
wait(1)
enabled = true
elseif key == keydown2 then
print "skill 2"
elseif key == keydown3 then
print "skill 3"
end
end)
function fire(target)
local head = game.Players.LocalPlayer.Character:findFirstChild("Head")
if head == nil then return end
local dir = target - head.Position
dir = computeDirection(dir)
local missile = script.Parent.Rocket:clone()
local spawnPos = game.Players.LocalPlayer.Character.PrimaryPart.Position
local pos = spawnPos + (dir * 9)
--missile.Position = pos
missile.CFrame = CFrame.new(pos, pos + dir)
local creator_tag = Instance.new("ObjectValue")
creator_tag.Value = game.Players.LocalPlayer
creator_tag.Name = "creator"
creator_tag.Parent = missile
missile.RocketScript.Disabled = false
missile.Parent = game.Workspace
end
function computeDirection(vec)
local lenSquared = vec.magnitude * vec.magnitude
local invSqrt = 1 / math.sqrt(lenSquared)
return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
end
