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

Combat System Dealing Damage Twice?

Asked by 3 years ago

I made a combat punch system using Region3. However, the player you hit gets damage taken from them twice or three times in some cases. It works sometimes but other times no.

Local Script:

local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()

local UIS = game:GetService("UserInputService")
local Enabled = true
local RE = script:WaitForChild("Function")
UIS.InputBegan:Connect(function (input, GPE)

    if GPE then return end

    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        if Enabled == true then
            RE:FireServer("Combat", char.HumanoidRootPart.CFrame * CFrame.new(0,0,-2.5).Position)
            Enabled = false
            wait(0.3)
            Enabled = true
        end

    end
end)

Server Script:

local RE = script.Parent
local Enabled = true
local combo = 1

RE.OnServerEvent:Connect(function(player, action, Pos)
    local char = player.Character or player.CharacterAdded:Wait()
    if Enabled == false then return end
    Enabled = false
    if action == "Combat" then
        if combo == 1 then
            combo = 2
            local Track = Instance.new("Animation")
            Track.AnimationId = "rbxassetid://7008354558"
            local Anim = char.Humanoid:LoadAnimation(Track)
            Anim:Play()
            local playingTracks = char.Humanoid.Animator:GetPlayingAnimationTracks()
            for i, v in pairs(playingTracks) do
                if v.Name == "walk" or v.Name == "run" then
                    v:Destroy()
                end
            end

        elseif combo == 2 then
            combo = 1
            local Track = Instance.new("Animation")
            Track.AnimationId = "rbxassetid://7008358588"
            local Anim = char.Humanoid:LoadAnimation(Track)
            Anim:Play()
            local playingTracks = char.Humanoid.Animator:GetPlayingAnimationTracks()
            for i, v in pairs(playingTracks) do
                if v.Name == "walk" or v.Name == "run" then
                    v:Destroy()
                end
            end
        end
        if char.Humanoid:FindFirstChild("Whoosh") then
            local whoosh = char.Humanoid:WaitForChild("Whoosh")
            whoosh:Play()
        else 
            local sound = Instance.new("Sound", char.Humanoid) 
            sound.Name = "Whoosh"
            sound.SoundId = "rbxassetid://231731980"
            sound.PlaybackSpeed = math.random(88, 120)/100
            sound:Play()

        end

        wait(0.2)   

        local region = Region3.new(Pos - Vector3.new(2.5, 2.5, 2.5), Pos + Vector3.new(2.5, 2.5, 2.5))
        local RTable = workspace:FindPartsInRegion3(region, nil, 20)

        for i, v in pairs(RTable) do
            if v.Parent:FindFirstChild("Humanoid") and v.Parent:FindFirstChild("Deb") == nil and v.Parent ~= char then
                local Deb = Instance.new("BoolValue", v.Parent)
                Deb.Name = "Deb"
                game.Debris:AddItem(Deb, 0.2)
                local randomDMG = math.random(20,25)
                v.Parent.Humanoid:TakeDamage(randomDMG)
                print(randomDMG)

                if v:FindFirstChild("Punch") then
                    local punch = v:WaitForChild("Punch")
                    punch:Play()
                else 
                    local s = Instance.new("Sound", v)
                    s.Name = "Punch"
                    s.SoundId = "rbxassetid://3932505023"
                    s.PlaybackSpeed = math.random(88, 120)/100
                    s:Play()
                end
                local attachment1 = Instance.new("Attachment", v)
                local fx = game.ServerStorage:WaitForChild("FX")
                local punchFX = fx:WaitForChild("PUNCH")
                local random = math.random(0, 2)

                if random == 1 then

                    local particle = punchFX.Effects2:Clone()
                    particle.Parent = attachment1
                    particle:Emit(10)
                    wait(0.2)
                    particle:Destroy()
                    print("ELLLO")

                elseif random == 2 then

                    local particle = punchFX.HitModuleParticle:Clone()
                    particle.Parent = attachment1
                    particle:Emit(10)
                    wait(0.2)
                    particle:Destroy()
                    print("ELLO 2")

                end

                end
        end
        wait(0.3)
        Enabled = true
    end

end)
0
Just Use Debounce Or Smthing kidsteve923 139 — 3y

Answer this question