Recently been trying to make a playarea script which will damage the player if he's out of that zone(inside the Part). I've done the script, though whenever I'm in the zone it starts lagging like crazy after some time. [Note: the zone/part also shrinks] :


        local Damage = 10 

        local Enabled = true

        function onTouch(hit) 
        Enabled = false
        local Character = hit.Parent
        local Player = game.Players:FindFirstChild(Character.Name)
        if not Character:findFirstChild("Humanoid") then return end
        if Player.PlayerGui:findFirstChild("WarnGui") then 
	Player.PlayerGui.WarnGui:Remove()
        end
        Enabled = true
        script.Parent.Area.TouchEnded:connect(function()
        if Enabled == true then
	Enabled = false
        local GUI = script.WarnGui:Clone()
        GUI.Parent = Player.PlayerGui
        while true do
        wait(1) 
        if Enabled == false then
        Character.Humanoid.Health = Character.Humanoid.Health - Damage
        else 
        break 
        end
        end
        end
        end)
        end
        script.Parent.Area.Touched:connect(onTouch)

2nd Script that makes the part/zone shrink:

    local Rate = script.Parent.Configuration.Rate.Value
    function shrink()
for i = 1, 1000 do
wait(Rate)
script.Parent.Area.Size = script.Parent.Area.Size - Vector3.new(1, 0, 1)
end
    end
    shrink()