Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Sword ability still being spammable after first time?

Hi, I'm making a sword PVP game where each sword has an ability. The thing is though, every sword ability is spammable! I've tested it out with my friends and they can keep spamming the abilities even when there's clearly a cooldown. Help would be much appreciated!

Here is the first script: (Local script inside the sword)

local UIS = game:GetService("UserInputService")
local tool = script.Parent
local player = game.Players.LocalPlayer
local enabled = false
local remote = game:GetService("ReplicatedStorage"):FindFirstChild("NormalSlash")
local ready = true
local debounce = false

tool.Equipped:Connect(function()
	    enabled = true
	 
	end)
tool.Unequipped:Connect(function()
	    enabled = false
	    
end)

repeat wait() until player.Character.Humanoid
local humanoid = player.Character.Humanoid
local anim = Instance.new("Animation")
anim.AnimationId = "https://www.roblox.com/asset/?id=8446540208"

UIS.InputBegan:Connect(function(input)
	if input.KeyCode == Enum.KeyCode.E then
		local playAnim = humanoid:LoadAnimation(anim)
		if not debounce then
			debounce = true
			if enabled == true then
				remote:FireServer()
				playAnim:Play()
			end
		end
		wait(5)
		debounce = false
	end
end)

Here is the 2nd script: (A script inside ServerScriptService)

local damage = 0.25

local StartColor = Color3.new(255,255,0)
local EndColor = Color3.new(255,255,255)

local sequence = ColorSequence.new(StartColor, EndColor)

local sequence2 = ColorSequence.new(EndColor)

game.ReplicatedStorage.NormalSlash.OnServerEvent:Connect(function(player)
	local char = player.Character
	local Sword = char:WaitForChild("Sword")
	Sword.Handle.BrickColor = BrickColor.new("New Yeller")
	Sword.Handle.Wedge1.BrickColor = BrickColor.new("New Yeller")
	Sword.Handle.Wedge2.BrickColor = BrickColor.new("New Yeller")
	Sword.Handle.Material = "Neon"
	Sword.Handle.Wedge1.Material = "Neon"
	Sword.Handle.Wedge2.Material = "Neon"
	Sword.Handle.SlashTrail.Color = sequence
	Sword.Handle.MegaSlash:Play()
	Sword.Handle.Touched:Connect(function(hit)
		if hit.Parent:FindFirstChild("Humanoid") then
			if hit.Parent.Name ~= player.Name then
				hit.Parent.Humanoid:TakeDamage(damage)
			end
		end
	end)
	wait(1)
	Sword.Handle.BrickColor = BrickColor.new("Medium stone grey")
	Sword.Handle.Wedge1.BrickColor = BrickColor.new("Medium stone grey")
	Sword.Handle.Wedge2.BrickColor = BrickColor.new("Medium stone grey")
	Sword.Handle.Material = "Plastic"
	Sword.Handle.Wedge1.Material = "Plastic"
	Sword.Handle.Wedge2.Material = "Plastic"
	Sword.Handle.SlashTrail.Color = sequence2
	wait(4)
end)

4 comments

0

Maybe try putting lines 33 and 34 after line 31?

0

LIke directly afterwards

0

Thank you so much, it works!!

0

No problem

1 answer

I got an answer, in the comments! What I need to do was move the code from line 33 and 34 to after line 31!

This discussion is preserved as it was. New answers, comments, and votes are closed.