CollisionGroups - Help needed

I know near nothing about CollisionGroups, so I found an open-sourced one and started editing it a bit and need some help.
The script currently will make you non-collidable to other players, but I’m looking to change it so it’ll depend on your health e.g. Over 5000 Health = Non-Collidable| 100 Health = Collidable (see lowest lines where I attempt this).
Anyone know how to fix this so the script functions how I’m aiming for?

 local PhysicsService = game:GetService("PhysicsService")
    local Players = game:GetService("Players")
     
    local playerCollisionGroupName = "Players"
    PhysicsService:CreateCollisionGroup(playerCollisionGroupName)
    PhysicsService:CollisionGroupSetCollidable(playerCollisionGroupName, playerCollisionGroupName, false)
     
    local previousCollisionGroups = {}
     
    local function setCollisionGroup(object)
      if object:IsA("BasePart") then
        previousCollisionGroups[object] = object.CollisionGroupId
        PhysicsService:SetPartCollisionGroup(object, playerCollisionGroupName)
      end
    end
     
    local function setCollisionGroupRecursive(object)
      setCollisionGroup(object)
     
      for _, child in ipairs(object:GetChildren()) do
        setCollisionGroupRecursive(child)
      end
    end
     
    local function resetCollisionGroup(object)
      local previousCollisionGroupId = previousCollisionGroups[object]
      if not previousCollisionGroupId then return end 
     
      local previousCollisionGroupName = PhysicsService:GetCollisionGroupName(previousCollisionGroupId)
      if not previousCollisionGroupName then return end
     
      PhysicsService:SetPartCollisionGroup(object, previousCollisionGroupName)
      previousCollisionGroups[object] = nil
    end
     
    local function onCharacterAdded(character)
      setCollisionGroupRecursive(character)
     
     -- character.DescendantAdded:Connect(setCollisionGroup)
     -- character.DescendantRemoving:Connect(resetCollisionGroup)
    end
     
    local function onPlayerAdded(player)
      player.CharacterAdded:Connect(onCharacterAdded)
    end
     
    Players.PlayerAdded:Connect(function(a)
    	a.CharacterAdded:connect(function(char)
    		char:FindFirstChild("Humanoid").Changed:connect(function(z)
    			if char.Humanoid.MaxHealth > 5000 then
    				onCharacterAdded(char)
    			else
    				resetCollisionGroup(char)
    			end
    		end)
    	end)
    end)
1 Like

I got it sorted by writing my own script, didn’t notice CollisionGroups are so easy Lol