Not a Low Quality map by Any means, There are Some Bad meshes, I believe its likely a bad mesh collision hull Where the player Stands Knee Deep in some areas of the Map. You should Be able to Fix this with this Command in Command prompt: -- ZC_FULL_MAP_COLLISION_REPAIR_V1.command.lua
-- Run in Roblox Studio Command Bar while NOT in Play mode.
--
-- Purpose:
-- Full repair pass for imported city/map meshes where players stand inside / through the visible ground.
--
-- What it does:
-- 1. Targets likely walkable MeshParts and UnionOperations by name.
-- 2. Sets collision settings safely over time.
-- 3. Uses PreciseConvexDecomposition where possible.
-- 4. Creates invisible collision filler plates for flat walkable map pieces.
-- 5. Shows ETA/progress in Output and a viewport BillboardGui marker.
--
-- IMPORTANT:
-- If your map is inside a specific folder/model, set ROOT below to that model.
-- Example:
-- local ROOT = workspace:WaitForChild("Streetz")
--
-- Default scans workspace.
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
if RunService:IsRunning() then
warn("[ZC Collision Repair] Stop Play Mode first. Run this from Studio Command Bar in Edit Mode.")
return
end
local REPAIR_TAG_ATTRIBUTE = "ZC_CollisionRepaired"
local FILLER_TAG_ATTRIBUTE = "ZC_GeneratedCollisionFiller"
local AUTO_CREATE_FILLERS = true
-- If true, existing generated filler folder is deleted first.
local CLEAR_OLD_FILLERS_FIRST = true
-- Keep this true. Forcing RenderFidelity Precise on thousands of meshes can freeze Studio.
local KEEP_RENDER_FIDELITY_AUTOMATIC = true
-- Smaller batch = safer/slower.
-- Bigger batch = faster/more likely to lag.
local BATCH_SIZE = 10
local WAIT_BETWEEN_BATCHES = 0.07
-- Filler generation rules.
local MIN_FILLER_AREA = 18
local MIN_FILLER_XZ = 3
local MAX_FLATNESS_RATIO = 0.42
-- Slightly above mesh top.
local FILLER_Y_OFFSET = 0.12
local FILLER_THICKNESS = 0.35
-- Make generated plates visible for debugging?
-- false = invisible final collision.
-- true = green transparent plates so you can inspect them.
local DEBUG_SHOW_FILLERS = false
local repairFolder = Workspace:FindFirstChild("ZC_Map_Collision_Repair")
if not repairFolder then
repairFolder = Instance.new("Folder")
repairFolder.Name = "ZC_Map_Collision_Repair"
repairFolder.Parent = Workspace
end
local fillerFolder = repairFolder:FindFirstChild("Invisible_Walk_Collision_Fillers")
if CLEAR_OLD_FILLERS_FIRST and fillerFolder then
fillerFolder:Destroy()
fillerFolder = nil
end
if not fillerFolder then
fillerFolder = Instance.new("Folder")
fillerFolder.Name = "Invisible_Walk_Collision_Fillers"
fillerFolder.Parent = repairFolder
end
local function lowerName(obj)
return string.lower(obj.Name or "")
end
local function containsAny(text, patterns)
for _, pattern in ipairs(patterns) do
if string.find(text, pattern, 1, true) then
return true
end
end
return false
end
local function isCollisionTarget(obj)
if not obj:IsA("MeshPart") and not obj:IsA("UnionOperation") then
return false
end
local n = lowerName(obj)
if containsAny(n, EXCLUDE_NAME_PATTERNS) then
return false
end
if containsAny(n, WALKABLE_NAME_PATTERNS) then
return true
end
return false
end
local function isFlatWalkableShape(obj)
local size = obj.Size
local x = math.abs(size.X)
local y = math.abs(size.Y)
local z = math.abs(size.Z)
if x < MIN_FILLER_XZ or z < MIN_FILLER_XZ then
return false
end
local area = x * z
if area < MIN_FILLER_AREA then
return false
end
local largestXZ = math.max(x, z)
if largestXZ <= 0 then
return false
end
local flatnessRatio = y / largestXZ
if flatnessRatio > MAX_FLATNESS_RATIO then
return false
end
-- Avoid vertical walls/rotated upright objects.
local upDot = math.abs(obj.CFrame.UpVector:Dot(Vector3.new(0, 1, 0)))
if upDot < 0.5 then
return false
end
return true
end
local function safeSetAttribute(obj, name, value)
pcall(function()
obj:SetAttribute(name, value)
end)
end
local function formatTime(seconds)
seconds = math.max(0, math.floor(seconds))
local mins = math.floor(seconds / 60)
local secs = seconds % 60
if mins > 0 then
return string.format("%dm %02ds", mins, secs)
end
return string.format("%ds", secs)
end
local function getApproxCenter(parts)
if #parts == 0 then
return Vector3.new(0, 25, 0)
end
local total = Vector3.new(0, 0, 0)
for _, part in ipairs(parts) do
total += part.Position
end
if totalCollisionTargets == 0 then
updateProgressText("[ZC Collision Repair]\nNo matching walkable meshes found.\nRename ROOT or adjust patterns.")
warn("[ZC Collision Repair] No collision targets found.")
return
end
local startTime = os.clock()
local fixed = 0
local failed = 0
for i, obj in ipairs(collisionTargets) do
local ok, err = pcall(function()
safeSetAttribute(obj, "ZC_OriginalCanCollide", obj.CanCollide)
safeSetAttribute(obj, "ZC_OriginalCanTouch", obj.CanTouch)
safeSetAttribute(obj, "ZC_OriginalCanQuery", obj.CanQuery)
if obj:IsA("MeshPart") then
safeSetAttribute(obj, "ZC_OriginalCollisionFidelity", obj.CollisionFidelity.Name)
safeSetAttribute(obj, "ZC_OriginalRenderFidelity", obj.RenderFidelity.Name)
end
if ok then
fixed += 1
else
failed += 1
warn("[ZC Collision Repair] Failed collision repair:", obj:GetFullName(), err)
end
if i % BATCH_SIZE == 0 or i == totalCollisionTargets then
local elapsed = os.clock() - startTime
local progress = i / math.max(totalCollisionTargets, 1)
local estimatedTotal = elapsed / math.max(progress, 0.001)
local remaining = estimatedTotal - elapsed
if AUTO_CREATE_FILLERS then
local fillerStart = os.clock()
for i, obj in ipairs(fillerTargets) do
local ok, err = pcall(function()
local plate = Instance.new("Part")
plate.Name = "COLLISION_FILLER_" .. obj.Name
plate.Anchored = true
plate.CanCollide = true
plate.CanQuery = true
plate.CanTouch = false
plate.CastShadow = false
plate.Material = Enum.Material.SmoothPlastic
plate.Color = Color3.fromRGB(0, 255, 120)
if DEBUG_SHOW_FILLERS then
plate.Transparency = 0.55
else
plate.Transparency = 1
end
-- Keep filler simple and stable.
-- It uses the mesh's X/Z footprint and sits just above the visible top.
plate.Size = Vector3.new(
math.max(obj.Size.X, MIN_FILLER_XZ),
FILLER_THICKNESS,
math.max(obj.Size.Z, MIN_FILLER_XZ)
)
if not ok then
fillersFailed += 1
warn("[ZC Collision Repair] Failed filler creation:", obj:GetFullName(), err)
end
if i % BATCH_SIZE == 0 or i == totalFillerTargets then
local elapsed = os.clock() - fillerStart
local progress = i / math.max(totalFillerTargets, 1)
local estimatedTotal = elapsed / math.max(progress, 0.001)
local remaining = estimatedTotal - elapsed
And then You can Also Undo that With this Script in the Command Bar:-- ZC_CLEAN_GENERATED_COLLISION_FILLERS.command.lua
-- Run in Command Bar if you want to remove the generated invisible collision plates.
local folder = workspace:FindFirstChild("ZC_Map_Collision_Repair")
if folder then
local fillers = folder:FindFirstChild("Invisible_Walk_Collision_Fillers")
if fillers then
fillers:Destroy()
print("[ZC Cleanup] Removed generated collision fillers.")
else
print("[ZC Cleanup] No filler folder found.")
end
else
print("[ZC Cleanup] No ZC_Map_Collision_Repair folder found.")
end
the Second script Removes the Plates Added. After this, the Players Shouldnt Encounter Many Mesh Roads that Allow the player to Sink into them.
Very bad you cant get a car to the start also the character ist not animatet and friends without adminstrator are spawning in a black room and cant do anything also the game dont have a map to see where you need to go
In response to the threat of extinction, a group of individuals formed known as the extants.
5.00 star(s)
6 ratings
198 purchases
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.