How do I make a bloxburg building system?

Hey so, I didn’t mean to name the title “How do I make a bloxburg system?”, basically my problem is I am creating a bloxburg build system, I want to know how bloxburg sizes parts when the mouse is moved? I am hoping for a solution :slight_smile: Thanks

You seem to have a similar thread to this one, try any of these!
Some of the building system mechanics

I hope this helped, have a great rest of your day/night!

1 Like

I hate to say it, but this is a get good moment.

It took me a few weeks to understand how lua works and about 2 months to be fully fluent. I made small projects like placement systems but I can say with certainty that you will need to know the following things to pull it off.

How Client-Server and Server-Client works
How to use Remote Functions/Events
How CFrames and Vectors work
How Tables work
How Debounces work
How to get player and player mouse using :GetMouse
How to move an object using Mouse Position or a raycast
Region3 and Item scaling
And Cloning on server and client.

If you know most of these things than it should be no problem.

I know each of them on this list. Still, it’s hard

Its more trial and error. You cant sit around and expect someone to give you the answer. Pick apart what his placement system has and do it 1 step at a time.

For example:

His system lets you place stuff, well lets start with player clicking an item is placed, and so on.

Well. My problem is solved, used a lot of complicated math…

Thank you for showing mine lol

1 Like

mmm first make a script with the following local code ta, tb

local function DrawTriangle (A, B, C, FN, Parent)
ta, tb = require (game.ReplicatedStorage.Modules.Triangle) (A, B, C, Parent, ta, tb, FN)

ta: Clone (). Parent = ta.Parent
tb: Clone (). Parent = tb.Parent

game.ReplicatedStorage.Events.PlaceFloor.OnServerEvent: Connect (function (Plr, PointA, PointB, PointC, FN, Plot)
DrawTriangle (PointA, PointB, PointC, FN, Plot)

that script will go to ServerScriptService

that script will be called FloorHandler

And you also have three folders, one called Events and another called Modules, those folders will go to ReplicatedStorage

and the other one will go to Workspace and the folder is called Plots
That Folder will help you mark the rank to build

next script that script called RoofHandler will go to ServerScriptService

local ta, tb

local function DrawTriangle (A, B, C, FN, Parent)
ta, tb = require (game.ReplicatedStorage.Modules.Triangle) (A, B, C, Parent, ta, tb, FN)

ta: Clone (). Parent = ta.Parent
tb: Clone (). Parent = tb.Parent


game.ReplicatedStorage.Events.PlaceRoof.OnServerEvent: Connect (function (Plr, PointA, PointB, PointC, FN, Plot)
DrawTriangle (PointA, PointB, PointC, FN, Plot)


following script that called SecretWallHandler will go the same in ServerScriptService

game.ReplicatedStorage.Events.DrawSecretWall.OnServerEvent: Connect (function (Player, Plot)
local Wall1 = (“Part”, Plot)
Wall1.Size = (Plot.Ground.Size.X, 50, 1)
Wall1.Anchored = true
Wall1.Transparency = .5
Wall1.Position = Plot.Ground.Position + (0, 25, Plot.Ground.Size.X / 2)
local Wall2 = (“Part”, Plot)
Wall2.Size = (Plot.Ground.Size.X, 50, 1)
Wall2.Anchored = true
Wall2.Transparency = .5
Wall2.Position = Plot.Ground.Position + (0, 25, -Plot.Ground.Size.X / 2)
local Wall3 = (“Part”, Plot)
Wall3.Size = (1, 50, Plot.Ground.Size.Z)
Wall3.Anchored = true
Wall3.Transparency = .5
Wall3.Position = Plot.Ground.Position + (Plot.Ground.Size.Z / 2, 25, 0)
local Wall4 = (“Part”, Plot)
Wall4.Size = (1, 50, Plot.Ground.Size.Z)
Wall4.Anchored = true
Wall4.Transparency = .5
Wall4.Position = Plot.Ground.Position + (-Plot.Ground.Size.Z / 2, 25, 0)

Wall1.Name = “Wall”
Wall2.Name = “Wall”
Wall3.Name = “Wall”
Wall4.Name = “Wall”
Wall1.BrickColor = BrickColor.Black ()
Wall2.BrickColor = BrickColor.Black ()
Wall3.BrickColor = BrickColor.Black ()
Wall4.BrickColor = BrickColor.Black ()
Wall1.CastShadow = false
Wall2.CastShadow = false
Wall3.CastShadow = false
Wall4.CastShadow = false

game.ReplicatedStorage.Events.RemoveSecretWall.OnServerEvent: Connect (function (Plr, Plot)
for _, O in pairs (Plot: GetChildren ()) do
if O.Name == “Wall” then
Or: Destroy ()

following same script called SetPlot

game.Players.PlayerAdded: Connect (function (Plr)
local Plot = (“ObjectValue”, Plr)
Plot.Name = “Plot”

game.ReplicatedStorage.Events.SetPlot.OnServerEvent: Connect (function (Player, Plot, P)
P.Plot.Value = Plot
Plot.Owner.Value = P

following same script called WallHandler

game.ReplicatedStorage.Events.PlaceWall.OnServerEvent: Connect (function (Player, Point1, Point2, Plot)
print (Point1, Point2)

local Mag = (Point1 - Point2) .magnitude

local ray = (Point1, (Point1 - Point2) .unit * Mag)
local part, position = workspace: FindPartOnRay (ray, Player.Character)

local Wall = (“Part”, Plot.Objects.Walls)
Wall.Anchored = true
Wall.Transparency = 0
Wall.Name = “Wall”
Wall.TopSurface = Enum.SurfaceType.Smooth
Wall.BottomSurface = Enum.SurfaceType.Smooth

local Distance = (Point1 - position) .magnitude
Wall.Size = (.5, 10, math.floor (Mag)) + (0,0, .75)
Wall.CFrame = (Point1, position) * (0,0, Mag / 2)

those scripts will help you
Enviar comentarios