So this script should only activate once per life, at the touch of a button.

local pressed=false
local b = Instance.new("BodyForce") 
script.Parent.Head.Touched:connect(function(hit)
	local player = game.Players:GetPlayerFromCharacter(hit.Parent)
	if not hit.Parent.Torso:findFirstChild(b) and pressed==false and script.Parent.Parent.Parent.Owner.Value==player  then
		pressed=true
		b.Force = Vector3.new(0,3500,0) 
		b.Parent = hit.Parent.Torso
		script.Parent.Head.BrickColor = BrickColor.new("Really black")
		wait(1)
		script.Parent.Head.BrickColor = BrickColor.new("Bright blue")
		wait(1)
		pressed=false
end
end)

Now I know it works because there's only one BodyForce within the torso and it doesn't duplicate when I press on the button more than once, but for some reason the button still changes colors from blue to black and back to blue again.

I have another button with the same concept but it works as it should and the button doesn't change color again

local pressed=false
script.Parent.Head.Touched:connect(function(hit)
	local player = game.Players:GetPlayerFromCharacter(hit.Parent)
	local h = hit.Parent:findFirstChild("Humanoid")
	if pressed==false and script.Parent.Parent.Parent.Owner.Value==player and h.WalkSpeed==16  then
		h.WalkSpeed=25
		script.Parent.Head.BrickColor = BrickColor.new("Really black")
		wait(1)
		script.Parent.Head.BrickColor = BrickColor.new("Bright blue")
		wait(1)
		pressed=false
		
end
end)

I can't seem to find the problem with the first script. Thanks for the help.