Realistic RP game v1.0

In this game there is a house purchase system, phone system, job system and more...
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

--====================================================
-- SETTINGS
--====================================================

local ROOT = Workspace

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 WALKABLE_NAME_PATTERNS = {
"ground",
"grd",
"road",
"street",
"sidewalk",
"walk",
"alley",
"yard",
"backyard",
"frontyard",
"floor",
"landscape",
"grass",
"path",
"pavement",
"drive",
"driveway",
"asphalt",
"land",
"terrain",
"parking",
"lot",
"curb",
"plaza",
"concrete",
"slab",
"base",
"block",
"tile",
}

local EXCLUDE_NAME_PATTERNS = {
"wall",
"fence",
"door",
"window",
"roof",
"tree",
"leaf",
"leaves",
"bush",
"plant",
"lamp",
"light",
"pole",
"wire",
"sign",
"bench",
"chair",
"table",
"trash",
"bin",
"mail",
"post",
"rail",
"railing",
"car",
"vehicle",
"wheel",
"tire",
"prop",
"decor",
}

--====================================================
-- FOLDERS
--====================================================

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

--====================================================
-- HELPERS
--====================================================

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

return total / #parts
end

--====================================================
-- PROGRESS MARKER
--====================================================

local progressMarker = repairFolder:FindFirstChild("ZC_CollisionRepair_ProgressMarker")
if progressMarker then
progressMarker:Destroy()
end

progressMarker = Instance.new("Part")
progressMarker.Name = "ZC_CollisionRepair_ProgressMarker"
progressMarker.Anchored = true
progressMarker.CanCollide = false
progressMarker.CanQuery = false
progressMarker.CanTouch = false
progressMarker.Transparency = 1
progressMarker.Size = Vector3.new(4, 4, 4)
progressMarker.Parent = repairFolder

local billboard = Instance.new("BillboardGui")
billboard.Name = "ProgressBillboard"
billboard.Size = UDim2.fromOffset(460, 130)
billboard.StudsOffset = Vector3.new(0, 8, 0)
billboard.AlwaysOnTop = true
billboard.Parent = progressMarker

local label = Instance.new("TextLabel")
label.Name = "ProgressText"
label.Size = UDim2.fromScale(1, 1)
label.BackgroundTransparency = 0.15
label.BackgroundColor3 = Color3.fromRGB(15, 15, 18)
label.BorderSizePixel = 0
label.TextColor3 = Color3.fromRGB(220, 255, 220)
label.TextScaled = true
label.Font = Enum.Font.GothamBold
label.Text = "ZC Collision Repair\nStarting..."
label.Parent = billboard

local function updateProgressText(text)
label.Text = text
print(text:gsub("\n", " | "))
end

--====================================================
-- SCAN
--====================================================

local collisionTargets = {}
local fillerTargets = {}

updateProgressText("[ZC Collision Repair]\nScanning map...")

for _, obj in ipairs(ROOT:GetDescendants()) do
if isCollisionTarget(obj) then
table.insert(collisionTargets, obj)

if AUTO_CREATE_FILLERS and isFlatWalkableShape(obj) then
table.insert(fillerTargets, obj)
end
end
end

local center = getApproxCenter(collisionTargets)
progressMarker.Position = center + Vector3.new(0, 35, 0)

local totalCollisionTargets = #collisionTargets
local totalFillerTargets = #fillerTargets

print("======================================")
print("[ZC Collision Repair] Scan complete.")
print("Collision targets:", totalCollisionTargets)
print("Filler targets:", totalFillerTargets)
print("Auto create fillers:", AUTO_CREATE_FILLERS)
print("======================================")

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

--====================================================
-- PASS 1: REPAIR COLLISION SETTINGS
--====================================================

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

obj.Anchored = true
obj.CanCollide = true
obj.CanQuery = true

-- Static floor/map pieces should not fire touch events.
-- This saves performance.
obj.CanTouch = false

if obj:IsA("MeshPart") then
obj.CollisionFidelity = Enum.CollisionFidelity.PreciseConvexDecomposition

if KEEP_RENDER_FIDELITY_AUTOMATIC then
obj.RenderFidelity = Enum.RenderFidelity.Automatic
end
end

safeSetAttribute(obj, REPAIR_TAG_ATTRIBUTE, true)
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

updateProgressText(string.format(
"ZC Collision Repair\nPass 1/2: Mesh Settings\n%d/%d %d%%\nETA: %s",
i,
totalCollisionTargets,
math.floor(progress * 100),
formatTime(remaining)
))

task.wait(WAIT_BETWEEN_BATCHES)
end
end

--====================================================
-- PASS 2: CREATE INVISIBLE FILLERS
--====================================================

local fillersCreated = 0
local fillersFailed = 0

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)
)

plate.CFrame = obj.CFrame * CFrame.new(0, obj.Size.Y / 2 + FILLER_Y_OFFSET, 0)

safeSetAttribute(plate, FILLER_TAG_ATTRIBUTE, true)
safeSetAttribute(plate, "SourceObjectName", obj.Name)
safeSetAttribute(plate, "SourceObjectPath", obj:GetFullName())

plate.Parent = fillerFolder

fillersCreated += 1
end)

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

updateProgressText(string.format(
"ZC Collision Repair\nPass 2/2: Collision Fillers\n%d/%d %d%%\nETA: %s",
i,
totalFillerTargets,
math.floor(progress * 100),
formatTime(remaining)
))

task.wait(WAIT_BETWEEN_BATCHES)
end
end
end

--====================================================
-- FINAL
--====================================================

local totalElapsed = os.clock() - startTime

updateProgressText(string.format(
"ZC Collision Repair COMPLETE\nMeshes fixed: %d\nMesh failures: %d\nFillers made: %d\nTime: %s",
fixed,
failed,
fillersCreated,
formatTime(totalElapsed)
))

print("======================================")
print("[ZC Collision Repair] COMPLETE")
print("Meshes fixed:", fixed)
print("Mesh failures:", failed)
print("Fillers created:", fillersCreated)
print("Filler failures:", fillersFailed)
print("Total time:", formatTime(totalElapsed))
print("Generated folder:", fillerFolder:GetFullName())
print("======================================")

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.
Do not buy this one worst coded games. no updates. no cars. no animations on the character
Do not buy one of the worst coded games I have ever seen.
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
B
Borytoko
you have to publish a game on roblox also your friend is spawing in black room because his game is loading
Buy a license now
$5.99
EULA
Standard EULA
Use on any projects you own with attribution
Support
Standard
Includes:
Download the resource
Access new updates
Support from the creator
Support duration
Lifetime
Share and earn
Refer this resource and earn a 10% commission.
4,815 Views
44 Purchases
45 Downloads
Mar 10, 2024 Published
N/A Updated
2.00 star(s)
Average rating (4)
38.3 MB File size
Open source
  1. Yes
DRM-free
  1. No
Unobfuscated
  1. Yes
Genre
  1. Roleplay
  1. Town & city
Supported languages
  1. English
Creator
Recommended for you
A fully scripted rising lava game, comes with everything you need!
4.50 star(s) 9 ratings
349 purchases
Unleash the Power of Coin Clicking.
5.00 star(s) 5 ratings
332 purchases
Currently one of the best Roblox game setups!
5.00 star(s) 17 ratings
313 purchases
Get your journey started, with a full game ready to go! Extremely easy to set up, and lots of fun!
5.00 star(s) 13 ratings
203 purchases
In response to the threat of extinction, a group of individuals formed known as the extants.
5.00 star(s) 6 ratings
198 purchases
Share and earn
Refer this resource and earn a 10% commission.
4,815 Views
44 Purchases
45 Downloads
Mar 10, 2024 Published
N/A Updated
2.00 star(s)
Average rating (4)
38.3 MB File size
Open source
  1. Yes
DRM-free
  1. No
Unobfuscated
  1. Yes
Genre
  1. Roleplay
  1. Town & city
Supported languages
  1. English
Creator
Recommended for you
A fully scripted rising lava game, comes with everything you need!
4.50 star(s) 9 ratings
349 purchases
Unleash the Power of Coin Clicking.
5.00 star(s) 5 ratings
332 purchases
Currently one of the best Roblox game setups!
5.00 star(s) 17 ratings
313 purchases
Get your journey started, with a full game ready to go! Extremely easy to set up, and lots of fun!
5.00 star(s) 13 ratings
203 purchases
In response to the threat of extinction, a group of individuals formed known as the extants.
5.00 star(s) 6 ratings
198 purchases
Top