So basically I made a brick that when is touched, its supposed to put fire particles all over your body, play a lava sound from your HumanoidRootPart, and would finally kill you:
function onTouched(hit) local debounce = false if hit.Parent:findFirstChild("Humanoid") then local Humanoid = hit.Parent:findFirstChild("Humanoid") local HRP = hit.Parent:findFirstChild("HumanoidRootPart") local Torso = hit.Parent:findFirstChild("Torso") local Head = hit.Parent:findFirstChild("Head") local LeftArm = hit.Parent:findFirstChild("Left Arm") local RightArm = hit.Parent:findFirstChild("Right Arm") local LeftLeg = hit.Parent:findFirstChild("Left Leg") local RightLeg = hit.Parent:findFirstChild("Right Leg") if not debounce then debounce = true wait(0.1) if Humanoid and Humanoid.Health > 0 then Sound = Instance.new("Sound", HRP) Sound.SoundId = "rbxassetid://142472270" MakeFire(Torso) MakeFire(Head) MakeFire(LeftArm) MakeFire(RightArm) MakeFire(LeftLeg) MakeFire(RightLeg) Sound.Playing = true Humanoid.Parent:BreakJoints() print("alive") debounce = false else print("dead") end end end end script.Parent.Touched:connect(onTouched)
But my problem is that the code above is supposed to only run once if the character is alive. Even with the cooldown and checking if the player is alive, it still runs multiple times. This leads to more then one sound and particle being made, which just looks bad and sounds wrong.
Here's all of my code if anyone needs it:
function MakeFire(Path) Fire = Instance.new("ParticleEmitter", Path) Fire.Name = "Fire" Fire.Texture = "rbxassetid://275871881" Fire.LightEmission = 0.5 Fire.Rate = 5 Fire.Lifetime = NumberRange.new(0.5, 1.2) Fire.Rotation = NumberRange.new(-360, 360) Fire.RotSpeed = NumberRange.new(10, 100) Fire.Speed = NumberRange.new(5, 5) Fire.Acceleration = Vector3.new(0, 5, 0) Fire.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 0)), ColorSequenceKeypoint.new(0.323, Color3.fromRGB(255, 170, 0)), ColorSequenceKeypoint.new(0.686, Color3.fromRGB(255, 81, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 0)) } Fire.Size = NumberSequence.new{ NumberSequenceKeypoint.new(0, 5.07), NumberSequenceKeypoint.new(1, 0.25) } Fire.Transparency = NumberSequence.new{ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.284, 0), NumberSequenceKeypoint.new(0.863, 0.375), NumberSequenceKeypoint.new(0.9, 0), NumberSequenceKeypoint.new(1, 1) } Fire2 = Fire:Clone() Fire2.Parent = Path Fire.Name = "Fire2" Fire.Rate = 15 Fire2.Size = NumberSequence.new{ NumberSequenceKeypoint.new(0, 4), NumberSequenceKeypoint.new(1, 0.25) } FireBlur = Instance.new("ParticleEmitter", Path) -- outer blur FireBlur.Name = "Blur" FireBlur.Texture = "rbxassetid://243664672" FireBlur.LightEmission = 0.3 Fire.Rate = 25 FireBlur.Lifetime = NumberRange.new(0.5, 1.2) FireBlur.RotSpeed = NumberRange.new(-200, 200) FireBlur.Speed = NumberRange.new(5, 5) FireBlur.Acceleration = Vector3.new(0, 5, 0) FireBlur.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(205, 205, 0)), ColorSequenceKeypoint.new(0.25, Color3.fromRGB(205, 137, 0)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(205, 68, 0)), ColorSequenceKeypoint.new(0.75, Color3.fromRGB(205, 0, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(120, 0, 0)) } FireBlur.Size = NumberSequence.new{ NumberSequenceKeypoint.new(0, 4), NumberSequenceKeypoint.new(0.4, 2.26), NumberSequenceKeypoint.new(0.8, 0.75), NumberSequenceKeypoint.new(1, 0) } FireBlur.Transparency = NumberSequence.new{ NumberSequenceKeypoint.new(0, 0.325), NumberSequenceKeypoint.new(0.306, 0.363), NumberSequenceKeypoint.new(0.701, 0.5), NumberSequenceKeypoint.new(1, 1) } FireBlur2 = FireBlur:Clone() -- inner blur FireBlur2.Parent = Path FireBlur2.Name = "Blur2" FireBlur2.LightEmission = 0.5 FireBlur2.Rate = 15 FireBlur2.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 0)), ColorSequenceKeypoint.new(0.323, Color3.fromRGB(255, 170, 0)), ColorSequenceKeypoint.new(0.7, Color3.fromRGB(255, 81, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 0)) } FireBlur2.Size = NumberSequence.new{ NumberSequenceKeypoint.new(0, 2), NumberSequenceKeypoint.new(1, 0.375) } FireBlur2.Transparency = NumberSequence.new{ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.284, 0), NumberSequenceKeypoint.new(0.863, 0.375), NumberSequenceKeypoint.new(0.9, 0), NumberSequenceKeypoint.new(1, 1) } Sound.Playing = true Sound:Play() wait() Fire.Size = NumberSequence.new{ NumberSequenceKeypoint.new(0, 1.69), NumberSequenceKeypoint.new(1, 0.25) } Fire2.Size = NumberSequence.new{ NumberSequenceKeypoint.new(0, 1.69), NumberSequenceKeypoint.new(1, 0.25) } end function onTouched(hit) local debounce = false if hit.Parent:findFirstChild("Humanoid") then local Humanoid = hit.Parent:findFirstChild("Humanoid") local HRP = hit.Parent:findFirstChild("HumanoidRootPart") local Torso = hit.Parent:findFirstChild("Torso") local Head = hit.Parent:findFirstChild("Head") local LeftArm = hit.Parent:findFirstChild("Left Arm") local RightArm = hit.Parent:findFirstChild("Right Arm") local LeftLeg = hit.Parent:findFirstChild("Left Leg") local RightLeg = hit.Parent:findFirstChild("Right Leg") if not debounce then debounce = true wait(0.1) if Humanoid and Humanoid.Health > 0 then Sound = Instance.new("Sound", HRP) Sound.SoundId = "rbxassetid://142472270" MakeFire(Torso) MakeFire(Head) MakeFire(LeftArm) MakeFire(RightArm) MakeFire(LeftLeg) MakeFire(RightLeg) Sound.Playing = true Humanoid.Parent:BreakJoints() print("alive") debounce = false else print("dead") end end end end script.Parent.Touched:connect(onTouched) while true do for i = 1,25 do wait(0.2) for _,v in pairs(script.Parent:GetChildren()) do if v:IsA("Texture") then v.Texture = string.format("rbxasset://textures/water/normal_d.dds",i) end end wait() end end
In your first script your setting debounce to false every time you touch someone so it won’t work try placing it outside the ontouched function