Right, so I'm trying to make swords here. As you can see from the title, I'm using module scripts to deal with all the logic or whatever. Now, I have a region3 defined in my module script, and if a player is in that region3 I want them not to take damage. Now, CFrames, Region3s, all that kind of stuff has always been a weak side to me, so I found online some code for that and I modified it a bit to match what I wanted. Now with that, I tested the thing on a local server and whether I was in the region or not it would still kill the player. I need help with that, thanks.

This is my function inside of the module script:

function module.onTouchDamage(h)
	local afkregion = Region3.new(game.Workspace.afkregion1.Position, game.Workspace.afkregion2.Position)
	local isPlayerInRegion
	
	if h.Parent:FindFirstChild("Humanoid") then
	
		local char = h.Parent 
		local whitelist = char:GetChildren()
		----------------------------------------
	
		local partsInRegion = game.Workspace:FindPartsInRegion3WithWhiteList(afkregion, whitelist)
		
		if #partsInRegion >= 1 then
			
			isPlayerInRegion = true
			print(#partsInRegion)
			print(partsInRegion[1].Name)
		
		else
			
			isPlayerInRegion = false
			
		end
	
		----------------------------------------
		
		if isPlayerInRegion == false and char:WaitForChild("CanTakeDamage").Value == true then
			
			return true		
			
		else
			
			return false
				
		end	
	end	
end

This is a part my of script inside the sword.

sword.Touched:Connect(function(h)
	
	if h.Parent:FindFirstChild("Humanoid")  then
		
		local char = h.Parent
		local player = sword.Parent.Parent.Parent --Ik i used 4 parents in a row but you get it
		
		if char.Name ~= player.Name then
			
			local doDamage = module.onTouchDamage(h)
		
			print(doDamage)
		
			if doDamage == true then
			
				char.Humanoid:TakeDamage(dmg.Value)
			
			end
		end
	end	
end)

All variables are defined