Disable mining on low stamina

( i made this post again so more people could see it)
I want to make it so when the stamina is low, mining is disabled
robloxapp-20231108-1655521.wmv (1.1 MB)
I already made the stamina and mining system, here’s the scripts :

local rs = game:GetService("ReplicatedStorage")
local canmine = rs.Tool.Pickaxe.CanMine or rs.Tool.UpgradedPickaxe.CanMine
local mining = rs.Mining
local disablemining = rs.DisableMining

local UIS = game:GetService("UserInputService")

local currentStamina = 250
local maxStamina = 250
local isRunning = false
local reqstamina = 50
local canmine = rs.Tool.Pickaxe.CanMine
local canminevalue = canmine.Value

currentStamina = math.clamp(currentStamina, 0, maxStamina)

local function updateStamina(player)
	if currentStamina > 0 then
		currentStamina = currentStamina - reqstamina
		script.Parent:TweenSize(UDim2.new(0, 20, currentStamina / maxStamina, 0), "Out", "Linear", 0.5)
	end
	task.wait(0.5)
	while true do
		if currentStamina <= 250 then
			currentStamina = currentStamina + 0.02
			script.Parent:TweenSize(UDim2.new(0, 20, currentStamina / maxStamina, 0), "Out", "Linear", 0)
		elseif currentStamina == 250 then
			print("User's Stamina is Full")
		elseif currentStamina - reqstamina >= 0 or currentStamina <= reqstamina then -- stop if stamina after mining is below 0
			currentStamina = currentStamina - reqstamina
			script.Parent:TweenSize(UDim2.new(0, 20, currentStamina / maxStamina, 0), "Out", "Linear", 0.5)
			print("low stamina")
			disablemining:FireClient(player)
		elseif currentStamina > 50 then
			return
		end
		task.wait()
	end
end

mining.OnServerEvent:Connect(function(player)
	updateStamina()
end)
local pickaxe = script.Parent
local canmine = pickaxe.CanMine
local anim = pickaxe.Animation
local players = game:GetService("Players")
local player = players:GetPlayerFromCharacter(pickaxe.Parent) -- get player if tool is equipped
local character
local animtrack
local humanoid
local ismining = false
local isactive = false
local animplaying = false
local pickaxehitbox = pickaxe.Pickaxepart.PickaxeHitbox
local mining = game:GetService("ReplicatedStorage").Mining
local sc = game:GetService("ReplicatedStorage").ServerConnector
local pickvalue = game:GetService("ReplicatedStorage").Tool.CurrentPickaxe
local playermod = require(game:GetService("Players").LocalPlayer.PlayerScripts:WaitForChild("PlayerModule"))
local controls = playermod:GetControls()
local dc2 = game:GetService("ReplicatedStorage").dc2
local cs = game:GetService("ReplicatedStorage").ChangeStrength
local sb = game:GetService("ReplicatedStorage").StaminaBar
local zerostamina = game:GetService("ReplicatedStorage").zerostamina
local stamina = true
local disablemining = game:GetService("ReplicatedStorage").DisableMining
local cd = false

disablemining.OnClientEvent:Connect(function()
	canmine.Value = false
	cd = true
	print("wut de hell")
end)

if pickaxe.Parent:IsA("Backpack") then -- checks if tool is in backpack
	player = pickaxe.Parent.Parent -- since backpack is always a child of a player, we get player from the backpack's parent
end

local function CharAdded(char)
	character = char
	humanoid = character:WaitForChild("Humanoid")
	animtrack = humanoid:LoadAnimation(anim)
end

if player.Character then CharAdded(player.Character) end	
player.CharacterAdded:Connect(CharAdded)


pickaxe.Activated:Connect(function()
	if canmine.Value == true and animplaying == false then
		dc2:FireServer()
		print("activated")
		isactive = true
		animtrack:Play()
		canmine.Value = false
		animplaying = true
		wait(3)
		animplaying = false
		pickaxehitbox.Touched:Connect(function(hit)
			if ismining == false then
				if hit.Name == "Hitbox" or hit.Parent == "Rock" then
					print("mining")
					sb:FireServer()
					sc:FireServer()
					mining:FireServer()
					ismining = true
					local particle = hit:WaitForChild("ParticleEmitter")
					particle.Enabled = true
					if ismining == true then
						wait(1)
						ismining = false
						particle.Enabled = false
					end
				end
			end
			task.wait(1)
			if cd == false then
				print("no cd")
				canmine.Value = true
			end
		end)
	end
end)

if isactive == true then
	wait(1)
	isactive = false
end

What’s the problem? What’s not working? It looks like it should work.