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

Why is my attack breaking when I want it to enable a script for damage?

Asked by 5 years ago

I'm making an attack that plays an animation and in the animation the player damages whatever player that touches the damage radius that is already in the player. The first script normally works correctly except for when I add the part to activate the script that is in the radius that allows it to do damage. The damage script is already disabled but doesn't work on it's own when its enabled. Any help would be greatly appreciated.

Script playing animation and enabling damage.

--Finds Player--
local UserInputService = game:GetService("UserInputService")
local Player = game.Players.LocalPlayer 
local Character = Player.Character or Player.CharacterAdded:wait()
local Humanoid = Character:WaitForChild("Humanoid")
local BlastDamage = Character:WaitForChild("Blast"):WaitForChild("Script")



--Finds Animations--
local Animation = Instance.new("Animation") 
Animation.AnimationId = "rbxassetid://2867339187" 
local AnimationR = Instance.new("Animation") 
AnimationR.AnimationId = "rbxassetid://2867339668"
local AnimationL = Instance.new("Animation") 
AnimationL.AnimationId = "rbxassetid://2867395453"
local Animations = {AnimationL,AnimationR}
local track = Humanoid:LoadAnimation(Animation)
local CanDamage = false


--Just finding the Particles--
local particle = Character:WaitForChild("LeftUpperArm"):WaitForChild("ParticleEmitter") 
local particle1 = Character:WaitForChild("RightLowerArm"):WaitForChild("ParticleEmitter") 
local particle2 = Character:WaitForChild("RightUpperLeg"):WaitForChild("ParticleEmitter") 
local particle3 = Character:WaitForChild("UpperTorso"):WaitForChild("ParticleEmitter")
local particle4 = Character:WaitForChild("LowerTorso"):WaitForChild("ParticleEmitter")


--Funtion That Starts Animation and Enables the Particles--
UserInputService.InputBegan:Connect(function(input, proc)
    local track2 = Humanoid:LoadAnimation(Animations[math.random(#Animations)]) 
    if not proc and input.KeyCode == Enum.KeyCode.T then
        CanDamage = false
        particle.Enabled = true 
        particle1.Enabled = true
        particle2.Enabled = true 
        particle3.Enabled = true
        particle4.Enabled = true
        track:Play() 
        wait(0.35) 
        track:Stop()
        track2:Play()  --Animaton Follows--
        wait(0.45)
        track2:Stop()
        particle.Enabled = false
        particle1.Enabled = false
        particle2.Enabled = false
        particle3.Enabled = false
        particle4.Enabled = false
        CanDamage = true
    end
--Enables BlastDamage Script-- 
    if CanDamage == true then
    BlastDamage.Disabled = false
    wait(0.1)
    BlastDamage.Disabled = true
end
wait(0.00000001)
CanDamage = false
end)


Damage Script.

local CanDamage = false 

--Damage Function-- 
function OnTouched(Part) 
    if Part.Parent ~= nil then 
    if CanDamage == false and Part.Parent:findFirstChild("Humanoid") ~= nil then 
    CanDamage = true 
    Part.Parent:findFirstChild("Humanoid"):TakeDamage(50) 
    wait(2) 
    CanDamage = false 
    end 
  end 
end 

--Plays Function When Blast is touched--
script.Parent.Touched:Connect(OnTouched)
0
You're enabling the damage script on a local script which means that only the client will see the damage take effect but not for the server (other players). hellmatic 1523 — 5y
0
Well in that case does anybody know a more efficient way of doing this? songboy50 77 — 5y
0
the damage script must be on the blast, if it is not then it must be in other place cherrythetree 130 — 5y
0
BUUUUUMMMMMPPPPP songboy50 77 — 5y

1 answer

Log in to vote
0
Answered by 5 years ago

I've fixed it!

Ad

Answer this question