Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Weird problem with shooting system. Any solutions?

Asked by 3 years ago

So while i was making a mario-like platformer i decided to add firing a projectile to my game. At first i added the F = a new projectile that heads thru the general direction, then i added a hold F to spray projectiles. I decided to add a cooldown of 0.3 to every bullet fired and after doing the cooldown for the hold F mechanic i decided to TRY adding the same cooldown mechanic to the normal projectile spawning without holding. Homever no matter what i did it would never work. It would either keep spraying bullets even when im not holding F or just not working. But later i came up with a very good solution that somehow dosent work. Also no there are no errors. The local script:

local UserInputService = game:GetService("UserInputService")
local KeyPressed = false
local CoolDown = false

local function CoolDown()
    CoolDown = true
    wait(0.3)
    CoolDown = false
end

UserInputService.InputBegan:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.F then
        if CoolDown == false then
        game.ReplicatedStorage.ProjectileFire:FireServer()
        KeyPressed = true
    end
while KeyPressed == true do
    wait(0.3)
    game.ReplicatedStorage.ProjectileFire:FireServer()
        end
    end
end)

UserInputService.InputEnded:Connect(function(KeyCode)
    if KeyCode.KeyCode == Enum.KeyCode.F then
        KeyPressed = false
    end
end)

The Server script:

game.ReplicatedStorage.ProjectileFire.OnServerEvent:Connect(function(plr)
    print("pew pew accepted")
    local Char = game.Workspace:WaitForChild(plr.Name)
    local ProjectileOrgin = game.ReplicatedStorage.Projectile
    local ProjectileClone = ProjectileOrgin:Clone()
    ProjectileClone.Parent = game.Workspace
    ProjectileClone.Position = Char.HumanoidRootPart.Position
end)

Please come up with a solution cus this has absolutely stomped me. :D

Answer this question