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

My NPC punching system is combining with the scripts in others somehow?

Asked by 2 years ago

When I have these scripts under the name Animate in every NPC on my game to have the NPC attack us, but when multiple NPCs are fighting even on opposite sides of the map their damages combine on every player fighting them... I am STUMPED.

Script:

local Animations = game.ReplicatedStorage.Animations
local WalkAnim = Animations.Walk
local IdleAnim = Animations.Idle
local RunAnim = Animations.Run
local RPunch = Animations.RPunch
local LPunch = Animations.LPunch
local LKick = Animations.LKick
local LHook = Animations.LHook
local Character = script.Parent
local OuterSpeed

local ShiftIsDown = false
Character.Humanoid.Running:Connect(function(Speed)
    OuterSpeed = Speed
    if Speed >= 1 and ShiftIsDown == false then
        for i,v in pairs(Character.Humanoid:GetPlayingAnimationTracks()) do
            v:Stop()
        end
        local AnimLoad = Character.Humanoid:LoadAnimation(WalkAnim)
        AnimLoad:Play()
    end
    if Speed == 0 then
        for i,v in pairs(Character.Humanoid:GetPlayingAnimationTracks()) do
            v:Stop()
        end
        local AnimLoad1 = Character.Humanoid:LoadAnimation(IdleAnim)
        AnimLoad1:Play()
    end
end)

local Attacker = script.Parent.Reward.Attacker
local canBegin = true
script.Parent.Humanoid.HealthChanged:Connect(function()
    if canBegin == false then return end
    canBegin = false
    local Value = Attacker.Value
    local Target = workspace:FindFirstChild(Value)
    local RS = game:GetService("RunService")

    local TCount = 0
    local midAnim
    local db = false
    _G.dmgLock4 = false
    _G.dmgLock3 = false
    _G.dmgLock2 = false
    local Locked = true

    while Locked == true do
        script.Parent.Humanoid:MoveTo(Target.HumanoidRootPart.Position)
        if db == true then return end
        TCount = TCount + 1
        local A = game.ReplicatedStorage.Sounds.PunchSwung:Clone()
        A.Parent = Character.HumanoidRootPart
        A:Play()
        A.Ended:Connect(function()
            A:Destroy()
        end)
        if TCount == 1 then
            db = true
            midAnim = true
            for i,v in pairs(Character.Humanoid:GetPlayingAnimationTracks()) do
                v:Stop()
            end
            local AnimLoad = Character.Humanoid:LoadAnimation(RPunch)
            AnimLoad:Play()
            if _G.dmgLock4 == false then 
                script.Parent["Right Arm"].Touched:Connect(function(Hit)
                    if _G.dmgLock4 == true then return end
                    if Hit.Parent.ClassName == "Model" then
                        _G.dmgLock4 = true
                        wait()
                        local T = Hit.Parent
                        local TGrit = T.Values.Grit.Value
                        local LStrength = Character.Values.Strength.Value
                        if midAnim == true then
                            local DamageDone = script.Parent.Values.Strength.Value * 3 - Hit.Parent.Values.Grit.Value * .25
                            local A = game.ReplicatedStorage.Sounds.PunchLanded:Clone()
                            A.Parent = script.Parent.HumanoidRootPart
                            A:Play()
                            A.Ended:Connect(function()
                                A:Destroy()
                            end)
                            Hit.Parent.Humanoid.Health = Hit.Parent.Humanoid.Health - DamageDone
                            wait(1)
                        else return false
                        end
                    end
                    Hit.Parent.Humanoid.Died:Connect(function()
                        Locked = false
                        canBegin = true
                    end)
                end)
            end
            wait()
            midAnim = false
            _G.dmgLock4 = false
            db = false
        end
        if TCount == 2 then
            db = true
            midAnim = true
            for i,v in pairs(Character.Humanoid:GetPlayingAnimationTracks()) do
                v:Stop()
            end
            local AnimLoad = Character.Humanoid:LoadAnimation(LPunch)
            AnimLoad:Play()
            if _G.dmgLock3 == false then 
                script.Parent["Left Arm"].Touched:Connect(function(Hit)
                    if _G.dmgLock3 == true then return end
                    if Hit.Parent.ClassName == "Model" then
                        _G.dmgLock3 = true
                        wait()
                        local T = Hit.Parent
                        local TGrit = T.Values.Grit.Value
                        local LStrength = Character.Values.Strength.Value
                        if midAnim == true then
                            local DamageDone = script.Parent.Values.Strength.Value * 3 - Hit.Parent.Values.Grit.Value * .25
                            local A = game.ReplicatedStorage.Sounds.PunchLanded:Clone()
                            A.Parent = script.Parent.HumanoidRootPart
                            A:Play()
                            A.Ended:Connect(function()
                                A:Destroy()
                            end)
                            Hit.Parent.Humanoid.Health = Hit.Parent.Humanoid.Health - DamageDone
                            wait(1)
                        else return false
                        end
                    end
                    Hit.Parent.Humanoid.Died:Connect(function()
                        Locked = false
                        canBegin = true
                    end)
                end)
            end
            wait()
            midAnim = false
            _G.dmgLock3 = false
            db = false
        end
        if TCount == 3 then
            db = true
            midAnim = true
            for i,v in pairs(Character.Humanoid:GetPlayingAnimationTracks()) do
                v:Stop()
            end
            local AnimLoad = Character.Humanoid:LoadAnimation(LKick)
            AnimLoad:Play()
            if _G.dmgLock2 == false then 
                script.Parent["Left Leg"].Touched:Connect(function(Hit)
                    if _G.dmgLock2 == true then return end
                    if Hit.Parent.ClassName == "Model" then
                        _G.dmgLock2 = true
                        wait()
                        local T = Hit.Parent
                        local TGrit = T.Values.Grit.Value
                        local LStrength = Character.Values.Strength.Value
                        if midAnim == true then
                            local DamageDone = script.Parent.Values.Strength.Value * 3 - Hit.Parent.Values.Grit.Value * .25
                            local A = game.ReplicatedStorage.Sounds.PunchLanded:Clone()
                            A.Parent = script.Parent.HumanoidRootPart
                            A:Play()
                            A.Ended:Connect(function()
                                A:Destroy()
                            end)
                            Hit.Parent.Humanoid.Health = Hit.Parent.Humanoid.Health - DamageDone
                            wait(1)
                        else return false
                        end
                    end
                    Hit.Parent.Humanoid.Died:Connect(function()
                        Locked = false
                        canBegin = true
                    end)
                end)
            end
            wait()
            midAnim = false
            _G.dmgLock2 = false
            db = false
            TCount = 0
        end
    end
end)

Answer this question