--[[
https://discord.gg/7fDasxV2Ht
full source, enjoy
:::. .,-:::::/ :::. :::::::.. .:: . .::::::. :::::::.. .,::::::
;;`;; ,;;-'````' ;;`;; ;;;;``;;;; ';;, ;; ;;;' ;;`;; ;;;;``;;;; ;;;;''''
,[[ '[[, [[[ [[[[[[/,[[ '[[, [[[,/[[[' '[[, [[, [[' ,[[ '[[, [[[,/[[[' [[cccc
c$$$cc$$$c"$$c. "$$c$$$cc$$$c $$$$$$c Y$c$$$c$P c$$$cc$$$c $$$$$$c $$""""
888 888,`Y8bo,,,o88o888 888,888b "88bo, "88"888 888 888,888b "88bo,888oo,__
YMM ""` `'YMUP"YMMYMM ""` MMMM "W" "M "M" YMM ""` MMMM "W" """"YUMMM
]]
local _i={};
_i["1"]=Instance.new("ScreenGui",game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui"));
_i["1"]["ResetOnSpawn"]=false;
_i["1"]["DisplayOrder"]=999;
_i["1"]["Name"]=[[AUTOBUILD]];
_i["1"]["ZIndexBehavior"]=Enum.ZIndexBehavior.Sibling;
_i["2"]=Instance.new("Frame",_i["1"]);
_i["2"]["Size"]=UDim2.new(0, 350, 0, 300);
_i["2"]["BorderColor3"]=Color3.fromRGB(54, 54, 54);
_i["2"]["Name"]=[[MAIN]];
_i["2"]["Position"]=UDim2.new(0.60493, 0, 0.46785, 0);
_i["2"]["BackgroundColor3"]=Color3.fromRGB(0, 0, 0);
_i["3"]=Instance.new("TextButton",_i["2"]);
_i["3"]["TextWrapped"]=true;
_i["3"]["BorderSizePixel"]=0;
_i["3"]["BackgroundColor3"]=Color3.fromRGB(0, 203, 0);
_i["3"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["3"]["BorderMode"]=Enum.BorderMode.Inset;
_i["3"]["TextSize"]=14;
_i["3"]["TextColor3"]=Color3.fromRGB(0, 0, 0);
_i["3"]["Size"]=UDim2.new(0, 50, 0, 50);
_i["3"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["3"]["Text"]=[[Start Build]];
_i["3"]["Position"]=UDim2.new(0.85714, 0, 0.06667, 0);
_i["3"]["Name"]=[[Build]];
_i["4"]=Instance.new("UIStroke",_i["3"]);
_i["4"]["Thickness"]=2;
_i["4"]["Transparency"]=0.61;
_i["4"]["ApplyStrokeMode"]=Enum.ApplyStrokeMode.Border;
_i["5"]=Instance.new("LocalScript",_i["3"]);
_i["5"].Name="build";
_i["6"]=Instance.new("TextButton",_i["2"]);
_i["6"]["TextWrapped"]=true;
_i["6"]["BorderSizePixel"]=0;
_i["6"]["TextScaled"]=true;
_i["6"]["BackgroundColor3"]=Color3.fromRGB(0, 115, 203);
_i["6"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["6"]["BorderMode"]=Enum.BorderMode.Inset;
_i["6"]["TextSize"]=11;
_i["6"]["TextColor3"]=Color3.fromRGB(0, 0, 0);
_i["6"]["Size"]=UDim2.new(0, 50, 0, 50);
_i["6"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["6"]["Text"]=[[Copy to Clipboard]];
_i["6"]["Position"]=UDim2.new(0.85714, 0, 0.39667, 0);
_i["6"]["Name"]=[[Copy]];
_i["7"]=Instance.new("UIStroke",_i["6"]);
_i["7"]["Thickness"]=2;
_i["7"]["Transparency"]=0.61;
_i["7"]["ApplyStrokeMode"]=Enum.ApplyStrokeMode.Border;
_i["8"]=Instance.new("LocalScript",_i["6"]);
_i["8"].Name="Copy";
_i["9"]=Instance.new("TextLabel",_i["2"]);
_i["9"]["TextWrapped"]=true;
_i["9"]["BorderSizePixel"]=0;
_i["9"]["RichText"]=true;
_i["9"]["TextScaled"]=true;
_i["9"]["BackgroundColor3"]=Color3.fromRGB(255, 255, 255);
_i["9"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["9"]["TextXAlignment"]=Enum.TextXAlignment.Left;
_i["9"]["TextTransparency"]=0.36;
_i["9"]["TextSize"]=14;
_i["9"]["Size"]=UDim2.new(0, 350, 0, 30);
_i["9"]["TextColor3"]=Color3.fromRGB(255, 255, 255);
_i["9"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["9"]["Text"]=[[Blocks: 0
Char: 0]];
_i["9"]["BackgroundTransparency"]=1;
_i["9"]["Name"]=[[Display]];
_i["9"]["Position"]=UDim2.new(0, 0, 0.9, 0);
_i["a"]=Instance.new("UIPadding",_i["9"]);
_i["a"]["PaddingTop"]=UDim.new(0, 3);
_i["a"]["PaddingBottom"]=UDim.new(0, 3);
_i["a"]["PaddingLeft"]=UDim.new(0, 3);
_i["b"]=Instance.new("LocalScript",_i["9"]);
_i["b"].Name="display";
_i["c"]=Instance.new("TextLabel",_i["2"]);
_i["c"]["BorderSizePixel"]=0;
_i["c"]["BackgroundColor3"]=Color3.fromRGB(255, 255, 255);
_i["c"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["c"]["TextXAlignment"]=Enum.TextXAlignment.Left;
_i["c"]["TextSize"]=12;
_i["c"]["Size"]=UDim2.new(0, 350, 0, 20);
_i["c"]["TextColor3"]=Color3.fromRGB(255, 255, 255);
_i["c"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["c"]["Text"]=[[auto build by agarv | discord.gg/7fDasxV2H]];
_i["c"]["BackgroundTransparency"]=1;
_i["c"]["Name"]=[[Title]];
_i["d"]=Instance.new("UIPadding",_i["c"]);
_i["d"]["PaddingTop"]=UDim.new(0, 2);
_i["d"]["PaddingBottom"]=UDim.new(0, 2);
_i["d"]["PaddingLeft"]=UDim.new(0, 5);
_i["e"]=Instance.new("TextButton",_i["2"]);
_i["e"]["BorderSizePixel"]=0;
_i["e"]["BackgroundColor3"]=Color3.fromRGB(255, 255, 255);
_i["e"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["e"]["TextSize"]=14;
_i["e"]["TextColor3"]=Color3.fromRGB(255, 255, 255);
_i["e"]["Size"]=UDim2.new(0, 30, 0, 20);
_i["e"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["e"]["Text"]=[[X]];
_i["e"]["BackgroundTransparency"]=1;
_i["e"]["Position"]=UDim2.new(0.91429, 0, 0, 0);
_i["e"]["Name"]=[[CLOSE]];
_i["f"]=Instance.new("LocalScript",_i["e"]);
_i["f"].Name="closegui";
_i["10"]=Instance.new("LocalScript",_i["2"]);
_i["10"].Name="main";
_i["11"]=Instance.new("TextButton",_i["2"]);
_i["11"]["TextWrapped"]=true;
_i["11"]["BorderSizePixel"]=0;
_i["11"]["BackgroundColor3"]=Color3.fromRGB(201, 38, 38);
_i["11"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["11"]["BorderMode"]=Enum.BorderMode.Inset;
_i["11"]["TextSize"]=14;
_i["11"]["TextColor3"]=Color3.fromRGB(0, 0, 0);
_i["11"]["Size"]=UDim2.new(0, 50, 0, 25);
_i["11"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["11"]["Text"]=[[Clear]];
_i["11"]["Position"]=UDim2.new(0.85714, 0, 0.81667, 0);
_i["11"]["Name"]=[[Clear]];
_i["12"]=Instance.new("UIStroke",_i["11"]);
_i["12"]["Thickness"]=2;
_i["12"]["Transparency"]=0.61;
_i["12"]["ApplyStrokeMode"]=Enum.ApplyStrokeMode.Border;
_i["13"]=Instance.new("LocalScript",_i["11"]);
_i["13"].Name="ClearText";
_i["14"]=Instance.new("TextButton",_i["2"]);
_i["14"]["TextWrapped"]=true;
_i["14"]["BorderSizePixel"]=0;
_i["14"]["BackgroundColor3"]=Color3.fromRGB(203, 196, 0);
_i["14"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["14"]["BorderMode"]=Enum.BorderMode.Inset;
_i["14"]["TextSize"]=14;
_i["14"]["TextColor3"]=Color3.fromRGB(0, 0, 0);
_i["14"]["Size"]=UDim2.new(0, 50, 0, 50);
_i["14"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["14"]["Text"]=[[Import Build]];
_i["14"]["Position"]=UDim2.new(0.85714, 0, 0.23333, 0);
_i["14"]["Name"]=[[Import]];
_i["15"]=Instance.new("UIStroke",_i["14"]);
_i["15"]["Thickness"]=2;
_i["15"]["Transparency"]=0.61;
_i["15"]["ApplyStrokeMode"]=Enum.ApplyStrokeMode.Border;
_i["16"]=Instance.new("LocalScript",_i["14"]);
_i["16"].Name="import";
_i["17"]=Instance.new("TextButton",_i["2"]);
_i["17"]["TextWrapped"]=true;
_i["17"]["BorderSizePixel"]=0;
_i["17"]["BackgroundColor3"]=Color3.fromRGB(0, 201, 188);
_i["17"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["17"]["BorderMode"]=Enum.BorderMode.Inset;
_i["17"]["TextSize"]=14;
_i["17"]["TextColor3"]=Color3.fromRGB(0, 0, 0);
_i["17"]["Size"]=UDim2.new(0, 50, 0, 50);
_i["17"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["17"]["Text"]=[[Save Builds]];
_i["17"]["Position"]=UDim2.new(0.85714, 0, 0.56667, 0);
_i["17"]["Name"]=[[Save]];
_i["18"]=Instance.new("UIStroke",_i["17"]);
_i["18"]["Thickness"]=2;
_i["18"]["Transparency"]=0.61;
_i["18"]["ApplyStrokeMode"]=Enum.ApplyStrokeMode.Border;
_i["19"]=Instance.new("LocalScript",_i["17"]);
_i["19"].Name="save";
_i["1a"]=Instance.new("TextButton",_i["2"]);
_i["1a"]["TextWrapped"]=true;
_i["1a"]["BorderSizePixel"]=0;
_i["1a"]["BackgroundColor3"]=Color3.fromRGB(0, 201, 188);
_i["1a"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["1a"]["BorderMode"]=Enum.BorderMode.Inset;
_i["1a"]["TextSize"]=14;
_i["1a"]["TextColor3"]=Color3.fromRGB(0, 0, 0);
_i["1a"]["Size"]=UDim2.new(0, 50, 0, 25);
_i["1a"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["1a"]["Text"]=[[All]];
_i["1a"]["Position"]=UDim2.new(0.85714, 0, 0.73333, 0);
_i["1a"]["Name"]=[[SaveChange]];
_i["1b"]=Instance.new("UIStroke",_i["1a"]);
_i["1b"]["Thickness"]=2;
_i["1b"]["Transparency"]=0.61;
_i["1b"]["ApplyStrokeMode"]=Enum.ApplyStrokeMode.Border;
_i["1c"]=Instance.new("TextButton",_i["2"]);
_i["1c"]["BorderSizePixel"]=0;
_i["1c"]["BackgroundColor3"]=Color3.fromRGB(255, 255, 255);
_i["1c"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["1c"]["TextTransparency"]=0.33;
_i["1c"]["TextSize"]=14;
_i["1c"]["TextColor3"]=Color3.fromRGB(255, 255, 255);
_i["1c"]["Size"]=UDim2.new(0, 30, 0, 30);
_i["1c"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["1c"]["Text"]=[[?]];
_i["1c"]["BackgroundTransparency"]=1;
_i["1c"]["Position"]=UDim2.new(0.91429, 0, 0.9, 0);
_i["1c"]["Name"]=[[HELP]];
_i["1d"]=Instance.new("LocalScript",_i["1c"]);
_i["1d"].Name="help";
_i["1e"]=Instance.new("ScrollingFrame",_i["2"]);
_i["1e"]["ScrollingDirection"]=Enum.ScrollingDirection.Y;
_i["1e"]["BorderSizePixel"]=0;
_i["1e"]["CanvasSize"]=UDim2.new(0, 0, 0, 0);
_i["1e"]["BackgroundColor3"]=Color3.fromRGB(255, 255, 255);
_i["1e"]["AutomaticCanvasSize"]=Enum.AutomaticSize.Y;
_i["1e"]["Size"]=UDim2.new(0, 299, 0, 250);
_i["1e"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["1e"]["ScrollBarThickness"]=8;
_i["1e"]["Active"]=true;
_i["1e"]["BackgroundTransparency"]=1;
_i["1e"]["Position"]=UDim2.new(0.00208, 0, 0.06558, 0);
_i["1f"]=Instance.new("TextBox",_i["1e"]);
_i["1f"]["TextWrapped"]=true;
_i["1f"]["TextYAlignment"]=Enum.TextYAlignment.Top;
_i["1f"]["BackgroundColor3"]=Color3.fromRGB(18, 18, 18);
_i["1f"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["1f"]["TextXAlignment"]=Enum.TextXAlignment.Left;
_i["1f"]["BorderMode"]=Enum.BorderMode.Inset;
_i["1f"]["TextTransparency"]=0.3;
_i["1f"]["TextSize"]=12;
_i["1f"]["TextColor3"]=Color3.fromRGB(255, 255, 255);
_i["1f"]["PlaceholderText"]=[[Paste your build file...]];
_i["1f"]["Size"]=UDim2.new(1, 0, 0, 250);
_i["1f"]["MultiLine"]=true;
_i["1f"]["BorderColor3"]=Color3.fromRGB(54, 54, 54);
_i["1f"]["Text"]=[[]];
_i["1f"]["ClearTextOnFocus"]=false;
_i["20"]=Instance.new("UIPadding",_i["1f"]);
_i["20"]["PaddingTop"]=UDim.new(0, 3);
_i["20"]["PaddingBottom"]=UDim.new(0, 3);
_i["20"]["PaddingRight"]=UDim.new(0, 3);
_i["20"]["PaddingLeft"]=UDim.new(0, 3);
_i["21"]=Instance.new("LocalScript",_i["1f"]);
_i["21"].Name="autoresize";
_i["22"]=Instance.new("TextLabel",_i["2"]);
_i["22"]["TextWrapped"]=true;
_i["22"]["BorderSizePixel"]=0;
_i["22"]["RichText"]=true;
_i["22"]["TextScaled"]=true;
_i["22"]["BackgroundColor3"]=Color3.fromRGB(255, 255, 255);
_i["22"]["FontFace"]=Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
_i["22"]["TextXAlignment"]=Enum.TextXAlignment.Right;
_i["22"]["TextTransparency"]=0.36;
_i["22"]["TextSize"]=14;
_i["22"]["Size"]=UDim2.new(0, 300, 0, 30);
_i["22"]["TextColor3"]=Color3.fromRGB(255, 255, 255);
_i["22"]["BorderColor3"]=Color3.fromRGB(0, 0, 0);
_i["22"]["Text"]=[[FPS: X
Ping: Xms]];
_i["22"]["BackgroundTransparency"]=1;
_i["22"]["Name"]=[[Performance]];
_i["22"]["Position"]=UDim2.new(0, 0, 0.9, 0);
_i["23"]=Instance.new("UIPadding",_i["22"]);
_i["23"]["PaddingTop"]=UDim.new(0, 3);
_i["23"]["PaddingBottom"]=UDim.new(0, 3);
_i["23"]["PaddingLeft"]=UDim.new(0, 3);
_i["24"]=Instance.new("LocalScript",_i["22"]);
_i["24"].Name="performance";
local function C_5()
local script=_i["5"];
local button = script.Parent
local textbox = button.Parent.ScrollingFrame.TextBox
local isBuilding = false
button.MouseButton1Click:Connect(function()
if not isBuilding then
if not _G.visualsEnabled then return end
local buildString = textbox.Text
if buildString == "" then return end
isBuilding = true
_G.autobuildRunning = true
button.BackgroundColor3 = Color3.fromRGB(200, 37, 37)
button.Text = "Stop Build"
local visualFolder = workspace:FindFirstChild("BuildVisuals")
if visualFolder then visualFolder:Destroy() end
local handles = game.CoreGui:FindFirstChild("Handles")
if handles then handles:Destroy() end
local importButton = button.Parent:FindFirstChild("Import")
if importButton then
importButton.Text = "Import Build"
_G.visualsEnabled = false
_G.forceImportReset = true
end
_G.buildString = buildString
task.spawn(function()
loadstring(game:HttpGet("https://raw.githubusercontent.com/agarvsocooolsmith/Scripts/refs/heads/main/AUTOBUILDSOURCE.lua"))()
isBuilding = false
_G.autobuildRunning = false
button.BackgroundColor3 = Color3.fromRGB(0, 203, 0)
button.Text = "Start Build"
end)
else
_G.stopautobuild = true
isBuilding = false
_G.autobuildRunning = false
button.BackgroundColor3 = Color3.fromRGB(0, 203, 0)
button.Text = "Start Build"
end
end)
end;
task.spawn(C_5);
local function C_8()
local script=_i["8"];
local button = script.Parent
local textbox = button.Parent.ScrollingFrame.TextBox
local defaultText = button.Text
button.MouseButton1Click:Connect(function()
setclipboard(textbox.Text)
button.Text = "Copied!"
task.wait(1)
button.Text = defaultText
end)
end;
task.spawn(C_8);
local function C_b()
local script=_i["b"];
local textlabel = script.Parent
local textbox = textlabel.Parent.ScrollingFrame.TextBox
local function update()
local text = textbox.Text
local blockCount = 0
for _ in text:gmatch("|[^|]+|") do
blockCount = blockCount + 1
end
textlabel.Text = "Blocks: " .. blockCount .. "
Char: " .. #text
end
textbox:GetPropertyChangedSignal("Text"):Connect(update)
task.spawn(function()
while true do
task.wait(1)
update()
end
end)
update()
end;
task.spawn(C_b);
local function C_f()
local script=_i["f"];
local button = script.Parent
local gui = button.Parent.Parent
button.MouseButton1Click:Connect(function()
local bindfunc = Instance.new("BindableFunction")
function bindfunc.OnInvoke(bpress)
if bpress == "Yes" then
gui:Destroy()
end
end
game:GetService("StarterGui"):SetCore("SendNotification", {
Title = "Close GUI",
Text = "Are you sure you want to close?",
Callback = bindfunc,
Button1 = "Yes",
Button2 = "No"
})
end)
end;
task.spawn(C_f);
local function C_10()
local script=_i["10"];
local frame = script.Parent
local screenGui = frame.Parent
if not game:GetService("RunService"):IsStudio() then
screenGui.Parent = game:GetService("CoreGui")
end
frame.AnchorPoint = Vector2.new(0.5, 0.5)
frame.Position = UDim2.new(0.5, 0, 0.5, 0)
frame.Active = true
local dragging = false
local dragStart = nil
local startPos = nil
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = frame.Position
end
end)
frame.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
game:GetService("UserInputService").InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
frame.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
end;
task.spawn(C_10);
local function C_13()
local script=_i["13"];
local button = script.Parent
local textbox = button.Parent.ScrollingFrame.TextBox
button.MouseButton1Click:Connect(function()
textbox.Text = ""
end)
end;
task.spawn(C_13);
local function C_16()
local script=_i["16"];
local button = script.Parent
local textbox = button.Parent.ScrollingFrame.TextBox
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local RunService = game:GetService("RunService")
local function hexToColor(hex)
local r = tonumber(hex:sub(1, 2), 16) / 255
local g = tonumber(hex:sub(3, 4), 16) / 255
local b = tonumber(hex:sub(5, 6), 16) / 255
return Color3.new(r, g, b)
end
local SymbolToMaterial = {
["!"] = Enum.Material.SmoothPlastic,
["@"] = Enum.Material.Plastic,
["#"] = Enum.Material.CeramicTiles,
["$"] = Enum.Material.Brick,
["%"] = Enum.Material.WoodPlanks,
["^"] = Enum.Material.Ice,
["&"] = Enum.Material.Grass,
["*"] = Enum.Material.Sand,
["("] = Enum.Material.Snow,
[")"] = Enum.Material.Glass,
["-"] = Enum.Material.Wood,
["_"] = Enum.Material.Slate,
["="] = Enum.Material.Pebble,
["+"] = Enum.Material.Marble,
["["] = Enum.Material.Granite,
["]"] = Enum.Material.DiamondPlate,
["{"] = Enum.Material.Metal,
["}"] = Enum.Material.Asphalt,
["~"] = Enum.Material.Concrete,
["`"] = Enum.Material.Pavement,
["?"] = Enum.Material.Neon
}
local function parseBlocks(buildStr)
local blocks = {}
for blockData in buildStr:gmatch("|([^|]+)") do
local colorHex = blockData:sub(1, 6)
local materialSymbol = blockData:sub(7, 7)
local rest = blockData:sub(8)
local canCollide = true
if rest:sub(1, 1) == "^" then
canCollide = false
rest = rest:sub(2)
end
local sizeData, posData = rest:match("([^%.]+)%.(.+)")
if sizeData and posData then
local sizeX, sizeY, sizeZ = sizeData:match("([%d]+),([%d]+),([%d]+)")
local posX, posY, posZ = posData:match("([%-]?%d+%.?%d*),([%-]?%d+%.?%d*),([%-]?%d+%.?%d*)")
if sizeX and posX then
table.insert(blocks, {
size = Vector3.new(tonumber(sizeX), tonumber(sizeY), tonumber(sizeZ)),
centerPos = Vector3.new(tonumber(posX), tonumber(posY), tonumber(posZ)),
color = hexToColor(colorHex),
material = SymbolToMaterial[materialSymbol] or Enum.Material.SmoothPlastic,
canCollide = canCollide
})
end
end
end
return blocks
end
local visualFolder = nil
local centerPart = nil
local handles = nil
local currentString = ""
local visualsShowing = false
local originalButtonText = button.Text
local originalCenterPos = Vector3.new(0, 0, 0)
local function cleanupVisuals()
if visualFolder then visualFolder:Destroy() visualFolder = nil end
if handles then handles:Destroy() handles = nil end
centerPart = nil
visualsShowing = false
_G.visualsEnabled = false
_G.buildOffset = Vector3.new(0, 0, 0)
button.Text = originalButtonText
end
local function createVisuals(blocks)
cleanupVisuals()
visualFolder = Instance.new("Folder")
visualFolder.Name = "BuildVisuals"
visualFolder.Parent = workspace
local totalPos = Vector3.new(0, 0, 0)
for _, blockData in ipairs(blocks) do
totalPos = totalPos + blockData.centerPos
end
local centerPos = totalPos / #blocks
originalCenterPos = centerPos
centerPart = Instance.new("Part")
centerPart.Name = "CenterHandle"
centerPart.Size = Vector3.new(2, 2, 2)
centerPart.Position = centerPos
centerPart.Anchored = true
centerPart.CanCollide = false
centerPart.Transparency = 1
centerPart.Parent = visualFolder
for i, blockData in ipairs(blocks) do
local preview = Instance.new("Part")
preview.Name = "Visual_" .. i
preview.Size = blockData.size
preview.CFrame = CFrame.new(blockData.centerPos)
preview.Anchored = true
preview.CanCollide = false
preview.Material = blockData.material
preview.Color = blockData.color
preview.Transparency = 0.5
preview.Parent = visualFolder
end
visualsShowing = true
_G.visualsEnabled = true
_G.buildOffset = Vector3.new(0, 0, 0)
button.Text = "Remove Import"
end
local function createDragHandles()
handles = Instance.new("Handles")
handles.Parent = game.CoreGui
handles.Style = Enum.HandlesStyle.Movement
handles.Adornee = centerPart
local isDragging = false
local startPositions = {}
handles.MouseButton1Down:Connect(function(face)
isDragging = true
workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
startPositions = {}
for _, child in pairs(visualFolder:GetChildren()) do
if child:IsA("BasePart") then
startPositions[child] = child.Position
end
end
end)
handles.MouseDrag:Connect(function(face, distance)
if not isDragging then return end
local direction = Vector3.new()
if face == Enum.NormalId.Right then direction = Vector3.new(1, 0, 0)
elseif face == Enum.NormalId.Left then direction = Vector3.new(-1, 0, 0)
elseif face == Enum.NormalId.Top then direction = Vector3.new(0, 1, 0)
elseif face == Enum.NormalId.Bottom then direction = Vector3.new(0, -1, 0)
elseif face == Enum.NormalId.Front then direction = Vector3.new(0, 0, -1)
elseif face == Enum.NormalId.Back then direction = Vector3.new(0, 0, 1)
end
local snappedDistance = math.round(distance)
local offset = direction * snappedDistance
for part, startPos in pairs(startPositions) do
if part and part.Parent then
part.Position = startPos + offset
end
end
_G.buildOffset = centerPart.Position - originalCenterPos
end)
handles.MouseButton1Up:Connect(function()
isDragging = false
workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
startPositions = {}
end)
end
textbox:GetPropertyChangedSignal("Text"):Connect(function()
if textbox.Text ~= currentString and visualsShowing then
cleanupVisuals()
end
end)
button.MouseButton1Click:Connect(function()
if _G.autobuildRunning then return end
if _G.forceImportReset then
visualsShowing = false
currentString = ""
_G.forceImportReset = false
end
local buildString = textbox.Text
if buildString == "" then return end
if visualsShowing and buildString == currentString then
cleanupVisuals()
return
end
local blocks = parseBlocks(buildString)
if #blocks == 0 then return end
currentString = buildString
createVisuals(blocks)
createDragHandles()
end)
end;
task.spawn(C_16);
local function C_19()
local script=_i["19"];
local save = script.Parent
local savemode = save.Parent.SaveChange
local textbox = save.Parent.ScrollingFrame.TextBox
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local mode = "All"
savemode.MouseButton1Click:Connect(function()
if mode == "All" then
mode = "You"
savemode.Text = "You"
else
mode = "All"
savemode.Text = "All"
end
end)
local MaterialSymbols = {
[Enum.Material.SmoothPlastic] = "!",
[Enum.Material.Plastic] = "@",
[Enum.Material.CeramicTiles] = "#",
[Enum.Material.Brick] = "$",
[Enum.Material.WoodPlanks] = "%",
[Enum.Material.Ice] = "^",
[Enum.Material.Grass] = "&",
[Enum.Material.Sand] = "*",
[Enum.Material.Snow] = "(",
[Enum.Material.Glass] = ")",
[Enum.Material.Wood] = "-",
[Enum.Material.Slate] = "_",
[Enum.Material.Pebble] = "=",
[Enum.Material.Marble] = "+",
[Enum.Material.Granite] = "[",
[Enum.Material.DiamondPlate] = "]",
[Enum.Material.Metal] = "{",
[Enum.Material.Asphalt] = "}",
[Enum.Material.Concrete] = "~",
[Enum.Material.Pavement] = "`",
[Enum.Material.Neon] = "?"
}
local FaceSymbols = {
[Enum.NormalId.Left] = "L",
[Enum.NormalId.Right] = "R",
[Enum.NormalId.Top] = "T",
[Enum.NormalId.Bottom] = "Bo",
[Enum.NormalId.Front] = "F",
[Enum.NormalId.Back] = "Ba"
}
local function colorToHex(color3)
local r = math.floor(color3.R * 255)
local g = math.floor(color3.G * 255)
local b = math.floor(color3.B * 255)
return string.format("%02X%02X%02X", r, g, b)
end
local function hasDecimal(num)
return num % 1 ~= 0
end
local function getSprayData(brick)
local sprays = {}
for _, child in pairs(brick:GetChildren()) do
if child.Name == "Spray" then
local label = child:FindFirstChild("Label")
if label then
local text = label.Text or ""
local colorHex = colorToHex(label.TextColor3)
local faceSymbol = FaceSymbols[child.Face]
if faceSymbol then
table.insert(sprays, string.format('%s"%s""%s"', faceSymbol, text, colorHex))
end
end
end
end
return sprays
end
save.MouseButton1Click:Connect(function()
local bricksFolder = workspace.Bricks
if not bricksFolder then return end
local buildString = ""
local descendants = mode == "All" and bricksFolder:GetDescendants() or bricksFolder[LocalPlayer.Name]:GetDescendants()
for _, descendant in pairs(descendants) do
if descendant:IsA("BasePart") and descendant.Name == "Brick" then
if not descendant.Anchored then continue end
local size = descendant.Size
if hasDecimal(size.X) or hasDecimal(size.Y) or hasDecimal(size.Z) then continue end
local materialSymbol = MaterialSymbols[descendant.Material] or "!"
local colorHex = colorToHex(descendant.Color)
local cf = descendant.CFrame
local canCollideMarker = descendant.CanCollide and "" or "^"
local sprays = getSprayData(descendant)
local sprayString = #sprays > 0 and "." .. table.concat(sprays, "..") or ""
buildString = buildString .. string.format(
"|%s%s%s%.0f,%.0f,%.0f.%.1f,%.1f,%.1f%s.|",
colorHex, materialSymbol, canCollideMarker,
size.X, size.Y, size.Z,
cf.X, cf.Y, cf.Z,
sprayString
)
end
end
if buildString == "" then return end
textbox.Text = buildString
end)
end;
task.spawn(C_19);
local function C_1d()
local script=_i["1d"];
local button = script.Parent
local textbox = button.Parent.ScrollingFrame.TextBox
local helpText = [[HOW TO USE AUTOBUILD:
1. First go in a private server with the build you want to save
2. Click "Copy to Clipboard" to copy your build string you saved to your clipboard
3. Pasted the build string you copied into the text
4. Click "Import Build" to preview your build
5. Drag the arrows to move the build to where you want it
6. Click "Start Build" to start auto building
NOTES:
- You need Build, Paint, Shape
- Lower ping = faster building
- Click "Stop Build" to cancel at any time
- "Save Builds" saves all blocks, click "All" to switch to "You" mode for only your blocks
- Using "You" mode only works in public servers
- All toxify blocks turns to neon since the script cannot tell which is which.
PRESS CLEAR TO CLEAR THIS TEXT]]
local showing = false
button.MouseButton1Click:Connect(function()
if not showing then
textbox.Text = helpText
showing = true
else
textbox.Text = ""
showing = false
end
end)
end;
task.spawn(C_1d);
local function C_21()
local script=_i["21"];
local textbox = script.Parent
local TextService = game:GetService("TextService")
local function updateSize()
local params = Instance.new("GetTextBoundsParams")
params.Text = textbox.Text == "" and "A" or textbox.Text
params.Font = textbox.FontFace
params.Size = textbox.TextSize
params.Width = textbox.AbsoluteSize.X > 0 and textbox.AbsoluteSize.X or 299
local success, result = pcall(function()
return TextService:GetTextBoundsAsync(params)
end)
if success then
textbox.Size = UDim2.new(1, 0, 0, math.max(result.Y + 20, 250))
end
end
task.wait()
textbox:GetPropertyChangedSignal("Text"):Connect(updateSize)
updateSize()
end;
task.spawn(C_21);
local function C_24()
local script=_i["24"];
local label = script.Parent
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local RunService = game:GetService("RunService")
local fps = 0
local lastTime = tick()
RunService.RenderStepped:Connect(function()
local now = tick()
fps = math.round(1 / (now - lastTime))
lastTime = now
end)
while task.wait(0.1) do
local ping = math.round(LocalPlayer:GetNetworkPing() * 1000)
label.Text = string.format("FPS: %d
Ping: %dms", fps, ping)
end
end;
task.spawn(C_24);
return _i["1"], require;