How to fix this problem

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    fix bug
  2. What is the issue? Include screenshots / videos if possible!
-- This is an example Lua code block
local module = {}

local debris = game:GetService("Debris")

local ss = game:GetService("ServerStorage")
local modules = ss:WaitForChild("Modules")
local stunHandler = require(modules:WaitForChild("StunHandlerV2"))
local ragdollModule = require(modules:WaitForChild("Ragdoll"):WaitForChild("ModuleScript"))

function module.Hit(enemyHumanoid,damage,stunDuration,knockback,attacker,ragdoll,ragdollDuration, blockBreak, player)
	
	local attackerHumRp = attacker:WaitForChild("HumanoidRootPart")
	local enemy = enemyHumanoid.Parent
	local enemyHumRp = enemyHumanoid.Parent.HumanoidRootPart
	local enemyBlocking = enemy:GetAttribute("Blocking")
	if damage then
		enemyHumanoid:TakeDamage(4)
	end

	if not blockBreak then
		if enemyBlocking then
			local direction = (attackerHumRp - enemyHumRp.Position).unit
			local enemyLook = enemyHumRp.CFrame.LookVector
			
			local dot = direction:Dot(enemyLook)
			
			if dot > -0.4  then
				print("Blocked!!")
				return
			else
				enemy:SetAttribute("Blocking",false)
			end
		end
	end

	if stunDuration then
		enemyHumanoid.WalkSpeed = 16
		enemyHumanoid.JumpPower = 50
		stunHandler.Stun(enemyHumanoid,stunDuration)
	end

	if ragdoll then
		local ragdollTrigger = enemyHumanoid.Parent:FindFirstChild("RagdollTrigger")
		if ragdollTrigger then
			if not ragdollTrigger.Value then
				ragdollTrigger.Value = true

				task.delay(ragdollDuration,function()
					if enemyHumanoid.Health > 0 then
						ragdollTrigger.Value = false
					end
				end)
			end
		end
	end

	if knockback then
		local bv = Instance.new("BodyVelocity")
		bv.MaxForce = Vector3.new(math.huge,0,math.huge)
		bv.P = 50000
		bv.Velocity = knockback
		bv.Parent = enemyHumRp

		debris:AddItem(bv,0.2)
	end

end

return module

Please do not ask people to write entire scripts or design entire systems for you. If you can’t answer the three questions above, you should probably pick a different category.

well i guess line 12 is this one
the variable “attacker” must be a boolean (true/false) so double check what it is

สกรีนช็อต 2024-04-18 185301

whereever you call this function the attacker variable you inputted must be a boolean, go to where you called the function

สกรีนช็อต 2024-04-18 190310

what does that equal? you can be much more helpful by giving more information other than screenshots

local rp = game:GetService("ReplicatedStorage")
local remotes = rp:WaitForChild("Remotes")
local animations = rp:WaitForChild("Animations")
local Rock = rp.RockScript
local DownSlamSound = script.DownSlam
local punchRemote = remotes:WaitForChild("Punch")

local debris = game:GetService("Debris")
local ss = game:GetService("ServerStorage")
local modules = ss:WaitForChild("Modules")

local TomatoHitbox = require(modules:WaitForChild("TomatoHitbox"))
local hitService = require(modules:WaitForChild("HitService"))

local lastPunch = {}

local MAX_COMBO = 4

local function changeCombo(char)
	local combo = char:GetAttribute("Combo")

	local player = game:GetService("Players"):GetPlayerFromCharacter(char)

	if lastPunch[player] then
		local passedTime = os.clock() - lastPunch[player]
		print(passedTime)
		if passedTime <= 2 then
			if combo >= MAX_COMBO then
				char:SetAttribute("Combo",1)
			else
				char:SetAttribute("Combo",combo + 1)
			end
		else
			char:SetAttribute("Combo",1)
		end
	else
		if combo >= MAX_COMBO then
			char:SetAttribute("Combo",1)
		else
			char:SetAttribute("Combo",combo + 1)
		end
	end

	lastPunch[player] = os.clock()
end

local function getPunchAnim(char,jump)
	local combo = char:GetAttribute("Combo")
	local punchAnims = animations:WaitForChild("Combat"):GetChildren()
	local extraAnims = animations:WaitForChild("Extra")

	local inAir = char.Humanoid.FloorMaterial == Enum.Material.Air

	local currAnim

	if combo == MAX_COMBO then
		if not inAir then
			if not jump then
				currAnim = punchAnims[combo]
			else
				currAnim = extraAnims:WaitForChild("UpperCut")
				
			end

		else
			currAnim = extraAnims:WaitForChild("DownSlam")
			
		end
	else
		currAnim = punchAnims[combo]
	end



	return currAnim
end

local function stopAnims(object)
	for i,v in pairs(object:GetPlayingAnimationTracks()) do
		v:Stop()
	end
end

punchRemote.OnServerEvent:Connect(function(player,jump)
	local char = player.Character
	local hum = char:WaitForChild("Humanoid")
	local humRp = char:WaitForChild("HumanoidRootPart")

	local attacking = char:GetAttribute("Attacking")
	local punching = char:GetAttribute("Punch")
	local stunned = char:GetAttribute("Stunned")
	local blocking = char:GetAttribute("Blocking")

	if attacking or punching or stunned or blocking then return end

	char:SetAttribute("Attacking",true)
	char:SetAttribute("Punch",true)

	changeCombo(char)
	stopAnims(hum)

	hum.WalkSpeed = 10
	hum.JumpPower = 0

	local ragdoll = false
	local downSlam = false
	local upperCut = false

	local newHitbox = TomatoHitbox.new()
	newHitbox.Size = Vector3.new(6,6,6)
	newHitbox.CFrame = humRp
	newHitbox.Offset = CFrame.new(0,0,-2.5)

	newHitbox.onTouch = function(enemyHum)
		if enemyHum ~= hum then
			if enemyHum.Parent:GetAttribute("Ragdolled") or enemyHum.Health <= 0 then return end

			local enemyHumRp = enemyHum.Parent.HumanoidRootPart

			local center = (enemyHumRp.Position - humRp.Position).Unit
			local strength = 10

			if char:GetAttribute("Combo") == MAX_COMBO then
				ragdoll = true
				strength = 35
				
			end

			local knockback = center * strength

			if downSlam then
				enemyHumRp.CFrame = enemyHumRp.CFrame * CFrame.new(0,-2,0) * CFrame.Angles(math.rad(90),0,0)
				local Rock = rp:WaitForChild("RockScript"):Clone()
				Rock.Parent = game.Workspace.FX
				Rock.CFrame = enemyHumRp.CFrame * CFrame.new(0,2,0)
				DownSlamSound:Play()

				knockback = nil
			elseif upperCut then
				local uppercutVelocity = Instance.new("BodyVelocity")
				uppercutVelocity.P = 5000
				uppercutVelocity.MaxForce = Vector3.new(0,math.huge,0)
				uppercutVelocity.Velocity = Vector3.new(0,35,0)
				uppercutVelocity.Parent = enemyHumRp

				debris:AddItem(uppercutVelocity,0.2)

				knockback = nil
			end

			hitService.Hit(enemyHum,2,1.25,knockback,ragdoll,2)

			if char:GetAttribute("Combo") ~= MAX_COMBO then
				local bv = Instance.new("BodyVelocity")
				bv.MaxForce = Vector3.new(math.huge,0,math.huge)
				bv.P = 50000
				bv.Velocity = knockback
				bv.Parent = humRp

				debris:AddItem(bv,0.2)
			end


		end
	end

	local combatAnim = getPunchAnim(char,jump)

	local playPunchAnim = hum:LoadAnimation(combatAnim)

	playPunchAnim.KeyframeReached:Connect(function(kf)
		if kf == "Hit" then
			char:SetAttribute("Attacking",false)

			if combatAnim.Name == "DownSlam" then
				downSlam = true
				
			elseif combatAnim.Name == "UpperCut" then
				upperCut = true
			end

			task.spawn(function()
				if not char:GetAttribute("Stunned") then
					newHitbox:Start()
					task.wait(0.1)
					newHitbox:Stop()
					newHitbox:Destroy()
					
				else
					newHitbox:Stop()
					newHitbox:Destroy()
					
				end

			end)


			if char:GetAttribute("Combo") == MAX_COMBO then
				task.wait(1)
			end

			char:SetAttribute("Punch",false)

		end
	end)

	playPunchAnim.Stopped:Connect(function()
		hum.WalkSpeed = 16
		hum.JumpPower = 50
	end)

	playPunchAnim:Play()

end)

i want to get attacker humanoidRootPart

function module.Hit(enemyHumanoid,damage,stunDuration,knockback,attacker,ragdoll,ragdollDuration, blockBreak, player)
	
	local attackerHumRp = attacker:WaitForChild("HumanoidRootPart")
	local enemy = enemyHumanoid.Parent
	local enemyHumRp = enemyHumanoid.Parent.HumanoidRootPart
	local enemyBlocking = enemy:GetAttribute("Blocking")
	if damage then
		enemyHumanoid:TakeDamage(4)
	end

	if not blockBreak then
		if enemyBlocking then
			local direction = (attackerHumRp - enemyHumRp.Position).unit
			local enemyLook = enemyHumRp.CFrame.LookVector
			
			local dot = direction:Dot(enemyLook)
			
			if dot > -0.4  then
				print("Blocked!!")
				return
			else
				enemy:SetAttribute("Blocking",false)
			end
		end
	end

you never supplied the attacker variable to the function
you skipped over it and went straight to the ragdoll

how i can get attacker humanoidrootpart