Hello! So, this is my attempt to make a whole model move to a random position, so basically, the model (which is an apartment) should be positioned absolubtly random, I don’t want any model, near to other model, so yeah, basically, every time a player joins, a apartments spawns, but I want it to be ABSOLUBTLY Random, and very apart from other apartments how would I make that? My attempt:
function check(part, primarypart)
for i,v in pairs(part:GetChildren()) do
if v:IsA("Model") then
check(v, v.Parent.PrimaryPart)
elseif v:IsA("Part") or v:IsA("BasePart") or v:IsA("UnionOperation") then
local weld = Instance.new("WeldConstraint", primarypart)
weld.Part0 = v
weld.Part1 = primarypart
end
end
end
check(script.Parent, script.Parent.PrimaryPart)
wait(1)
script.Parent.PrimaryPart.Anchored = true
local apartments = {}
for i,v in pairs(game.Workspace.Apartments:GetChildren()) do
if v then
table.insert(apartments, v)
end
end
for i,v in pairs(apartments) do
if v then
if (v.PrimaryPart.Position - script.Parent.PrimaryPart.Position).Magnitude >= 40 then
script.Parent.PrimaryPart.Position = Vector3.new(math.random(math.max(1,1123)), -128.709, 146.895)
elseif not v then
script.Parent.PrimaryPart.Position = Vector3.new(math.random(math.max(1,1123)), -128.709, 146.895)
end
end
end
script:Destroy()
script.Parent.PrimaryPart.Position = Vector3.new(
GetRandom(1, 1123), --Calling the func to get a random X value, passing the min and max.
-128.709,
146.895
)
This is assuming the Y and Z of your vector3 are constant values.
function check(part, primarypart)
for i,v in pairs(part:GetChildren()) do
if v:IsA("Model") then
check(v, v.Parent.Weld)
elseif v:IsA("Part") or v:IsA("BasePart") or v:IsA("UnionOperation") then
local weld = Instance.new("WeldConstraint", primarypart)
weld.Part1 = v
weld.Part0 = primarypart
end
end
end
local SingletonRandom = Random.new(tick())
local function GetRandom(Min,Max)
return SingletonRandom:NextNumber(Min,Max)
end
function LoadApartment(player)
local plrdata
local success = pcall(function()
plrdata = apartments:GetAsync(player.UserId)
end)
if success and plrdata then
--[[local part = Instance.new("Part", workspace)
part.Name = player.Name
part.Anchored = true
part.CanCollide = false
part.CFrame =
print(plrdata["Name"])]]--
local apartment = game:GetService("ServerStorage")["Apartments"]:WaitForChild(plrdata["Name"], 30):Clone()
for i,v in pairs(apartment:GetChildren()) do
if v.Name == "WallColor" then
v.BrickColor = BrickColor.new(plrdata["ApartmentColor"])
end
end
local SingletonRandom = Random.new(tick())
check(apartment, apartment.PrimaryPart)
apartment.PrimaryPart.Position = Vector3.new(
GetRandom(1, 1123), --Calling the func to get a random X value, passing the min and max.
-328.709,
146.895
)
apartment.Name = player.Name
apartment.Parent = workspace.Apartments
apartment["Garage"].Value = tonumber(plrdata["GarageSize"])
else
NewApartment(player)
end
end