[print] ===== Zone -> Zone [print] local tbl_upv_1 = {} tbl_upv_1.__index = tbl_upv_1 local tbl_upv_2 = {} tbl_upv_2.Zones = {} tbl_upv_2.__index = tbl_upv_2 local u1 = false local Blacklist_upv_1 = require(script.Blacklist) local new_1 = Instance.new local u2 = new_1("BindableEvent") local u3 = Instance.new("BindableEvent") tbl_upv_2.ZoneCollectedPlayer = u2.Event tbl_upv_2.ZoneLostPlayer = u3.Event local function DeepCopy(a1) --[[ name: DeepCopy line: 16 upvalues: DeepCopy (copy, index: 1) ]] local tbl_3 = {} for key_1, value_1 in a1 do if key_1 == "__index" then continue end if typeof(value_1) == "table" then value_1 = DeepCopy(value_1) end tbl_3[key_1] = value_1 end return tbl_3 end function tbl_upv_2.new(a1) --[[ name: new line: 31 upvalues: tbl_upv_1 (copy, index: 1) tbl_upv_2 (copy, index: 2) u1 (ref, index: 3) u2 (copy, index: 4) u3 (copy, index: 5) DeepCopy (copy, index: 6) ]] local v1 = setmetatable({LastUpdate = 0, Zone = a1, Players = {}}, tbl_upv_1) v1.__index = v1 if #tbl_upv_2.Zones == 1 and not (u1) then u1 = true task.spawn( function() --[[ line: 45 upvalues: tbl_upv_2 (copy, index: 1) u2 (copy, index: 2) u3 (copy, index: 3) DeepCopy (copy, index: 4) ]] while task.wait(0.1) do for _, value_2 in next, tbl_upv_2.Zones do if value_2.PlayerEnteredCallback or not value_2.PlayerEnteredCallback and (value_2.PlayerExitedCallback) then local v2 = value_2:GetPlayers() for v3, value_3 in next, v2 do if table.find(value_2.Players, value_3) then continue end if value_2.PlayerEnteredCallback then u2:Fire(value_2.Zone, value_3) task.spawn(value_2.PlayerEnteredCallback, value_3) end end for v4, value_4 in next, value_2.Players do if table.find(v2, value_4) then continue end if value_2.PlayerExitedCallback then u3:Fire(value_2.Zone, value_4) task.spawn(value_2.PlayerExitedCallback, value_4) end end value_2.Players = DeepCopy(v2) table.clear(v2) end end end end ) end table.insert(tbl_upv_2.Zones, v1) return v1 end function tbl_upv_2.GetPlayerInZone(a1, a2) --[[ name: GetPlayerInZone line: 85 upvalues: tbl_upv_2 (copy, index: 1) ]] for _, value_5 in next, tbl_upv_2.Zones do if value_5.Zone ~= a1 then continue end return value_5:FindPlayer(a2) end return nil end function tbl_upv_1.GetParts(a1, a2) --[[ name: GetParts line: 95 ]] if not (a1.LastParts) or tick() - a1.LastUpdate > 0.2 then a1.LastUpdate = tick() a1.LastParts = workspace:GetPartBoundsInBox(a1.Zone.CFrame, a1.Zone.Size, a2 or nil) end return a1.LastParts end function tbl_upv_1.GetPlayers(a1) --[[ name: GetPlayers line: 104 upvalues: Blacklist_upv_1 (copy, index: 1) ]] local tbl_4 = {} for _, value_6 in next, a1:GetParts(Blacklist_upv_1.GetParams()) do local Parent_1 = value_6.Parent local v3 = Parent_1 and (Parent_1:FindFirstChild("Humanoid")) if not (v3) then continue end local v4 = game.Players:GetPlayerFromCharacter(Parent_1) if not (v4) then continue end if not (table.find(tbl_4, v4)) then table.insert(tbl_4, v4) end end return tbl_4 end function tbl_upv_1.FindPlayer(a1, a2) --[[ name: FindPlayer line: 124 ]] return table.find(a1.Players, a2) end function tbl_upv_1.OnPlayerEntered(a1, a2) --[[ name: OnPlayerEntered line: 128 ]] a1.PlayerEnteredCallback = a2 end function tbl_upv_1.OnPlayerExited(a1, a2) --[[ name: OnPlayerExited line: 132 ]] a1.PlayerExitedCallback = a2 end game.Players.PlayerRemoving:Connect( function(a1) --[[ line: 136 upvalues: tbl_upv_2 (copy, index: 1) ]] local v5 = nil for _, value_7 in next, tbl_upv_2.Zones do v5 = table.find(value_7.Players, a1) if not (v5) then continue end table.remove(value_7.Players, v5) return end end ) return tbl_upv_2 [print] ===== OLDZONE -> OLDZONE [print] local Players_1 = game:GetService("Players") local RunService_upv_1 = game:GetService("RunService") local Heartbeat_upv_1 = RunService_upv_1.Heartbeat local u1 = RunService_upv_1:IsClient() and (Players_1.LocalPlayer) local _ = game:GetService("ReplicatedStorage") local HttpService_upv_1 = game:GetService("HttpService") local enums_upv_1 = require(script.Enum).enums local Janitor_upv_1 = require(script.Janitor) local Signal_upv_1 = require(script.Signal) local ZonePlusReference_1 = require(script.ZonePlusReference) local v1 = ZonePlusReference_1.getObject() local ZoneController_1 = script.ZoneController local Tracker_upv_1 = ZoneController_1.Tracker local CollectiveWorldModel_upv_1 = ZoneController_1.CollectiveWorldModel local u2 = require(ZoneController_1) local v2 = ((game:GetService("RunService"):IsClient()) and "Client") or "Server" local v3 = v1 and (v1:FindFirstChild(v2)) if v3 then return require(v1.Value) end local tbl_upv_1 = {} tbl_upv_1.__index = tbl_upv_1 if not (v3) then ZonePlusReference_1.addToReplicatedStorage() end tbl_upv_1.enum = enums_upv_1 function tbl_upv_1.new(a1) --[[ name: new line: 34 upvalues: tbl_upv_1 (copy, index: 1) enums_upv_1 (copy, index: 2) Janitor_upv_1 (copy, index: 3) HttpService_upv_1 (copy, index: 4) u2 (copy, index: 5) Signal_upv_1 (copy, index: 6) u1 (copy, index: 7) ]] local tbl_upv_2 = {} setmetatable(tbl_upv_2, tbl_upv_1) local ty_1 = typeof(a1) if ty_1 ~= "table" and ty_1 ~= "Instance" then error("The zone container must be a model, folder, basepart or table!") end tbl_upv_2.accuracy = enums_upv_1.Accuracy.High tbl_upv_2.autoUpdate = true tbl_upv_2.respectUpdateQueue = true local v4 = Janitor_upv_1.new() tbl_upv_2.janitor = v4 tbl_upv_2._updateConnections = v4:add(Janitor_upv_1.new(), "destroy") tbl_upv_2.container = a1 tbl_upv_2.zoneParts = {} tbl_upv_2.overlapParams = {} tbl_upv_2.region = nil tbl_upv_2.volume = nil tbl_upv_2.boundMin = nil tbl_upv_2.boundMax = nil tbl_upv_2.recommendedMaxParts = nil tbl_upv_2.zoneId = HttpService_upv_1:GenerateGUID() tbl_upv_2.activeTriggers = {} tbl_upv_2.occupants = {} tbl_upv_2.trackingTouchedTriggers = {} tbl_upv_2.enterDetection = enums_upv_1.Detection.Centre tbl_upv_2.exitDetection = enums_upv_1.Detection.Centre tbl_upv_2._currentEnterDetection = nil tbl_upv_2._currentExitDetection = nil tbl_upv_2.totalPartVolume = 0 tbl_upv_2.allZonePartsAreBlocks = true tbl_upv_2.trackedItems = {} tbl_upv_2.settingsGroupName = nil tbl_upv_2.worldModel = workspace tbl_upv_2.onItemDetails = {} tbl_upv_2.itemsToUntrack = {} u2.updateDetection(tbl_upv_2) tbl_upv_2.updated = v4:add(Signal_upv_1.new(), "destroy") local tbl_3 = {"player", "part", "localPlayer", "item"} local tbl_4 = {"entered", "exited"} local u3, touchedConnectionActions_upv_1 for _, value_upv_1 in pairs(tbl_3) do u3 = 0 touchedConnectionActions_upv_1 = 0 for v7, value_2 in pairs(tbl_4) do local v5 = v4:add(Signal_upv_1.new(true), "destroy") local u4 = value_2:sub(1, 1):upper() .. value_2:sub(2) tbl_upv_2[value_upv_1 .. u4] = v5 v5.connectionsChanged:Connect( function(a2) --[[ line: 105 upvalues: value_upv_1 (copy, index: 1) u1 (copy, index: 2) u4 (copy, index: 3) touchedConnectionActions_upv_1 (ref, index: 4) u3 (ref, index: 5) u2 (copy, index: 6) tbl_upv_2 (copy, index: 7) ]] if value_upv_1 == "localPlayer" and not (u1) and a2 == 1 then error(("Can only connect to 'localPlayer%s' on the client!"):format(u4)) end touchedConnectionActions_upv_1 = u3 u3 = u3 + a2 if (touchedConnectionActions_upv_1 ~= 0 or not (u3 > 0)) and touchedConnectionActions_upv_1 > 0 then if u3 ~= 0 then return end u2._deregisterConnection(tbl_upv_2, value_upv_1) end u2._registerConnection(tbl_upv_2, value_upv_1, u4) end ) end end tbl_upv_1.touchedConnectionActions = {} for _, value_3 in pairs(tbl_3) do u3 = "_%sTouchedZone" local v6 = u3:format(value_3) u3 = tbl_upv_2[v6] if u3 then local trackingTouchedTriggers_1 = tbl_upv_2.trackingTouchedTriggers trackingTouchedTriggers_1[value_3] = {} touchedConnectionActions_upv_1 = tbl_upv_1.touchedConnectionActions touchedConnectionActions_upv_1[value_3] = function(a3) --[[ line: 129 upvalues: u3 (copy, index: 1) tbl_upv_2 (copy, index: 2) ]] u3(tbl_upv_2, a3) end end end tbl_upv_2:_update() u2._registerZone(tbl_upv_2) v4:add( function() --[[ line: 140 upvalues: u2 (copy, index: 1) tbl_upv_2 (copy, index: 2) ]] u2._deregisterZone(tbl_upv_2) end, true ) return tbl_upv_2 end function tbl_upv_1.fromRegion(a1, a2) --[[ name: fromRegion line: 147 upvalues: tbl_upv_1 (copy, index: 1) ]] local u5 = Instance.new("Model") local function createCube(a3, a4) --[[ name: createCube line: 150 upvalues: createCube (copy, index: 1) u5 (copy, index: 2) ]] if not (a4.X > 2024) and not (a4.Y > 2024) and not (a4.Z > 2024) then local v7 = Instance.new("Part") v7.CFrame = a3 v7.Size = a4 v7.Anchored = true v7.Parent = u5 return end local v8 = a4 * 0.25 local v9 = a4 * 0.5 createCube(a3 * CFrame.new(-v8.X, -v8.Y, -v8.Z), v9) createCube(a3 * CFrame.new(-v8.X, -v8.Y, v8.Z), v9) createCube(a3 * CFrame.new(-v8.X, v8.Y, -v8.Z), v9) createCube(a3 * CFrame.new(-v8.X, v8.Y, v8.Z), v9) createCube(a3 * CFrame.new(v8.X, -v8.Y, -v8.Z), v9) createCube(a3 * CFrame.new(v8.X, -v8.Y, v8.Z), v9) createCube(a3 * CFrame.new(v8.X, v8.Y, -v8.Z), v9) createCube(a3 * CFrame.new(v8.X, v8.Y, v8.Z), v9) end createCube(a1, a2) local v10 = tbl_upv_1.new(u5) v10:relocate() return v10 end function tbl_upv_1._calculateRegion(a1, a2, a3) --[[ name: _calculateRegion line: 179 ]] local tbl_5 = {} tbl_5.Min = {} tbl_5.Max = {} for key_upv_1, value_4 in pairs(tbl_5) do value_4.Values = {} function value_4.parseCheck(a4, a5) --[[ name: parseCheck line: 183 upvalues: key_upv_1 (copy, index: 1) ]] if key_upv_1 == "Min" then return a4 <= a5 elseif key_upv_1 == "Max" then return a5 <= a4 end end function value_4.parse(a6, a7) --[[ name: parse line: 190 ]] for key_2, value_5 in pairs(a7) do if a6.parseCheck(value_5, a6.Values[key_2] or value_5) then a6.Values[key_2] = value_5 end end end end for _, value_6 in pairs(a2) do local v11 = value_6.Size * 0.5 local tbl_6 = {value_6.CFrame * CFrame.new(-v11.X, -v11.Y, -v11.Z), value_6.CFrame * CFrame.new(-v11.X, -v11.Y, v11.Z), value_6.CFrame * CFrame.new(-v11.X, v11.Y, -v11.Z), value_6.CFrame * CFrame.new(-v11.X, v11.Y, v11.Z), value_6.CFrame * CFrame.new(v11.X, -v11.Y, -v11.Z), value_6.CFrame * CFrame.new(v11.X, -v11.Y, v11.Z), value_6.CFrame * CFrame.new(v11.X, v11.Y, -v11.Z), value_6.CFrame * CFrame.new(v11.X, v11.Y, v11.Z)} for v18, value_7 in pairs(tbl_6) do local v12, v13, v14 = value_7:GetComponents() local tbl_7 = {v12, v13, v14} tbl_5.Min:parse(tbl_7) tbl_5.Max:parse(tbl_7) end end local tbl_8 = {} local tbl_9 = {} local function roundToFour(a8) --[[ name: roundToFour line: 222 ]] return math.floor((a8 + 2) / 4) * 4 end local v15 = nil for key_3, value_8 in pairs(tbl_5) do for _, value_9 in pairs(value_8.Values) do local v16 = ((key_3 == "Min") and tbl_8) or tbl_9 if a3 then v15 = value_9 else v15 = math.floor(((value_9 + (((key_3 ~= "Min") and 2) or -2)) + 2) / 4) * 4 end table.insert(v16, v15) end end roundToFour = Vector3.new(unpack(tbl_8)) local v17 = Vector3.new(unpack(tbl_9)) return Region3.new(roundToFour, v17), roundToFour, v17 end function tbl_upv_1._displayBounds(a1) --[[ name: _displayBounds line: 245 ]] if not (a1.displayBoundParts) then a1.displayBoundParts = true local tbl_10 = {} tbl_10.BoundMin = a1.boundMin tbl_10.BoundMax = a1.boundMax for key_4, value_10 in pairs(tbl_10) do local v18 = Instance.new("Part") v18.Anchored = true v18.CanCollide = false v18.Transparency = 0.5 v18.Size = Vector3.new(1, 1, 1) v18.Color = Color3.fromRGB(255, 0, 0) v18.CFrame = CFrame.new(value_10) v18.Name = key_4 v18.Parent = workspace a1.janitor:add(v18, "Destroy") end end end function tbl_upv_1._update(a1) --[[ name: _update line: 264 upvalues: RunService_upv_1 (copy, index: 1) ]] local v19 = a1.container local tbl_11 = {} local u6 = 0 a1._updateConnections:clean() local v20 = typeof(v19) local tbl_12 = {} if v20 == "table" then for _, value_11 in pairs(v19) do if value_11:IsA("BasePart") then table.insert(tbl_11, value_11) end end elseif v20 == "Instance" then if v19:IsA("BasePart") then table.insert(tbl_11, v19) else table.insert(tbl_12, v19) for _, value_12 in pairs(v19:GetDescendants()) do if value_12:IsA("BasePart") then table.insert(tbl_11, value_12) else table.insert(tbl_12, value_12) end end end end a1.zoneParts = tbl_11 a1.overlapParams = {} v20 = true for _, value_upv_13 in pairs(tbl_11) do local v34, v22 = pcall( function() --[[ line: 298 upvalues: value_upv_13 (copy, index: 1) ]] return value_upv_13.Shape.Name end ) if v22 ~= "Block" then v20 = false end end a1.allZonePartsAreBlocks = v20 local v23 = OverlapParams.new() v23.FilterType = Enum.RaycastFilterType.Include v23.MaxParts = #tbl_11 v23.FilterDescendantsInstances = tbl_11 a1.overlapParams.zonePartsWhitelist = v23 local v24 = OverlapParams.new() v24.FilterType = Enum.RaycastFilterType.Exclude v24.FilterDescendantsInstances = tbl_11 a1.overlapParams.zonePartsIgnorelist = v24 local function update() --[[ name: update line: 318 upvalues: a1 (copy, index: 1) u6 (ref, index: 2) RunService_upv_1 (copy, index: 3) ]] if a1.autoUpdate then local v25 = os.clock() if a1.respectUpdateQueue then u6 = u6 + 1 v25 = v25 + 0.1 end local _ = nil local v26 = RunService_upv_1.Heartbeat:Connect(function() end) _ = v26 end end v19 = {"Size", "Position"} local function verifyDefaultCollision(a2) --[[ name: verifyDefaultCollision line: 340 ]] if a2.CollisionGroupId == 0 then return end error("Zone parts must belong to the 'Default' (0) CollisionGroup! Consider using zone:relocate() if you wish to move zones outside of workspace to prevent them interacting with other parts.") end for _, value_upv_14 in pairs(tbl_11) do for v35, value_15 in pairs(v19) do a1._updateConnections:add(value_upv_14:GetPropertyChangedSignal(value_15):Connect(update), "Disconnect") end if value_upv_14.CollisionGroupId ~= 0 then error("Zone parts must belong to the 'Default' (0) CollisionGroup! Consider using zone:relocate() if you wish to move zones outside of workspace to prevent them interacting with other parts.") end a1._updateConnections:add( value_upv_14:GetPropertyChangedSignal("CollisionGroupId"):Connect( function() --[[ line: 350 upvalues: value_upv_14 (copy, index: 1) ]] if value_upv_14.CollisionGroupId == 0 then return end error("Zone parts must belong to the 'Default' (0) CollisionGroup! Consider using zone:relocate() if you wish to move zones outside of workspace to prevent them interacting with other parts.") end ), "Disconnect" ) end v19 = {"ChildAdded", "ChildRemoved"} for _, v27 in pairs(tbl_12) do for v36, value_16 in pairs(v19) do a1._updateConnections:add( a1.container[value_16]:Connect( function(a3) --[[ line: 357 upvalues: a1 (copy, index: 1) u6 (ref, index: 2) RunService_upv_1 (copy, index: 3) ]] if not a3:IsA("BasePart") then return end if a1.autoUpdate then local u7 = os.clock() if a1.respectUpdateQueue then u6 = u6 + 1 u7 = u7 + 0.1 end local u8 = nil local v28 = RunService_upv_1.Heartbeat:Connect( function() --[[ line: 326 upvalues: u7 (ref, index: 1) u8 (ref, index: 2) a1 (copy, index: 3) u6 (ref, index: 4) ]] local v29 = os.clock() if not (u7 <= v29) then return end u8:Disconnect() if a1.respectUpdateQueue then u6 = u6 - 1 end if u6 ~= 0 or not a1.zoneId then return end a1:_update() end ) u8 = v28 end end ), "Disconnect" ) end end local v30, v31, v32 = a1:_calculateRegion(tbl_11) local v33 = a1:_calculateRegion(tbl_11, true) a1.region = v30 a1.exactRegion = v33 a1.boundMin = v31 a1.boundMax = v32 local Size_1 = v30.Size a1.volume = (Size_1.X * Size_1.Y) * Size_1.Z a1:_updateTouchedConnections() a1.updated:Fire() end function tbl_upv_1._updateOccupants(a1, a2, a3) --[[ name: _updateOccupants line: 393 ]] local v34 = a1.occupants[a2] if not (v34) then v34 = {} a1.occupants[a2] = v34 end local tbl_13 = {} for key_5, value_17 in pairs(v34) do local v35 = a3[key_5] if v35 == nil or v35 ~= value_17 then v34[key_5] = nil if not (tbl_13.exited) then tbl_13.exited = {} end table.insert(tbl_13.exited, key_5) end end for key_6, _ in pairs(a3) do if v34[key_6] ~= nil then continue end v34[key_6] = key_6:IsA("Player") and key_6.Character or true if not (tbl_13.entered) then tbl_13.entered = {} end table.insert(tbl_13.entered, key_6) end return tbl_13 end function tbl_upv_1._formTouchedConnection(a1, a2) --[[ name: _formTouchedConnection line: 423 upvalues: Janitor_upv_1 (copy, index: 1) ]] local v37 = "_touchedJanitor" .. a2 local v38 = a1[v37] if v38 then v38:clean() else a1[v37] = a1.janitor:add(Janitor_upv_1.new(), "destroy") end a1:_updateTouchedConnection(a2) end function tbl_upv_1._updateTouchedConnection(a1, a2) --[[ name: _updateTouchedConnection line: 435 ]] local v39 = a1["_touchedJanitor" .. a2] if not v39 then return end for _, value_18 in pairs(a1.zoneParts) do v39:add(value_18.Touched:Connect(a1.touchedConnectionActions[a2], a1), "Disconnect") end end function tbl_upv_1._updateTouchedConnections(a1) --[[ name: _updateTouchedConnections line: 444 ]] for key_7, _ in pairs(a1.touchedConnectionActions) do local v40 = a1["_touchedJanitor" .. key_7] if v40 then v40:cleanup() a1:_updateTouchedConnection(key_7) end end end function tbl_upv_1._disconnectTouchedConnection(a1, a2) --[[ name: _disconnectTouchedConnection line: 455 ]] local v41 = "_touchedJanitor" .. a2 local v42 = a1[v41] if not v42 then return end v42:cleanup() a1[v41] = nil end local function round(a1, a2) --[[ name: round line: 464 ]] return math.round(a1 * (10 ^ a2)) * (10 ^ -a2) end function tbl_upv_1._partTouchedZone(a1, a2) --[[ name: _partTouchedZone line: 467 upvalues: Janitor_upv_1 (copy, index: 1) Heartbeat_upv_1 (copy, index: 2) enums_upv_1 (copy, index: 3) ]] local part_upv_1 = a1.trackingTouchedTriggers.part if part_upv_1[a2] then return end local u9 = 0 local u10 = false local Position_upv_1 = a2.Position local u11 = os.clock() local u12 = a1.janitor:add(Janitor_upv_1.new(), "destroy") part_upv_1[a2] = u12 local tbl_14 = {Seat = true, VehicleSeat = true} local tbl_15 = {HumanoidRootPart = true} if not (tbl_14[a2.ClassName]) and tbl_15[a2.Name] then a2.CanTouch = false end local u13 = math.round(((a2.Size.X * a2.Size.Y) * a2.Size.Z) * 1e+05) * 1e-05 a1.totalPartVolume = a1.totalPartVolume + u13 u12:add( Heartbeat_upv_1:Connect( function() --[[ line: 485 upvalues: u9 (ref, index: 1) enums_upv_1 (copy, index: 2) a1 (copy, index: 3) a2 (copy, index: 4) u10 (ref, index: 5) Position_upv_1 (ref, index: 6) u11 (ref, index: 7) u12 (copy, index: 8) ]] local v43 = os.clock() if u9 <= v43 then local v44 = enums_upv_1.Accuracy.getProperty(a1.accuracy) u9 = v43 + v44 local v45 = a1:findPoint(a2.CFrame) or (a1:findPart(a2)) if u10 then if (v45) then return end u10 = false Position_upv_1 = a2.Position u11 = os.clock() a1.partExited:Fire(a2) elseif v45 then u10 = true a1.partEntered:Fire(a2) elseif ((a2.Position - Position_upv_1).Magnitude > 1.5) and (v44 <= v43 - u11) then u12:cleanup() end end end ), "Disconnect" ) u12:add( function() --[[ line: 516 upvalues: part_upv_1 (copy, index: 1) a2 (copy, index: 2) a1 (copy, index: 3) u13 (copy, index: 4) ]] part_upv_1[a2] = nil a2.CanTouch = true a1.totalPartVolume = math.round((a1.totalPartVolume - u13) * 1e+05) * 1e-05 end, true ) end local tbl_upv_16 = {} tbl_upv_16.Ball = function(a1) --[[ line: 524 ]] return "GetPartBoundsInRadius", {a1.Position, a1.Size.X} end tbl_upv_16.Block = function(a1) --[[ line: 527 ]] return "GetPartBoundsInBox", {a1.CFrame, a1.Size} end tbl_upv_16.Other = function(a1) --[[ line: 530 ]] return "GetPartsInPart", {a1} end function tbl_upv_1._getRegionConstructor(a1, a2, a3) --[[ name: _getRegionConstructor line: 534 upvalues: tbl_upv_16 (copy, index: 1) ]] local success_1, v46 = pcall( function() --[[ line: 535 upvalues: a2 (copy, index: 1) ]] return a2.Shape.Name end ) local v47 = nil local v48 = nil if success_1 and a1.allZonePartsAreBlocks then local _ = tbl_upv_16[v46] v47 = not tbl_upv_16[v46] or tbl_upv_16[v46](a2) end if not v47 then local tbl_17 = {a2} v48, v47 = tbl_17, "GetPartsInPart" end if a3 then table.insert(v48, a3) end return v47, v48 end function tbl_upv_1.findLocalPlayer(a1) --[[ name: findLocalPlayer line: 555 upvalues: u1 (copy, index: 1) ]] if not (u1) then error("Can only call 'findLocalPlayer' on the client!") end return a1:findPlayer(u1) end function tbl_upv_1._find(a1, a2, a3) --[[ name: _find line: 562 upvalues: u2 (copy, index: 1) ]] u2.updateDetection(a1) for _, value_19 in pairs(u2.getTouchingZones(a3, false, a1._currentEnterDetection, u2.trackers[a2])) do if value_19 ~= a1 then continue end return true end return false end function tbl_upv_1.findPlayer(a1, a2) --[[ name: findPlayer line: 574 ]] local Character_1 = a2.Character local v49 = Character_1 and (Character_1:FindFirstChildOfClass("Humanoid")) if v49 then return a1:_find("player", a2.Character) end return false end function tbl_upv_1.findItem(a1, a2) --[[ name: findItem line: 583 ]] return a1:_find("item", a2) end function tbl_upv_1.findPart(a1, a2) --[[ name: findPart line: 587 ]] local v50, v51 = a1:_getRegionConstructor(a2, a1.overlapParams.zonePartsWhitelist) local v52 = a1.worldModel[v50](a1.worldModel, unpack(v51)) if #v52 > 0 then return true, v52 end return false end function tbl_upv_1.getCheckerPart(a1) --[[ name: getCheckerPart line: 597 upvalues: u2 (copy, index: 1) ]] local v53 = a1.checkerPart if not (v53) then local v54 = a1.janitor:add(Instance.new("Part"), "Destroy") v54.Size = Vector3.new(0.10000000149011612, 0.10000000149011612, 0.10000000149011612) v54.Name = "ZonePlusCheckerPart" v54.Anchored = true v54.Transparency = 1 v54.CanCollide = false a1.checkerPart = v54 v53 = v54 end local v55 = a1.worldModel if v55 == workspace then v55 = u2.getWorkspaceContainer() end if v53.Parent ~= v55 then v53.Parent = v55 end return v53 end function tbl_upv_1.findPoint(a1, a2) --[[ name: findPoint line: 618 ]] local v56 if typeof(a2) ~= "Vector3" then v56 = a2 else v56 = CFrame.new(a2) end local v57 = a1:getCheckerPart() v57.CFrame = v56 local v58, v59 = a1:_getRegionConstructor(v57, a1.overlapParams.zonePartsWhitelist) v57 = a1.worldModel[v58](a1.worldModel, unpack(v59)) if #v57 > 0 then return true, v57 end return false end function tbl_upv_1._getAll(a1, a2) --[[ name: _getAll line: 635 upvalues: u2 (copy, index: 1) ]] u2.updateDetection(a1) local tbl_18 = {} local v60 = u2._getZonesAndItems(a2, {self = true}, a1.volume, false, a1._currentEnterDetection)[a1] if v60 then for key_8, _ in pairs(v60) do table.insert(tbl_18, key_8) end end return tbl_18 end function tbl_upv_1.getPlayers(a1) --[[ name: getPlayers line: 648 ]] return a1:_getAll("player") end function tbl_upv_1.getItems(a1) --[[ name: getItems line: 652 ]] return a1:_getAll("item") end function tbl_upv_1.getParts(a1) --[[ name: getParts line: 656 ]] local tbl_19 = {} if a1.activeTriggers.part then for key_9, _ in pairs(a1.trackingTouchedTriggers.part) do table.insert(tbl_19, key_9) end else for _, value_20 in pairs(a1.worldModel:GetPartBoundsInBox(a1.region.CFrame, a1.region.Size, a1.overlapParams.zonePartsIgnorelist)) do if a1:findPart(value_20) then table.insert(tbl_19, value_20) end end end return tbl_19 end function tbl_upv_1.getRandomPoint(a1) --[[ name: getRandomPoint line: 677 ]] local exactRegion_1 = a1.exactRegion local Size_2 = exactRegion_1.Size local CFrame_1 = exactRegion_1.CFrame local v61 = Random.new() local v62 = nil local v63 local v64 repeat v63 = CFrame_1 * CFrame.new(v61:NextNumber(-Size_2.X / 2, Size_2.X / 2), v61:NextNumber(-Size_2.Y / 2, Size_2.Y / 2), v61:NextNumber(-Size_2.Z / 2, Size_2.Z / 2)) local v65 v65, v64 = a1:findPoint(v63) if v65 then v62 = true end until v62 return v63.Position, v64 end function tbl_upv_1.setAccuracy(a1, a2) --[[ name: setAccuracy line: 696 upvalues: enums_upv_1 (copy, index: 1) ]] local v66 = tonumber(a2) if v66 then local v67 = enums_upv_1.Accuracy.getName(v66) if not (v67) then error(("%s is an invalid enumId!"):format(v66)) end else v66 = enums_upv_1.Accuracy[a2] if not v66 then error(("'%s' is an invalid enumName!"):format(a2)) end end a1.accuracy = v66 end function tbl_upv_1.setDetection(a1, a2) --[[ name: setDetection line: 712 upvalues: enums_upv_1 (copy, index: 1) ]] local v68 = tonumber(a2) if v68 then local v69 = enums_upv_1.Detection.getName(v68) if not (v69) then error(("%s is an invalid enumId!"):format(v68)) end else v68 = enums_upv_1.Detection[a2] if not v68 then error(("'%s' is an invalid enumName!"):format(a2)) end end a1.enterDetection = v68 a1.exitDetection = v68 end function tbl_upv_1.trackItem(a1, a2) --[[ name: trackItem line: 729 upvalues: Janitor_upv_1 (copy, index: 1) Tracker_upv_1 (copy, index: 2) ]] local v70 = a2:IsA("BasePart") local v71 = false if not (v70) then v71 = a2:FindFirstChildOfClass("Humanoid") and a2:FindFirstChild("HumanoidRootPart") end assert(v70 or v71, "Only BaseParts or Characters/NPCs can be tracked!") if a1.trackedItems[a2] then return end if a1.itemsToUntrack[a2] then a1.itemsToUntrack[a2] = nil end local v73 = a1.janitor:add(Janitor_upv_1.new(), "destroy") local tbl_20 = {} tbl_20.janitor = v73 tbl_20.item = a2 tbl_20.isBasePart = v70 tbl_20.isCharacter = v71 a1.trackedItems[a2] = tbl_20 v73:add( a2.AncestryChanged:Connect( function() --[[ line: 754 upvalues: a2 (copy, index: 1) a1 (copy, index: 2) ]] if (a2:IsDescendantOf(game)) then return end a1:untrackItem(a2) end ), "Disconnect" ) require(Tracker_upv_1).itemAdded:Fire(tbl_20) end function tbl_upv_1.untrackItem(a1, a2) --[[ name: untrackItem line: 764 upvalues: Tracker_upv_1 (copy, index: 1) ]] local v74 = a1.trackedItems[a2] if v74 then v74.janitor:destroy() end a1.trackedItems[a2] = nil require(Tracker_upv_1).itemRemoved:Fire(v74) end function tbl_upv_1.bindToGroup(a1, a2) --[[ name: bindToGroup line: 775 upvalues: u2 (copy, index: 1) ]] a1:unbindFromGroup() local v75 = u2.getGroup(a2) or (u2.setGroup(a2)) v75._memberZones[a1.zoneId] = a1 a1.settingsGroupName = a2 end function tbl_upv_1.unbindFromGroup(a1) --[[ name: unbindFromGroup line: 782 upvalues: u2 (copy, index: 1) ]] if a1.settingsGroupName then local v76 = u2.getGroup(a1.settingsGroupName) if v76 then v76._memberZones[a1.zoneId] = nil end a1.settingsGroupName = nil end end function tbl_upv_1.relocate(a1) --[[ name: relocate line: 792 upvalues: CollectiveWorldModel_upv_1 (copy, index: 1) ]] if a1.hasRelocated then return end local v77 = require(CollectiveWorldModel_upv_1).setupWorldModel(a1) a1.worldModel = v77 a1.hasRelocated = true local v78 = a1.container if typeof(v78) == "table" then v78 = Instance.new("Folder") for _, value_21 in pairs(a1.zoneParts) do value_21.Parent = v78 end end a1.relocationContainer = a1.janitor:add(v78, "Destroy", "RelocationContainer") v78.Parent = v77 end function tbl_upv_1._onItemCallback(a1, a2, a3, a4, a5) --[[ name: _onItemCallback line: 813 ]] local v79 = a1.onItemDetails[a4] if not (v79) then v79 = {} a1.onItemDetails[a4] = v79 end if #v79 == 0 then a1.itemsToUntrack[a4] = true end table.insert(v79, a4) a1:trackItem(a4) local function triggerCallback() --[[ name: triggerCallback line: 825 upvalues: a5 (copy, index: 1) a1 (copy, index: 2) a4 (copy, index: 3) ]] a5() if not a1.itemsToUntrack[a4] then return end a1.itemsToUntrack[a4] = nil a1:untrackItem(a4) end if a1:findItem(a4) ~= a3 then local u14 = nil local v80 = a1[a2]:Connect( function(a6) --[[ line: 838 upvalues: u14 (ref, index: 1) a4 (copy, index: 2) a5 (copy, index: 3) a1 (copy, index: 4) ]] if not u14 or a6 ~= a4 then return end u14:Disconnect() u14 = nil a5() if not a1.itemsToUntrack[a4] then return end a1.itemsToUntrack[a4] = nil a1:untrackItem(a4) end ) u14 = v80 else a5() if not a1.itemsToUntrack[a4] then return end a1.itemsToUntrack[a4] = nil a1:untrackItem(a4) end end function tbl_upv_1.onItemEnter(a1, ...) --[[ name: onItemEnter line: 860 ]] a1:_onItemCallback("itemEntered", true, ...) end function tbl_upv_1.onItemExit(a1, ...) --[[ name: onItemExit line: 864 ]] a1:_onItemCallback("itemExited", false, ...) end function tbl_upv_1.destroy(a1) --[[ name: destroy line: 868 ]] a1:unbindFromGroup() a1.janitor:destroy() end tbl_upv_1.Destroy = tbl_upv_1.destroy return tbl_upv_1 [print] ===== NewSafeZone children ===== [print] ModuleScript OLDZONE (7 kids) [print] Script ProtectionNEW (0 kids) [print] ModuleScript Zone (1 kids) [print] Script Protection (0 kids) [print] ModuleScript Settings (0 kids) [print] Folder Zones (50 kids) [print] BillboardGui Shield (1 kids) [print] ===== zones list ===== [print] Part CraftZone size=65.12942504882812, 18.03225326538086, 78.55040740966797 transparent=1 [print] Part CraftZone size=37.46620559692383, 17.916732788085938, 36.60595703125 transparent=1 [print] Part CraftZone size=61.05891418457031, 23.68246841430664, 99.40400695800781 transparent=1 [print] Part CraftZone size=26.40940284729004, 13.040931701660156, 30.016334533691406 transparent=1 [print] Part CraftZone size=33.1887092590332, 10.222900390625, 19.949853897094727 transparent=1 [print] Part CraftZone size=9.072647094726562, 10.428784370422363, 15.961782455444336 transparent=1 [print] Part CraftZone size=188.18109130859375, 38.78607940673828, 86.93358612060547 transparent=1 [print] Part CraftZone size=34.60901641845703, 15.250679969787598, 55.74771499633789 transparent=1 [print] Part CraftZone size=22.27147674560547, 11.016684532165527, 51.546424865722656 transparent=1 [print] Part GunZone size=56.73350524902344, 13.555265426635742, 33.25177764892578 transparent=1 [print] Part CraftZone size=8.18366813659668, 8.66281509399414, 6.119999885559082 transparent=1 [print] Part CraftZone size=30.772098541259766, 25.113115310668945, 10.630000114440918 transparent=1 [print] Part CraftZone size=40.38756561279297, 8.772841453552246, 32.36000061035156 transparent=1 [print] Part CraftZone size=67.4279556274414, 12.763513565063477, 38.94895935058594 transparent=1 [print] Part CraftZone size=25.670000076293945, 8.76406478881836, 32.80392837524414 transparent=1 [print] Part CraftZone size=17.26366424560547, 16.279998779296875, 6.9997687339782715 transparent=1 [print] Part CraftZone size=130.08729553222656, 42.07533264160156, 74.17756652832031 transparent=1 [print] Part CraftZone size=93.45999908447266, 124.29625701904297, 149.62289428710938 transparent=1 [print] Part GunZone size=178.51947021484375, 230.53814697265625, 357.3248596191406 transparent=1 [print] Part CraftZone size=178.25782775878906, 17.064489364624023, 101.19954681396484 transparent=1 [print] Part CraftZone size=122.00272369384766, 52.08724594116211, 117.6826171875 transparent=1 [print] Part CraftZone size=80.55253601074219, 11.619999885559082, 61.98881912231445 transparent=1 [print] Part CraftZone size=42.303836822509766, 12.085189819335938, 37.527130126953125 transparent=1 [print] Part CraftZone size=132.61215209960938, 70.02953338623047, 98.08369445800781 transparent=1 [print] Part RealCraftZone size=144.68382263183594, 11.326658248901367, 125.60704040527344 transparent=1 [print] Part CraftZone size=23.689468383789062, 7.619999885559082, 70.95757293701172 transparent=1 [print] Part CraftZone size=19.998023986816406, 10.820752143859863, 15.024166107177734 transparent=1 [print] Part CraftZone size=31.22092056274414, 8.654202461242676, 37.175254821777344 transparent=1 [print] Part CraftZone size=85.70854187011719, 27.877052307128906, 78.05999755859375 transparent=1 [print] Part CraftZone size=16.277496337890625, 8.76406478881836, 30.486827850341797 transparent=1 [print] Part CraftZone size=20.152908325195312, 10.428784370422363, 22.590200424194336 transparent=1 [print] Part CraftZone size=166.7435760498047, 16.94106674194336, 81.0938491821289 transparent=1 [print] Part CraftZone size=88.93885803222656, 32.20532989501953, 127.52899169921875 transparent=1 [print] Part CraftZone size=18.631305694580078, 8.772841453552246, 33.91182327270508 transparent=1 [print] Part CraftZone size=39.727664947509766, 11.326658248901367, 111.08372497558594 transparent=1 [print] Part CraftZone size=36.96935272216797, 10.26552963256836, 22.30621337890625 transparent=1 [print] Part CraftZone size=85.649658203125, 8.76406478881836, 35.591407775878906 transparent=1 [print] Part CraftZone size=46.68310546875, 15.76861572265625, 31.399999618530273 transparent=1 [print] Part SecondGunShop1 size=0.07168299704790115, 2.407658576965332, 1.6192207336425781 transparent=1 [print] Part CraftZone size=154.15841674804688, 83.57418823242188, 128.69595336914062 transparent=1 [print] Part RiceZone size=89.50999450683594, 14.114280700683594, 74.68670654296875 transparent=1 [print] Part CraftZone size=28.413537979125977, 24.460142135620117, 86.66925811767578 transparent=1 [print] Part CraftZone size=63.13413619995117, 41.779823303222656, 85.86427307128906 transparent=1 [print] Part CraftZone size=60.99900436401367, 24.460142135620117, 33.67190933227539 transparent=1 [print] Part CraftZone size=217, 117.38499450683594, 260.5674133300781 transparent=1 [print] Part CraftZone size=51.83210754394531, 10.545079231262207, 22.641117095947266 transparent=1 [print] Part CraftZone size=51.51753616333008, 10.963702201843262, 18.04950714111328 transparent=1 [print] Part CraftZone size=63.444156646728516, 24.460142135620117, 3.3100204467773438 transparent=1 [print] Part CraftZone size=32.5470085144043, 24.460142135620117, 15.156152725219727 transparent=1 [print] Part CraftZone size=1.2237094640731812, 24.460142135620117, 102.02003479003906 transparent=1 [print] ===== jail zones ===== [print] Part PrisZone [print] Part BailPlayer [print] Part PrisZone2 [print] Part ReleaseJ [print] Part TurnSelf ✓ finished