Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if game.PlaceId ~= 537413528 then
- return
- end
- task.spawn(function()
- loadstring(game:HttpGet('https://raw.githubusercontent.com/TheRealAsu/BABFT/refs/heads/main/MessageIssue.lua'))()
- end)
- if not isfolder("BABFT") then
- makefolder("BABFT")
- end
- if not isfolder("BABFT/Image") then
- makefolder("BABFT/Image")
- end
- if not isfolder("BABFT/Build") then
- makefolder("BABFT/Build")
- end
- local FcMaster = true
- local folderName = "ImagePreview"
- local previewFolder = Workspace:FindFirstChild(folderName) or Instance.new("Folder", Workspace)
- previewFolder.Name = folderName
- for _, v in ipairs(previewFolder:GetChildren()) do
- v:Destroy()
- end
- task.delay(10, function()
- if game:GetService("CoreGui"):FindFirstChild("MSGISSUE") then
- game:GetService("CoreGui").MSGISSUE:Destroy()
- end
- end)
- local Rayfield
- local success
- success, Rayfield = pcall(function()
- return loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
- end)
- if not success then
- success, Rayfield = pcall(function()
- return loadstring(game:HttpGet('https://raw.githubusercontent.com/SiriusSoftwareLtd/Rayfield/ab965bf9a6f9890e6447c9b377678f5bffd8a379/source.lua'))()
- end)
- end
- if not success then
- success, Rayfield = pcall(function()
- return loadstring(game:HttpGet('https://github.com/SiriusSoftwareLtd/Rayfield/blob/28c7c270669c16a2ae1526eaaac1dbf927aa881e/source.lua'))()
- end)
- end
- local HttpService = cloneref(game:GetService("HttpService"))
- local TeleportService = cloneref(game:GetService("TeleportService"))
- local Players = game:GetService("Players")
- local Workspace = game:GetService("Workspace")
- local VirtualUser = game:GetService("VirtualUser")
- local httprequest = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request
- local JobId = game.JobId
- local PlaceId = game.PlaceId
- local queueteleport = (syn and syn.queue_on_teleport) or queue_on_teleport or (fluxus and fluxus.queue_on_teleport)
- local RunService = game:GetService("RunService")
- local Window = Rayfield:CreateWindow({
- Name = "Build A Boat For Treasure",
- Icon = 85108798400826,
- LoadingTitle = "Build A Boat For Treasure",
- LoadingSubtitle = "Made With ❤️ by @thereal_asu",
- Theme = "DarkBlue",
- DisableRayfieldPrompts = true,
- DisableBuildWarnings = true,
- ConfigurationSaving = {
- Enabled = false,
- FolderName = nil,
- FileName = "Big Hub"
- },
- Discord = {
- Enabled = true,
- Invite = "MdtGaG7vdx",
- RememberJoins = true
- },
- KeySystem = false,
- KeySettings = {
- Title = "discord.gg/uGhnBu89SM",
- Subtitle = "Key System",
- Note = "Key available in discord, link copied to clipboard",
- FileName = "ASUBABFTKey",
- SaveKey = true,
- GrabKeyFromSite = false,
- Key = {"terraria"} -- yes there is a keysystem but my script is not obfuscated lol
- }
- })
- local Global = Window:CreateTab("Global", 125428076789049)
- local ImageLoader = Window:CreateTab("Image Loader", 91865122737183)
- local AutoBuild = Window:CreateTab("Auto Build", 128207976113050)
- local BlockNeeded = Window:CreateTab("Block Needed", 138460602231983)
- local Miscellaneous = Window:CreateTab("Miscellaneous", 90305619538335)
- local Information = Window:CreateTab("Information", 84130531909418)
- local Credit = Window:CreateTab("Credit", 103654977021797)
- local Section = Credit:CreateSection("Discord")
- Section = Information:CreateSection("Discord")
- local Button = Credit:CreateButton({
- Name = "Join the Community!",
- Callback = function()
- setclipboard("https://discord.gg/zrAB2m5gvz")
- Rayfield:Notify({
- Title = "Copied!",
- Content = "the discord link has been successfully copied to the clipboard",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end,
- })
- local yjdtjf = Global:CreateButton({
- Name = "Unload Script",
- Callback = function()
- for _, v in ipairs(previewFolder:GetChildren()) do
- v:Destroy()
- end
- FcMaster = false
- Rayfield:Destroy()
- local GameStuff = {
- "Blocks",
- "Challenge",
- "TempStuff",
- "Teams",
- "MainTerrain",
- "OtherStages",
- "BlackZone",
- "CamoZone",
- "MagentaZone",
- "New YellerZone",
- "Really blueZone",
- "Really redZone",
- "Sand",
- "Water",
- "WhiteZone",
- "WaterMask"
- }
- for _, v in ipairs(GameStuff) do
- local object = game:GetService("ReplicatedStorage"):FindFirstChild(v)
- if object then
- if v == "OtherStages" then
- game:GetService("ReplicatedStorage").OtherStages.Parent = workspace.BoatStages
- else
- object.Parent = workspace
- end
- end
- end
- end,
- })
- local qzdqzd = Global:CreateDivider()
- Section = Credit:CreateSection("Owner")
- local Labeld = Credit:CreateLabel("Owner: @thereal_asu", 93981953300699, Color3.fromRGB(255, 255, 255), true)
- local Paragraph = Credit:CreateParagraph({Title = "About this script", Content = "This script is one of my projects that I'm taking time to make, I'm leaving it open source to allow people to check if this script is trusted, but also to let people learn the different techniques used in this script to do specific things. Please don't be a bad “skid” and credit me if you use this script to create your own script. It's ok to copy and paste my work for your script or improve my script to your own style, to suggest different versions of it, but please respect me, respect my work and have fun."})
- local aButton = Information:CreateButton({
- Name = "Join the Community!",
- Callback = function()
- setclipboard("https://discord.gg/zrAB2m5gvz")
- Rayfield:Notify({
- Title = "Copied!",
- Content = "the discord link has been successfully copied to the clipboard",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end,
- })
- Section = Information:CreateSection("Auto Farm")
- local Paragraph = Information:CreateParagraph({Title = "Information", Content = "let me know if you've ever seen an auto farm more powerful than this one in terms of gold per hour, you can use a webhook to follow the auto farm stats when you're not in front of your screen.\n\n - With no boost: 20K/hour\n - With x1.25: 25K/hour\n - With x2: 40K/hour\n - With Both: 50k/hour"})
- Section = Information:CreateSection("Image Loader")
- local Paragraph = Information:CreateParagraph({Title = "Requirement", Content = "Paste the image URL in the textbox and let the server convert the image, the server can't access certain images (it's not a coding problem) OR you can convert the image yourself: (more images are supported) Images are created from files that contain special data (RGB), to have these files or to create your own files from an image that you have chosen you must join the discord, you need an external script (open source) that converts the image into a file suitable for this script to be used, a tutorial is in the Discord Server.\n\n - Build Speed: You can choose the speed at which the image is built. If you have a slow internet connection, set the speed to low. Do not set it to max for large images\n\n- Preview: Displays a preview of the image, making it easier to use modifiers or to see how the image will look. It is also required to build the image.\n\n- Change Speed: Stop the current process by opening your inventory and checking if no more blocks are being placed. Change the speed and press 'Load Image' again. It should automatically resume from where it stopped.\n\n- Optimize Mode: Allows even the weakest PCs or those without a good connection to load images."})
- local Button = Information:CreateButton({
- Name = "copy the list of working sites",
- Callback = function()
- setclipboard("https://www.pythonanywhere.com/whitelist/")
- Rayfield:Notify({
- Title = "Copied!",
- Content = "past the link in your browser to see which sites work",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end,
- })
- Section = Information:CreateSection("Auto Build")
- local Paragraph = Information:CreateParagraph({Title = "Information - [AUTO BUILD IS IN WORK IN PROGRESS]", Content = "this feature does not require any external requirement, if you save a build with a name that already existed, it will overwrite it. You can download and shares files in the Discord Server.\n\n - Safe Mode: prevents crashes during loading if you have a poor internet connection, this toggle slows down build speed.\n\n - Preview: displays a preview of the build."})
- local player = game.Players.LocalPlayer
- local Nplayer = game.Players.LocalPlayer.Name
- local characterConnection
- local connection
- local function enableAntiAFK()
- if not connection then
- Rayfield:Notify({
- Title = "Anti-Afk | ON",
- Content = "you won't get kicked after 20 minutes of inactivity",
- Duration = 6.5,
- Image = 124144713366592,
- })
- connection = player.Idled:Connect(function()
- if getgenv().afk6464 then
- VirtualUser:CaptureController()
- VirtualUser:ClickButton2(Vector2.new())
- end
- end)
- end
- end
- local function disableAntiAFK()
- if connection then
- connection:Disconnect()
- connection = nil
- Rayfield:Notify({
- Title = "Anti-Afk | OFF",
- Content = "you will be kicked after 20 minutes of inactivity",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- end
- local function loop()
- while true do
- if getgenv().afk6464 then
- enableAntiAFK()
- else
- disableAntiAFK()
- end
- wait(1)
- end
- end
- spawn(loop)
- Section = Global:CreateSection("Utilities")
- local AFKToggle = Global:CreateToggle({
- Name = "Anti-Afk",
- CurrentValue = false,
- Flag = "",
- Callback = function(Value)
- getgenv().afk6464 = Value
- end,
- })
- if getgenv().afk6464 == true then
- AFKToggle:Set(true)
- end
- local Button = Global:CreateButton({
- Name = "Load Infinite Yield",
- Callback = function()
- loadstring(game:HttpGet('https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source'))()
- end,
- })
- local Button = Global:CreateButton({
- Name = "Tp tool",
- Callback = function()
- mouse = game.Players.LocalPlayer:GetMouse()
- tool = Instance.new("Tool")
- tool.RequiresHandle = false
- tool.Name = "Tp tool"
- tool.ToolTip = "Equip + click = tp"
- tool.Activated:connect(function()
- local pos = mouse.Hit+Vector3.new(0,2.5,0)
- pos = CFrame.new(pos.X,pos.Y,pos.Z)
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = pos
- end)
- tool.Parent = game.Players.LocalPlayer.Backpack
- end,
- })
- local Button = Global:CreateButton({ -- From IY
- Name = "Rejoin",
- Callback = function()
- Rayfield:Notify({
- Title = "Rejoin",
- Content = "hold on a sec",
- Duration = 6.5,
- Image = 124144713366592,
- })
- wait(0.2)
- if #Players:GetPlayers() <= 1 then
- Players.LocalPlayer:Kick("\nRejoining...")
- wait()
- TeleportService:Teleport(PlaceId, Players.LocalPlayer)
- else
- TeleportService:TeleportToPlaceInstance(PlaceId, JobId, Players.LocalPlayer)
- end
- wait(5)
- Rayfield:Notify({
- Title = "Rejoin may have failed",
- Content = "try with infinite yield",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end,
- })
- local Button = Global:CreateButton({ -- From IY by IY devs and NoobSploit
- Name = "Server Hop",
- Callback = function()
- if httprequest then
- Rayfield:Notify({
- Title = "Server Hop",
- Content = "hold on a sec",
- Duration = 6.5,
- Image = 124144713366592,
- })
- wait(0.2)
- local servers = {}
- local req = httprequest({Url = string.format("https://games.roblox.com/v1/games/%d/servers/Public?sortOrder=Desc&limit=100&excludeFullGames=true", PlaceId)})
- local body = HttpService:JSONDecode(req.Body)
- if body and body.data then
- for i, v in next, body.data do
- if type(v) == "table" and tonumber(v.playing) and tonumber(v.maxPlayers) and v.playing < v.maxPlayers and v.id ~= JobId then
- table.insert(servers, 1, v.id)
- end
- end
- end
- if #servers > 0 then
- TeleportService:TeleportToPlaceInstance(PlaceId, servers[math.random(1, #servers)], Players.LocalPlayer)
- else
- Rayfield:Notify({
- Title = "Error",
- Content = "Couldn't find a server.",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- wait(5)
- Rayfield:Notify({
- Title = "Server Hop may have failed",
- Content = "try with infinite yield",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- end,
- })
- local Silent = false
- Section = Global:CreateSection("Auto Farm - The most powerful one")
- local AutoFarm1 = Global:CreateToggle({
- Name = "Auto Farm",
- CurrentValue = false,
- Flag = "",
- Callback = function(Value)
- getgenv().AF = Value
- local isFarming = false
- local function startAutoFarm()
- if Value == false then return end
- local character = player.Character or player.CharacterAdded:Wait()
- local humanoidRootPart = character:WaitForChild("HumanoidRootPart") -- What are you looking for, basket ? :) no skid ;)
- local newPart = Instance.new("Part")
- newPart.Size = Vector3.new(5, 1, 5)
- newPart.Transparency = 1
- newPart.CanCollide = true
- newPart.Anchored = true
- newPart.Parent = workspace
- local decal = Instance.new("Decal")
- decal.Texture = "rbxassetid://139953968294114"
- decal.Face = Enum.NormalId.Top
- decal.Parent = newPart
- local function TPAF(iteration)
- if not Silent then
- if Value == false then return end
- if iteration == 5 then
- firetouchinterest(game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart"), workspace.BoatStages.NormalStages.TheEnd.GoldenChest.Trigger, 0)
- task.delay(0.8, function()
- workspace.ClaimRiverResultsGold:FireServer()
- end)
- humanoidRootPart.CFrame = CFrame.new(-51, 65, 984 + (iteration - 1) * 770)
- else
- if iteration == 1 then
- humanoidRootPart.CFrame = CFrame.new(160.16104125976562, 29.595888137817383, 973.813720703125)
- else
- humanoidRootPart.CFrame = CFrame.new(-51, 65, 984 + (iteration - 1) * 770)
- end
- end
- newPart.Position = humanoidRootPart.Position - Vector3.new(0, 2, 0)
- wait(2.3) -- if lower, it can't work every time
- if iteration == 1 then
- wait(2.3)
- end
- if iteration == 4 then
- else
- workspace.ClaimRiverResultsGold:FireServer()
- end
- else
- if Value == false then return end
- if iteration == 1 then
- humanoidRootPart.CFrame = CFrame.new(160.16104125976562, 29.595888137817383, 973.813720703125)
- elseif iteration == 5 then
- firetouchinterest(game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart"), workspace.BoatStages.NormalStages.TheEnd.GoldenChest.Trigger, 0)
- task.delay(0.8, function()
- workspace.ClaimRiverResultsGold:FireServer()
- end)
- humanoidRootPart.CFrame = CFrame.new(70.02417755126953, 138.9026336669922, 1371.6341552734375 + (iteration - 2) * 770)
- else
- humanoidRootPart.CFrame = CFrame.new(70.02417755126953, 138.9026336669922, 1371.6341552734375 + (iteration - 2) * 770)
- end
- newPart.Position = humanoidRootPart.Position - Vector3.new(0, 2, 0)
- wait(2.3) -- if lower, it can't work every time
- if iteration == 1 then
- wait(2.3)
- end
- if iteration == 4 then
- else
- workspace.ClaimRiverResultsGold:FireServer()
- end
- end
- end
- for i = 1, 10 do
- if not Value then
- break
- end
- TPAF(i)
- end
- newPart:Destroy()
- end
- local function onCharacterRespawned()
- if getgenv().AF == true then
- if FcMaster == false then return end
- local character = player.Character or player.CharacterAdded:Wait()
- character:WaitForChild("HumanoidRootPart")
- -- wait(2)
- startAutoFarm()
- end
- end
- if Value then
- Rayfield:Notify({
- Title = "Auto Farm - Enabled",
- Content = "Isolation mode and Anti-afk is recommended",
- Duration = 6.5,
- Image = 124144713366592,
- })
- game.Players.LocalPlayer.Character:BreakJoints()
- wait(1)
- game.Players.LocalPlayer.CharacterAdded:Connect(onCharacterRespawned)
- else
- Rayfield:Notify({
- Title = "Auto Farm - Disabled",
- Content = "Please, wait for the iteration to finish...",
- Duration = 6.5,
- Image = 124144713366592,
- })
- game.Players.LocalPlayer.CharacterAdded:Connect(function() end)
- end
- end,
- })
- local Toggle = Global:CreateToggle({
- Name = "Make it Silent",
- CurrentValue = false,
- Flag = "Toggle1",
- Callback = function(Value)
- Silent = Value
- end,
- })
- local FStats = Global:CreateParagraph({Title = "Stats", Content = "Elapsed time: -".."\n".."GoldBlock Gained: -".."\n".."Gold Gained: -".."\n".."\n".."Gold per hour: -"})
- local clockTime = 0
- local running = false
- local totalGoldGained = 0
- local Ftime = 0
- local totalGoldBlock = 0
- local GoldPerHour = 0
- local lastGoldValue = game:GetService("Players").LocalPlayer.Data.Gold.Value
- local IGBLOCK = game:GetService("Players").LocalPlayer.Data.GoldBlock.Value
- local function formatTime(seconds)
- local hours = math.floor(seconds / 3600)
- local minutes = math.floor((seconds % 3600) / 60)
- local sec = seconds % 60
- return hours .. " hours " .. minutes .. " minutes " .. sec .. " seconds"
- end
- local function startClock()
- if running then return end
- running = true
- while running do
- if getgenv().AF then
- clockTime = clockTime + 1
- else
- running = false
- end
- task.wait(1)
- end
- end
- game:GetService("RunService").Stepped:Connect(function()
- if getgenv().AF and not running then
- wait(5)
- startClock()
- end
- end)
- function initclock()
- while true do
- local FinalGold = game:GetService("Players").LocalPlayer.Data.Gold.Value
- Ftime = formatTime(clockTime)
- local GoldGained = FinalGold - lastGoldValue
- totalGoldGained = totalGoldGained + GoldGained
- local FGBLOCK = game:GetService("Players").LocalPlayer.Data.GoldBlock.Value
- totalGoldBlock = FGBLOCK - IGBLOCK
- GoldPerHour = (totalGoldGained / clockTime) * 3600
- FStats:Set({
- Title = "Stats",
- Content = "Elapsed time: " .. Ftime .. "\n" ..
- "GoldBlock Gained: " .. totalGoldBlock .. "\n" ..
- "Gold Gained: " .. totalGoldGained .. "\n" ..
- "Gold per hour: " .. math.floor(GoldPerHour),
- })
- lastGoldValue = FinalGold
- wait(1)
- end
- end
- GoldPerHour = 0
- function SendMessageEMBED(url, embed)
- local http = game:GetService("HttpService")
- local headers = {
- ["Content-Type"] = "application/json"
- }
- local data = {
- ["embeds"] = {
- {
- ["title"] = embed.title,
- ["description"] = embed.description,
- ["color"] = embed.color,
- ["fields"] = embed.fields,
- ["footer"] = {
- ["text"] = embed.footer.text
- },
- ["thumbnail"] = {
- ["url"] = embed.thumbnail_url
- }
- }
- }
- }
- local body = http:JSONEncode(data)
- local response = request({
- Url = url,
- Method = "POST",
- Headers = headers,
- Body = body
- })
- end
- local WebHook = "a"
- local interval = 1800
- function SendAUTOFARMInfo(Ftime, totalGoldBlock, totalGoldGained, GoldPerHour)
- local embed = {
- ["title"] = "BABFT | Auto Farm",
- ["description"] = "Stats",
- ["color"] = 16777215,
- ["fields"] = {
- {
- ["name"] = "Time Elapsed",
- ["value"] = Ftime or 0
- },
- {
- ["name"] = "GoldBlock Gained:",
- ["value"] = tostring(totalGoldBlock) or 0
- },
- {
- ["name"] = "Gold Gained:",
- ["value"] = tostring(totalGoldGained) or 0
- },
- {
- ["name"] = "Gold per hour:",
- ["value"] = tostring(math.floor(GoldPerHour)) or 0
- },
- {
- ["name"] = "Total Gold:",
- ["value"] = game:GetService("Players").LocalPlayer.Data.Gold.Value or 0
- },
- },
- ["footer"] = {
- ["text"] = "Script by @thereal_asu"
- },
- ["thumbnail_url"] = "https://tr.rbxcdn.com/180DAY-5cc07c05652006d448479ae66212782d/768/432/Image/Webp/noFilter"
- }
- if WebHook then
- print("send")
- SendMessageEMBED(WebHook, embed)
- end
- end
- --[[
- local embed2 = { -- Hello, this webhook is just for me to know how many people execute this script, everything is anonymous
- ["title"] = "Build A Boat For Treasure",
- ["description"] = "Script Executed!",
- ["color"] = math.random(1, 16777215),
- ["footer"] = {
- ["text"] = "Script by @thereal_asu"
- },
- ["thumbnail_url"] = "https://tr.rbxcdn.com/180DAY-5cc07c05652006d448479ae66212782d/768/432/Image/Webp/noFilter"
- }
- SendMessageEMBED("the webhook got found and removed, i won't put a new one lol, thanks for the 15K executions in 3 days. - 7th january 2025", embed2)
- ]]
- local InputWebHook = Global:CreateInput({
- Name = "Discord Webhook URL:",
- CurrentValue = "",
- PlaceholderText = "URL",
- RemoveTextAfterFocusLost = false,
- Flag = "Input1",
- Callback = function(Text)
- WebHook = Text
- end,
- })
- local InputInterval = Global:CreateInput({
- Name = "Time between messages:",
- CurrentValue = "1800",
- PlaceholderText = "Seconds",
- RemoveTextAfterFocusLost = false,
- Flag = "Input2",
- Callback = function(Text)
- interval = tonumber(Text)
- end,
- })
- local Toggle = Global:CreateToggle({
- Name = "Use WebHook",
- CurrentValue = false,
- Flag = "Toggle1",
- Callback = function(Value)
- getgenv().WBhook = Value
- end,
- })
- coroutine.wrap(function()
- while true do
- if getgenv().WBhook and getgenv().AF and not getgenv().intervalLock then
- getgenv().intervalLock = true
- SendAUTOFARMInfo(Ftime, totalGoldBlock, totalGoldGained, GoldPerHour)
- task.wait(interval)
- getgenv().intervalLock = false
- end
- task.wait(1)
- end
- end)()
- local BlockId = loadstring(game:HttpGet('https://raw.githubusercontent.com/TheRealAsu/BABFT/refs/heads/main/BlockId.lua'))()
- local ImageFiles = {}
- local function updateImageFiles()
- local files = listfiles("BABFT/Image")
- ImageFiles = {}
- for _, file in ipairs(files) do
- if isfile(file) then
- table.insert(ImageFiles, file)
- end
- end
- end
- local Label = ImageLoader:CreateLabel("Check the Information tab to use this feature", 134637165939940, Color3.fromRGB(204, 156, 0), true)
- --[[
- local Dropdownimg = ImageLoader:CreateDropdown({ --When shlex adds a script to refresh the dropdown
- Name = "Files",
- Options = ImageFiles,
- CurrentOption = {""},
- MultipleOptions = false,
- Flag = "",
- Callback = function(Options)
- end,
- })
- --]]
- local function LPTEAM()
- local teamName = player.Team.Name
- local zoneMapping = {
- black = "BlackZone",
- blue = "Really blueZone",
- green = "CamoZone",
- red = "Really redZone",
- white = "WhiteZone",
- yellow = "New YellerZone",
- magenta = "MagentaZone"
- }
- local selectedZoneName = zoneMapping[teamName]
- if selectedZoneName then
- local zone = workspace:FindFirstChild(selectedZoneName)
- if zone then
- return zone.position + Vector3.new(-100, 150, 0)
- end
- end
- end
- local function LPTEAM3()
- local teamName = player.Team.Name
- local zoneMapping = {
- black = "BlackZone",
- blue = "Really blueZone",
- green = "CamoZone",
- red = "Really redZone",
- white = "WhiteZone",
- yellow = "New YellerZone",
- magenta = "MagentaZone"
- }
- local selectedZoneName = zoneMapping[teamName]
- if selectedZoneName then
- local zone = workspace:FindFirstChild(selectedZoneName)
- if zone then
- return zone.position
- end
- end
- end
- function BuildingTool()
- game:GetService("Players").LocalPlayer.Backpack.BuildingTool.RF:InvokeServer("WoodBlock",58,workspace.BlackZone,CFrame.new(0, 6, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1),true,CFrame.new(),false)
- end
- local imagePreviewFolder = workspace:FindFirstChild("ImagePreview") or Instance.new("Folder")
- imagePreviewFolder.Name = "ImagePreview"
- imagePreviewFolder.Parent = workspace
- local UserBlockList = {}
- local dataFolder = game:GetService("Players").LocalPlayer.Data
- local BlockType = "PlasticBlock"
- local LPBlockvalue = UserBlockList[BlockType]
- local blockSize = 2
- local startPosition = nil
- local PreviewPart = nil
- local kflxjdhgw = nil
- local currentConnection = nil
- local FileImage = nil
- local HalfblockSize = blockSize / 2
- local cooloffset = Vector3.new(0, 0, 0)
- local Unit = 45
- local Bdepth = 2
- local angleY = 0
- local ImgCenterimage = nil
- local Brainrot = CFrame.identity
- local rotationCFrame = CFrame.Angles(0, 0, 0)
- local batchSize = 700
- local TotalBlockInBlocksFolderBeforeBuildImageInitYesThisVarIsVeryLong = 0
- local USEURL = nil
- local TempData = {}
- local BlockLoaded = true
- local TASK1, TASK2, TASK3, TASK4, TASK5 = false, false, false, false, false
- getgenv().ImgLoaderStat = true
- local function LPTEAM2()
- local teamName = player.Team.Name
- local zoneMapping = {
- black = "BlackZone",
- blue = "Really blueZone",
- green = "CamoZone",
- red = "Really redZone",
- white = "WhiteZone",
- yellow = "New YellerZone",
- magenta = "MagentaZone"
- }
- local selectedZoneName = zoneMapping[teamName]
- if selectedZoneName then
- local zone = workspace:FindFirstChild(selectedZoneName)
- if zone then
- return zone.Name
- end
- end
- end
- local function UUserBlockList()
- UserBlockList = {}
- for _, feuh in ipairs(dataFolder:GetChildren()) do
- if feuh.Value ~= nil then
- UserBlockList[feuh.Name] = feuh.Value
- end
- end
- end
- local function readFile(filePath)
- if not isfile(filePath) then
- return nil
- end
- return readfile(filePath)
- end
- local function parseColors(fileContent)
- local data = {}
- for value in string.gmatch(fileContent, "[^,]+") do
- value = value:match("^%s*(.-)%s*$")
- table.insert(data, tonumber(value) or value)
- end
- return data
- end
- local function calculateFrameSize(data)
- local width = 0
- local height = 0
- local currentWidth = 0
- for i = 1, #data, 3 do
- local r, g, b = data[i], data[i + 1], data[i + 2]
- if r == "B" and g == "B" and b == "B" then
- height += 1
- width = math.max(width, currentWidth)
- currentWidth = 0
- elseif r == "R" and g == "R" and b == "R" then
- currentWidth += 1
- elseif type(r) == "number" and type(g) == "number" and type(b) == "number" then
- currentWidth += 1
- end
- end
- height += 1
- width = math.max(width, currentWidth)
- return Vector3.new(width * blockSize, height * blockSize, Bdepth)
- end
- local function previewFrame(frameSize, position, blockSize)
- startPosition = LPTEAM()
- if PreviewPart then
- PreviewPart:Destroy()
- PreviewPart = nil
- end
- PreviewPart = Instance.new("Part")
- PreviewPart.Size = frameSize
- PreviewPart.Position = position + Vector3.new(HalfblockSize - blockSize + frameSize.X / 2, HalfblockSize + blockSize - frameSize.Y / 2, 0) + cooloffset
- PreviewPart.Transparency = 1
- PreviewPart.Color = Color3.new(1, 1, 1)
- PreviewPart.Anchored = true
- PreviewPart.CanCollide = false
- PreviewPart.Name = "PreviewSize"
- PreviewPart.Parent = previewFolder
- PreviewPart.Rotation = Vector3.new(0, angleY - 90, 0)
- local textureId = "rbxassetid://133978572926918"
- local function applyTextureToSurface(surface, sizeX, sizeY)
- local texture = Instance.new("Texture")
- texture.Texture = textureId
- texture.Face = surface
- texture.Parent = PreviewPart
- texture.StudsPerTileU = blockSize
- texture.StudsPerTileV = blockSize
- texture.Transparency = 0.2
- end
- applyTextureToSurface(Enum.NormalId.Front, frameSize.X, frameSize.Y)
- applyTextureToSurface(Enum.NormalId.Back, frameSize.X, frameSize.Y)
- applyTextureToSurface(Enum.NormalId.Left, frameSize.Z, frameSize.Y)
- applyTextureToSurface(Enum.NormalId.Right, frameSize.Z, frameSize.Y)
- applyTextureToSurface(Enum.NormalId.Top, frameSize.X, frameSize.Z)
- applyTextureToSurface(Enum.NormalId.Bottom, frameSize.X, frameSize.Z)
- end
- local function Centerimage(frameSize, position, blockSize)
- startPosition = LPTEAM()
- if kflxjdhgw then
- kflxjdhgw:Destroy()
- kflxjdhgw = nil
- end
- kflxjdhgw = Instance.new("Part")
- kflxjdhgw.Size = frameSize
- kflxjdhgw.Position = position + Vector3.new(HalfblockSize - blockSize + frameSize.X / 2, HalfblockSize + blockSize - frameSize.Y / 2, 0)
- kflxjdhgw.Transparency = 1
- kflxjdhgw.Color = Color3.new(1, 1, 1)
- kflxjdhgw.Anchored = true
- kflxjdhgw.CanCollide = false
- kflxjdhgw.Name = "Centerimage"
- kflxjdhgw.Parent = previewFolder
- return kflxjdhgw.Position
- end
- local function buildImageFAST()
- local folder = workspace:FindFirstChild("ImagePreview")
- if not folder then
- return
- end
- for _, part in ipairs(folder:GetChildren()) do
- if part:IsA("BasePart") and part.Name == "Part" then
- part.Transparency = 0.8
- end
- end
- local parts = {}
- for _, part in ipairs(folder:GetChildren()) do
- if part:IsA("BasePart") and part.Name == "Part" then
- table.insert(parts, part)
- end
- end
- if #parts == 0 then
- return
- end
- local paintData = {}
- UUserBlockList()
- local uszLPBlockvalue = UserBlockList[BlockType]
- local Zonesss = LPTEAM2()
- local LNplayer = nil
- if game:GetService("Players").LocalPlayer.Settings.ShareBlocks.Value == false then
- LNplayer = Nplayer
- else
- local playerteam = player.Team.Name
- local blocktoget = game:GetService("Teams"):FindFirstChild(playerteam).TeamLeader.Value
- LNplayer = blocktoget
- end
- for i = 1, #parts do
- if getgenv().ImgLoaderStat == false then
- break
- end
- task.spawn(function()
- local part = parts[i]
- if not part then
- return
- end
- if getgenv().ImgLoaderStat == false then
- return
- end
- local WORLDPOS = part.Position
- local partRot = part.CFrame - part.Position
- local newCFrame = CFrame.new(math.random(-69, 69), math.random(-2200000, -120000), math.random(-69, 69))
- if getgenv().ImgLoaderStat == false then
- return
- end
- local BuildPath = player.Backpack:FindFirstChild("BuildingTool") or player.Character:FindFirstChild("BuildingTool")
- BuildPath.RF:InvokeServer(
- BlockType,
- uszLPBlockvalue,
- workspace:FindFirstChild(Zonesss),
- newCFrame,
- true
- )
- end)
- end
- TASK1 = true
- local blocks = workspace.Blocks:FindFirstChild(LNplayer):GetChildren()
- while #blocks < #parts do
- task.wait(0.5)
- blocks = workspace.Blocks:FindFirstChild(LNplayer):GetChildren()
- end
- for i = 1, #parts do
- if getgenv().ImgLoaderStat == false then
- break
- end
- task.spawn(function()
- local part = parts[i]
- if not part then
- return
- end
- if getgenv().ImgLoaderStat == false then
- return
- end
- local WORLDPOS = part.Position
- local partRot = part.CFrame - part.Position
- local newwCFrame = CFrame.new(WORLDPOS) * partRot * CFrame.Angles(0, math.rad(90), 0)
- local targetBlock = blocks[TotalBlockInBlocksFolderBeforeBuildImageInitYesThisVarIsVeryLong + i]
- if getgenv().ImgLoaderStat == false then
- return
- end
- local ScalePath = player.Backpack:FindFirstChild("ScalingTool") or player.Character:FindFirstChild("ScalingTool")
- ScalePath.RF:InvokeServer(
- targetBlock,
- Vector3.new(Bdepth, blockSize, blockSize),
- newwCFrame
- )
- end)
- end
- TASK2 = true
- ImgParts = workspace.ImagePreview:GetChildren()
- for i = 1, #parts + 1 do
- local color = ImgParts[i].Color
- table.insert(paintData, {
- blocks[TotalBlockInBlocksFolderBeforeBuildImageInitYesThisVarIsVeryLong + i - 1],
- Color3.new(color.R, color.G, color.B)
- })
- end
- local PaintPath = player.Backpack:FindFirstChild("PaintingTool") or player.Character:FindFirstChild("PaintingTool")
- PaintPath.RF:InvokeServer(paintData)
- for _, part in ipairs(folder:GetChildren()) do
- part:destroy()
- end
- TASK3 = true
- if getgenv().ImgLoaderStat == false then
- task.delay(1, function()
- Rayfield:Notify({
- Title = "Image aborted",
- Content = "All unplaced blocks will be deleted",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end)
- else
- task.delay(1, function()
- Rayfield:Notify({
- Title = "Image successfully loaded",
- Content = "You can now use your inventory again",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end)
- end
- task.wait(0.15)
- TASK4 = true
- local remote = player.Character:FindFirstChild("DeleteTool") or player.Backpack:FindFirstChild("DeleteTool")
- for i = 1, #blocks do
- task.spawn(function()
- local block = blocks[i]
- if not block then
- return
- end
- local blockY = block.PrimaryPart and block.PrimaryPart.Position.Y or nil
- if blockY and blockY >= -2200000 and blockY <= -120000 then
- remote.RF:InvokeServer(blocks[i])
- end
- end)
- end
- TASK5 = true
- end
- function onImgBlockSecChanged()
- getgenv().COCO = false
- wait(0.1)
- getgenv().COCO = true
- buildImage()
- end
- local function buildImagePREVIEW(data, blockSize)
- local frameSize = calculateFrameSize(data)
- startPosition = LPTEAM() + cooloffset
- ImgCenterimage = Centerimage(frameSize, startPosition, blockSize)
- local centerImage = workspace.ImagePreview.Centerimage
- if not centerImage then
- return
- end
- rotationCFrame = CFrame.Angles(0, math.rad(angleY - 90), 0)
- Brainrot = centerImage.CFrame * rotationCFrame
- local currentX = startPosition.X
- local currentY = startPosition.Y
- local currentZ = startPosition.Z
- local initialX = startPosition.X
- local dataIndex = 1
- local centerImage = workspace.ImagePreview.Centerimage
- if not centerImage then
- return
- end
- local centerCFrame = centerImage.CFrame
- if currentConnection then
- currentConnection:Disconnect()
- end
- currentConnection = RunService.Heartbeat:Connect(function()
- local finished = false
- for _ = 1, batchSize do
- if dataIndex > #data then
- finished = true
- break
- end
- local r, g, b = data[dataIndex], data[dataIndex + 1], data[dataIndex + 2]
- if r == "B" and g == "B" and b == "B" then
- currentX = initialX
- currentY = currentY - blockSize
- elseif r == "R" and g == "R" and b == "R" then
- currentX = currentX + blockSize
- elseif type(r) == "number" and type(g) == "number" and type(b) == "number" then
- local block = Instance.new("Part")
- block.Size = Vector3.new(blockSize, blockSize, Bdepth)
- block.Color = Color3.fromRGB(r, g, b)
- block.Anchored = true
- block.Material = Enum.Material.SmoothPlastic
- block.CastShadow = false
- block.Parent = previewFolder
- local blockPosition = Vector3.new(currentX, currentY, currentZ) + cooloffset
- local relativeCFrame = centerCFrame:ToObjectSpace(CFrame.new(blockPosition))
- block.CFrame = Brainrot * relativeCFrame
- currentX = currentX + blockSize
- end
- dataIndex += 3
- end
- if finished then
- currentConnection:Disconnect()
- currentConnection = nil
- end
- end)
- end
- Section = ImageLoader:CreateSection("Import Image")
- local ImageLoaderFile = ImageLoader:CreateLabel("Details will be displayed here", 72272740678757, Color3.fromRGB(121, 188, 226), false)
- local URL_RESO_VALUE = 4
- local TBLOCK = 0
- local BLKLD = 0
- local FI = 0
- local Input = ImageLoader:CreateInput({
- Name = "File or Url",
- CurrentValue = "",
- PlaceholderText = "File/Url",
- RemoveTextAfterFocusLost = true,
- Flag = "Input1",
- Callback = function(Text)
- TBLOCK = 0
- BLKLD = 0
- TempData = {}
- USEURL= nil
- cooloffset = Vector3.new(0, 0, 0)
- Brainrot = CFrame.identity
- angleY = 0
- rotationCFrame = CFrame.Angles(0, 0, 0)
- local fileName = Text .. ".txt"
- local filePath = "BABFT/Image/" .. fileName
- ImageLoaderFile:Set("Fetching...", 72272740678757, Color3.fromRGB(121, 188, 226), false)
- if string.sub(Text, 1, 6) == "https:" then
- ImageLoaderFile:Set("Method: URL | Status: Fetching...", 110690411966110, Color3.fromRGB(121, 188, 226), false)
- local url = "https://therealasu.pythonanywhere.com/process_image" -- It is useless to DDOS it, all you're going to do is DDOS pythonanywhere which are protected against that, and the server doesn't cost me anything, it's free
- local headers = {
- ["Content-Type"] = "application/json"
- }
- local function getImageData(imageUrl, resolution)
- local body = HttpService:JSONEncode({
- image_url = imageUrl,
- resolution = resolution
- })
- local success, result = pcall(function()
- return request({
- Url = url,
- Method = "POST",
- Headers = headers,
- Body = body
- })
- end)
- if success then
- if result.StatusCode == 200 then
- local responseData = result.Body
- return responseData
- else
- ImageLoaderFile:Set("Method: URL | Status: Error", 110690411966110, Color3.fromRGB(255, 66, 41), false)
- return nil
- end
- else
- ImageLoaderFile:Set("Method: URL | Status: Error", 110690411966110, Color3.fromRGB(255, 66, 41), false)
- Rayfield:Notify({
- Title = "Error ",
- Content = "Could not Fetch data",
- Duration = 6.5,
- Image = 124144713366592,
- })
- return nil
- end
- end
- local response = getImageData(Text, URL_RESO_VALUE)
- if response then
- local success, result = pcall(function()
- return HttpService:JSONDecode(response)
- end)
- if success and result then
- if result.error then
- ImageLoaderFile:Set("Method: URL | Status: Error", 110690411966110, Color3.fromRGB(255, 66, 41), false)
- Rayfield:Notify({
- Title = "Error",
- Content = "The API may be overloaded OR Url not supported , there's an alternative and a easy fix tutorial in the Discord server",
- Duration = 6.5,
- Image = 124144713366592,
- })
- else
- USEURL = true
- TempData = response
- ImageLoaderFile:Set("Method: URL | Status: Fetched | You can enable preview", 110690411966110, Color3.fromRGB(133, 230, 138), false)
- Rayfield:Notify({
- Title = "Success!",
- Content = "Your URL has been converted and is ready to use",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- else
- TempData = response
- USEURL = true
- ImageLoaderFile:Set("Method: URL | Status: Fetched | You can enable preview", 110690411966110, Color3.fromRGB(133, 230, 138), false) -- how the fk
- Rayfield:Notify({
- Title = "Success!",
- Content = "Your URL has been converted and is ready to use",
- Duration = 6.5,
- Image = 124144713366592,
- })
- --[[
- ImageLoaderFile:Set("Method: URL | Status: Error", 110690411966110, Color3.fromRGB(255, 66, 41), false)
- Rayfield:Notify({
- Title = "Error",
- Content = "Failed to decode the server response. The url may not be supported or valid",
- Duration = 6.5,
- Image = 124144713366592,
- })
- ]]
- end
- else
- ImageLoaderFile:Set("Method: URL | Status: Error", 110690411966110, Color3.fromRGB(255, 66, 41), false)
- Rayfield:Notify({
- Title = "Error",
- Content = "The API may be overloaded OR Url not supported , there's an alternative and a easy fix tutorial in the Discord server",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- else
- USEURL = false
- if isfile(filePath) then
- FileImage = fileName
- ImageLoaderFile:Set("Method: File | Status: Success | You can enable preview", 81435876451920, Color3.fromRGB(133, 230, 138), false)
- Rayfield:Notify({
- Title = "Success!",
- Content = "file: " .. fileName .. " found!",
- Duration = 6.5,
- Image = 124144713366592,
- })
- else
- FileImage = nil
- ImageLoaderFile:Set("Method: File | Status: Error", 81435876451920, Color3.fromRGB(255, 66, 41), false)
- Rayfield:Notify({
- Title = "Error | File not found",
- Content = "Make sure the file " .. fileName .. " exists or the URL is valid, do not put '.txt' in the TextBox",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- end
- end,
- })
- local Input = ImageLoader:CreateInput({
- Name = "Resolution [only for URL] [Higher = less blocks]",
- CurrentValue = "4",
- PlaceholderText = "Number",
- RemoveTextAfterFocusLost = false,
- Flag = "Input1",
- Callback = function(Nb)
- URL_RESO_VALUE = tostring(Nb)
- end,
- })
- local Divider = ImageLoader:CreateDivider()
- Section = ImageLoader:CreateSection("Preview")
- local TogglePreview = ImageLoader:CreateToggle({
- Name = "Preview",
- CurrentValue = false,
- Callback = function(Value)
- if Value then
- BLKLD = 0
- TBLOCK = 0
- local filePath = "BABFT/Image/" .. (FileImage or "default.txt")
- local fileContent = {}
- if USEURL == false then
- fileContent = readFile(filePath)
- else
- fileContent = TempData
- end
- if not fileContent then return end
- local data
- data = parseColors(fileContent)
- buildImagePREVIEW(data, blockSize)
- else
- for _, skibidi in ipairs(previewFolder:GetChildren()) do
- if skibidi.Name ~= "PreviewSize" then
- skibidi:Destroy()
- end
- end
- end
- end,
- })
- local ToggleGrid = ImageLoader:CreateToggle({
- Name = "Grid",
- CurrentValue = false,
- Callback = function(Value)
- if Value then
- local filePath = "BABFT/Image/" .. (FileImage or "default.txt")
- local fileContent = {}
- if USEURL == false then
- fileContent = readFile(filePath)
- else
- fileContent = TempData
- end
- if not fileContent then return end
- local data = parseColors(fileContent)
- local frameSize = calculateFrameSize(data)
- startPosition = LPTEAM()
- previewFrame(frameSize, startPosition, blockSize)
- else
- if PreviewPart then
- PreviewPart:Destroy()
- PreviewPart = nil
- else
- Rayfield:Notify({
- Title = "Error",
- Content = "No file or invalid file",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- end
- end,
- })
- local Slider = ImageLoader:CreateSlider({
- Name = "Preview loading speed",
- Range = {100, 4000},
- Increment = 25,
- Suffix = "block/sec",
- CurrentValue = 750,
- Flag = "",
- Callback = function(Value)
- batchSize = Value
- end,
- })
- local Divider = ImageLoader:CreateDivider()
- Section = ImageLoader:CreateSection("modifiers")
- local Dropdown = ImageLoader:CreateDropdown({
- Name = "Block Type",
- Options = {
- "BrickBlock",
- "CoalBlock",
- "ConcreteBlock",
- "FabricBlock",
- "GlassBlock",
- "GoldBlock",
- "GrassBlock",
- "IceBlock",
- "MarbleBlock",
- "MetalBlock",
- "NeonBlock",
- "ObsidianBlock",
- "PlasticBlock",
- "RustedBlock",
- "SmoothWoodBlock",
- "StoneBlock",
- "TitaniumBlock",
- "ToyBlock",
- "WoodBlock"
- },
- CurrentOption = {"PlasticBlock"},
- MultipleOptions = false,
- Flag = "",
- Callback = function(Options)
- BlockType = Options[1]
- end,
- })
- local Input = ImageLoader:CreateInput({
- Name = "Move multiplier",
- CurrentValue = "45",
- PlaceholderText = "number",
- RemoveTextAfterFocusLost = false,
- Flag = "Input1",
- Callback = function(Text)
- Unit = tostring(Text)
- end,
- })
- local originalCFrames = {}
- local Input = ImageLoader:CreateInput({
- Name = "Rotate",
- CurrentValue = "0",
- PlaceholderText = "0 - 360",
- RemoveTextAfterFocusLost = false,
- Flag = "",
- Callback = function(Text)
- angleY = tonumber(Text)
- if not angleY then
- return
- end
- local centerImage = workspace.ImagePreview.Centerimage
- if not centerImage then
- return
- end
- local rotationCFrame = CFrame.Angles(0, math.rad(angleY), 0)
- Brainrot = centerImage.CFrame * rotationCFrame
- for _, skibidi in ipairs(previewFolder:GetChildren()) do
- if skibidi:IsA("BasePart") and skibidi ~= centerImage then
- local centerCFrame = centerImage.CFrame
- if not originalCFrames[skibidi] then
- originalCFrames[skibidi] = skibidi.CFrame
- end
- local originalCFrame = originalCFrames[skibidi]
- local relativeCFrame = centerCFrame:ToObjectSpace(originalCFrame)
- local ghaaa = centerCFrame * rotationCFrame * relativeCFrame
- skibidi.CFrame = ghaaa
- end
- end
- end,
- })
- local Input = ImageLoader:CreateInput({
- Name = "Block Depth",
- CurrentValue = "2",
- PlaceholderText = "Value",
- RemoveTextAfterFocusLost = false,
- Flag = "",
- Callback = function(Text)
- Bdepth = tonumber(Text)
- for _, skibidi in ipairs(previewFolder:GetChildren()) do
- skibidi.Size = Vector3.new(skibidi.Size.X, skibidi.Size.Y, Bdepth)
- end
- end,
- })
- local Slider = ImageLoader:CreateSlider({
- Name = "Size",
- Range = {0.1, 10},
- Increment = 0.1,
- Suffix = "x",
- CurrentValue = 2,
- Flag = "",
- Callback = function(Value)
- blockSize = Value
- end,
- })
- local Button = ImageLoader:CreateButton({
- Name = "Move +X",
- Callback = function()
- for _, skibidi in ipairs(previewFolder:GetChildren()) do
- skibidi.Position = skibidi.Position + Vector3.new(Unit, 0, 0)
- end
- cooloffset = cooloffset + Vector3.new(Unit, 0, 0)
- end,
- })
- local Button = ImageLoader:CreateButton({
- Name = "Move -X",
- Callback = function()
- for _, skibidi in ipairs(previewFolder:GetChildren()) do
- skibidi.Position = skibidi.Position + Vector3.new(-Unit, 0, 0)
- end
- cooloffset = cooloffset + Vector3.new(-Unit, 0, 0)
- end,
- })
- local Button = ImageLoader:CreateButton({
- Name = "Move +Y",
- Callback = function()
- for _, skibidi in ipairs(previewFolder:GetChildren()) do
- skibidi.Position = skibidi.Position + Vector3.new(0, Unit, 0)
- end
- cooloffset = cooloffset + Vector3.new(0, Unit, 0)
- end,
- })
- local Button = ImageLoader:CreateButton({
- Name = "Move -Y",
- Callback = function()
- for _, skibidi in ipairs(previewFolder:GetChildren()) do
- skibidi.Position = skibidi.Position + Vector3.new(0, -Unit, 0)
- end
- cooloffset = cooloffset + Vector3.new(0, -Unit, 0)
- end,
- })
- local Button = ImageLoader:CreateButton({
- Name = "Move +Z",
- Callback = function()
- for _, skibidi in ipairs(previewFolder:GetChildren()) do
- skibidi.Position = skibidi.Position + Vector3.new(0, 0, Unit)
- end
- cooloffset = cooloffset + Vector3.new(0, 0, Unit)
- end,
- })
- local Button = ImageLoader:CreateButton({
- Name = "Move -Z",
- Callback = function()
- for _, skibidi in ipairs(previewFolder:GetChildren()) do
- skibidi.Position = skibidi.Position + Vector3.new(0, 0, -Unit)
- end
- cooloffset = cooloffset + Vector3.new(0, 0, -Unit)
- end,
- })
- local Divider = ImageLoader:CreateDivider()
- local TotalBlockInBlocksFolderBeforeBuildImageInitYesThisVarIsVeryLongButThisOneChangeLol = 0
- local TotalBlockInBlocksFolderBeforeBuildImageInitYesThisVarIsVeryLongButThisOneDoesntChangeLol = 0
- local ImgStatsP = ImageLoader:CreateParagraph({Title = "Information", Content = "Require PaintTool and ScalingTool"})
- local Button = ImageLoader:CreateButton({
- Name = "Build Image | Preview must be enabled",
- Callback = function()
- Rayfield:Notify({
- Title = "Image Loader",
- Content = "DO NOT place blocks until finished",
- Duration = 10,
- Image = 124144713366592,
- })
- TBLOCK = 0
- TotalBlockInBlocksFolderBeforeBuildImageInitYesThisVarIsVeryLong = 0
- local blocksFolder = workspace:FindFirstChild("Blocks")
- if blocksFolder then
- local blockssFolder = blocksFolder:FindFirstChild(Nplayer)
- if blockssFolder then
- TotalBlockInBlocksFolderBeforeBuildImageInitYesThisVarIsVeryLong = #blockssFolder:GetChildren()
- TotalBlockInBlocksFolderBeforeBuildImageInitYesThisVarIsVeryLongButThisOneDoesntChangeLol = #blockssFolder:GetChildren()
- local parts = {}
- local folder = workspace:FindFirstChild("ImagePreview")
- for _, part in ipairs(folder:GetChildren()) do
- if part:IsA("BasePart") and part.Name == "Part" then
- table.insert(parts, part)
- end
- end
- TBLOCK = #parts
- else
- Rayfield:Notify({
- Title = "Error",
- Content = "Folder not found, try rejoin",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- else
- Rayfield:Notify({
- Title = "Error",
- Content = "Folder not found, try rejoin",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- BlockLoaded = false
- getgenv().ImgLoaderStat = true
- task.spawn(buildImageFAST)
- end,
- })
- local Button = ImageLoader:CreateButton({
- Name = "Abort",
- Callback = function()
- getgenv().ImgLoaderStat = false
- Rayfield:Notify({
- Title = "Abortion request",
- Content = "the next task will not be applied, note that this button is only useful during the task where blocks are loaded",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end,
- })
- local Label = ImageLoader:CreateLabel("Building speed will also depend on your ping. You can crash if your wifi speed is too slow.", 134637165939940, Color3.fromRGB(204, 156, 0), true)
- local Label = ImageLoader:CreateLabel("the image may not load if many blocks have already been placed, I have to fix this", 134637165939940, Color3.fromRGB(204, 156, 0), true)
- function ImgStats()
- local startTime = tick()
- while true do
- local blocksFolder = workspace:FindFirstChild("Blocks")
- local blockssFolder = blocksFolder:FindFirstChild(Nplayer)
- local totalBlocks = #blockssFolder:GetChildren()
- local BLKLD = totalBlocks - TotalBlockInBlocksFolderBeforeBuildImageInitYesThisVarIsVeryLongButThisOneDoesntChangeLol
- local elapsedTime = tick() - startTime
- local blocksPerSecond = BLKLD / elapsedTime
- local blocksRemaining = TBLOCK - BLKLD
- local timeRemaining = blocksRemaining / blocksPerSecond
- local FI = math.max(timeRemaining, 0)
- if not BlockLoaded then
- ImgStatsP:Set({
- Title = "Information",
- Content = "Blocks Loaded: "..BLKLD.."/"..TBLOCK..
- "\nFinish in: " .. math.floor(FI) .. "s"
- })
- if BLKLD >= TBLOCK then
- BlockLoaded = true
- end
- end
- task.wait(1.2)
- end
- end
- function ImgStats2()
- while true do
- if BlockLoaded then
- if TASK1 then
- ImgStatsP:Set({
- Title = "Information",
- Content = "Blocks Loaded!\nPlacing Blocks..."
- })
- TASK1 = false
- elseif TASK2 then
- ImgStatsP:Set({
- Title = "Information",
- Content = "Blocks Loaded!\nPlacing Blocks..."
- })
- TASK2 = false
- elseif TASK3 then
- ImgStatsP:Set({
- Title = "Information",
- Content = "Blocks Loaded!\nBlocks Placed!\nColoring Blocks..."
- })
- TASK3 = false
- elseif TASK4 then
- ImgStatsP:Set({
- Title = "Information",
- Content = "Blocks Loaded!\nBlocks Placed!\nBlocks Colored!\ndeleting unplaced blocks..."
- })
- TASK4 = false
- elseif TASK5 then
- ImgStatsP:Set({
- Title = "Information",
- Content = "Blocks Loaded!\nBlocks Placed!\nBlocks Colored!\nUnplaced blocks deleted!\nProcess end"
- })
- TASK5 = false
- end
- end
- wait(0.2)
- end
- end
- local initimgfilesbool = false
- function initimgfiles()
- while initimgfilesbool == true do
- updateImageFiles()
- wait(1)
- end
- end
- --AUTO BUILD
- local Label = AutoBuild:CreateLabel("Check the Information tab to use this feature", 134637165939940, Color3.fromRGB(204, 156, 0), true)
- local Label = AutoBuild:CreateLabel("THIS FEATURE IS IN WIP - it's not working right now", 134637165939940, Color3.fromRGB(204, 31, 0), true)
- local Divider = AutoBuild:CreateDivider()
- --[[
- Section = AutoBuild:CreateSection("Steal Build")
- local Dropdown = AutoBuild:CreateDropdown({
- Name = "Target Player",
- Options = {"Option 1","Option 2"},
- CurrentOption = {"Option 1"},
- MultipleOptions = false,
- Flag = "Dropdown1", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
- Callback = function(Options)
- -- The function that takes place when the selected option is changed
- -- The variable (Options) is a table of strings for the current selected options
- end,
- })
- local Input = AutoBuild:CreateInput({
- Name = "Build Name",
- CurrentValue = "",
- PlaceholderText = "Name",
- RemoveTextAfterFocusLost = false,
- Flag = "Input1",
- Callback = function(Text)
- -- The function that takes place when the input is changed
- -- The variable (Text) is a string for the value in the text box
- end,
- })
- local Button = AutoBuild:CreateButton({
- Name = "Save",
- Callback = function()
- -- The function that takes place when the button is pressed
- end,
- })
- local Divider = AutoBuild:CreateDivider()
- Section = AutoBuild:CreateSection("Auto Build")
- local Dropdown = AutoBuild:CreateDropdown({
- Name = "Build File",
- Options = {"Option 1","Option 2"},
- CurrentOption = {"Option 1"},
- MultipleOptions = false,
- Flag = "Dropdown1", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
- Callback = function(Options)
- -- The function that takes place when the selected option is changed
- -- The variable (Options) is a table of strings for the current selected options
- end,
- })
- local Toggle = AutoBuild:CreateToggle({
- Name = "Preview",
- CurrentValue = false,
- Flag = "Toggle1", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
- Callback = function(Value)
- -- The function that takes place when the toggle is pressed
- -- The variable (Value) is a boolean on whether the toggle is true or false
- end,
- })
- local Toggle = AutoBuild:CreateToggle({
- Name = "Safe Mode",
- CurrentValue = false,
- Flag = "Toggle1", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
- Callback = function(Value)
- -- The function that takes place when the toggle is pressed
- -- The variable (Value) is a boolean on whether the toggle is true or false
- end,
- })
- local Button = AutoBuild:CreateButton({
- Name = "Load",
- Callback = function()
- -- The function that takes place when the button is pressed
- end,
- })
- ]]
- local Paragraph = BlockNeeded:CreateParagraph({Title = "Important", Content = "Preview mode must be enabled to calculate the number of blocks required"})
- local Divider = BlockNeeded:CreateDivider()
- Section = BlockNeeded:CreateSection("Image Loader")
- local LblBlockNeeded = BlockNeeded:CreateLabel("No block found", 72272740678757, Color3.fromRGB(255, 255, 255), true)
- local Divider = BlockNeeded:CreateDivider()
- Section = BlockNeeded:CreateSection("Auto Build")
- local Label = BlockNeeded:CreateLabel("THIS FEATURE IS IN WIP", 134637165939940, Color3.fromRGB(204, 31, 0), true)
- local Divider = BlockNeeded:CreateDivider()
- local NbBlockneeded = 0
- local NbBlockmissing = 0
- local Button = BlockNeeded:CreateButton({
- Name = "Refresh List",
- Callback = function()
- NbBlockneeded = 0
- local blocktypeID = BlockId[BlockType]
- for _, skibidi in ipairs(workspace.ImagePreview:GetChildren()) do
- if skibidi.Name == "Part" then
- local blockVolume = skibidi.Size.X * skibidi.Size.Y * skibidi.Size.Z
- local blockSize = (blockVolume < 8) and 8 or blockVolume
- NbBlockneeded = NbBlockneeded + blockSize
- end
- end
- UUserBlockList()
- LPBlockvalue = UserBlockList[BlockType]
- NbBlockneeded = math.ceil(NbBlockneeded / 8)
- NbBlockmissing = NbBlockneeded - LPBlockvalue
- if NbBlockmissing < 0 then
- NbBlockmissing = 0
- end
- LblBlockNeeded:Set("Need " .. tostring(NbBlockneeded) .. " " .. BlockType .. " and " .. tostring(NbBlockmissing) .. " blocks are missing", blocktypeID, Color3.fromRGB(255, 255, 255), true)
- end,
- })
- Section = Miscellaneous:CreateSection("Teleportation")
- local Button = Miscellaneous:CreateButton({
- Name = "White",
- Callback = function()
- game.Players.LocalPlayer.Character:SetPrimaryPartCFrame(CFrame.new(-49.8510132, -9.7000021, -520.37085, -1, 0, 0, 0, 1, 0, 0, 0, -1))
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Black",
- Callback = function()
- game.Players.LocalPlayer.Character:SetPrimaryPartCFrame(CFrame.new(-503.82843, -9.7000021, -69.433342, 0, 0, -1, 0, 1, 0, 1, 0, 0))
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Red",
- Callback = function()
- game.Players.LocalPlayer.Character:SetPrimaryPartCFrame(CFrame.new(396.697418, -9.7000021, -64.7801361, 0, 0, 1, 0, 1, -0, -1, 0, 0))
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Blue",
- Callback = function()
- game.Players.LocalPlayer.Character:SetPrimaryPartCFrame(CFrame.new(396.697418, -9.7000021, 300.219849, 0, 0, 1, 0, 1, -0, -1, 0, 0))
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Magenta",
- Callback = function()
- game.Players.LocalPlayer.Character:SetPrimaryPartCFrame(CFrame.new(396.697418, -9.7000021, 647.219849, 0, 0, 1, 0, 1, -0, -1, 0, 0))
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Yellow",
- Callback = function()
- game.Players.LocalPlayer.Character:SetPrimaryPartCFrame(CFrame.new(-503.82843, -9.7000021, 640.56665, 0, 0, -1, 0, 1, 0, 1, 0, 0))
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Green",
- Callback = function()
- game.Players.LocalPlayer.Character:SetPrimaryPartCFrame(CFrame.new(-503.82843, -9.7000021, 293.56665, 0, 0, -1, 0, 1, 0, 1, 0, 0))
- end,
- })
- Section = Miscellaneous:CreateSection("Troll")
- local Button = Miscellaneous:CreateButton({
- Name = "Disable Maximum click detector distance",
- Callback = function()
- for _, object in ipairs(game:GetDescendants()) do
- if object:IsA("ClickDetector") then
- object.MaxActivationDistance = 9995649849899589
- end
- end
- Rayfield:Notify({
- Title = "Maximum click detector distance Disabled!",
- Content = "You can click on a lever, button, etc.. from anywhere",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Force Share Mode",
- Callback = function()
- local args = {
- [1] = "ShareBlocks",
- [2] = true
- }
- workspace.SettingFunction:InvokeServer(unpack(args))
- Rayfield:Notify({
- Title = "Share Mode",
- Content = "you can use leader's blocks now",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "disable Share Mode",
- Callback = function()
- local args = {
- [1] = "ShareBlocks",
- [2] = false
- }
- workspace.SettingFunction:InvokeServer(unpack(args))
- Rayfield:Notify({
- Title = "Share Mode",
- Content = "Share Mode is disabled",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Color all blocks",
- Callback = function()
- local playerteam = player.Team.Name
- local blocktoget = game:GetService("Teams"):FindFirstChild(playerteam).TeamLeader.Value
- local playerFolder = game.Workspace.Blocks:FindFirstChild(blocktoget)
- local paintData = {}
- local totalBlocks = #playerFolder:GetChildren()
- for _, block in ipairs(playerFolder:GetChildren()) do
- local color = Color3.new(
- math.random(0, 1000) / 1000,
- math.random(0, 1000) / 1000,
- math.random(0, 1000) / 1000
- )
- table.insert(paintData, {
- block,
- color
- })
- if #paintData >= 10000 then
- game:GetService("Players").LocalPlayer.Backpack.PaintingTool.RF:InvokeServer(paintData)
- paintData = {}
- end
- end
- if #paintData > 0 then
- game:GetService("Players").LocalPlayer.Backpack.PaintingTool.RF:InvokeServer(paintData)
- end
- end,
- })
- local Toggle = Miscellaneous:CreateToggle({
- Name = "Loop Color all blocks",
- CurrentValue = false,
- Flag = "Toggle1",
- Callback = function(Value)
- while Value do
- if Value then
- local playerteam = player.Team.Name
- local blocktoget = game:GetService("Teams"):FindFirstChild(playerteam).TeamLeader.Value
- local playerFolder = game.Workspace.Blocks:FindFirstChild(blocktoget)
- local paintData = {}
- local totalBlocks = #playerFolder:GetChildren()
- for _, block in ipairs(playerFolder:GetChildren()) do
- local color = Color3.new(
- math.random(0, 1000) / 1000,
- math.random(0, 1000) / 1000,
- math.random(0, 1000) / 1000
- )
- table.insert(paintData, {
- block,
- color
- })
- if #paintData >= 10000 then
- game:GetService("Players").LocalPlayer.Backpack.PaintingTool.RF:InvokeServer(paintData)
- paintData = {}
- end
- end
- if #paintData > 0 then
- game:GetService("Players").LocalPlayer.Backpack.PaintingTool.RF:InvokeServer(paintData)
- end
- task.wait()
- end
- end
- end,
- })
- local FStats = Miscellaneous:CreateParagraph({Title = "Info", Content = "The button above will colors all the player's blocks with random colors (if sharing mode enable, it will color the team leader's blocks, it also works when you are the leader), if it doesn't stop, use the paint tool, it will stop the script"})
- local function removeLock()
- local Teams = {"BlackZone", "CamoZone", "MagentaZone", "New YellerZone", "Really blueZone", "Really redZone", "WhiteZone"}
- for _, teamName in ipairs(Teams) do
- local teamPart = workspace:FindFirstChild(teamName)
- if teamPart then
- local lockFolder = teamPart:FindFirstChild("Lock")
- if lockFolder then
- lockFolder:Destroy()
- end
- end
- end
- end
- local previousPosition = nil
- local counterIsoMODE = false
- local function trackPlayerPosition()
- while FcMaster == true do
- if counterIsoMODE then
- removeLock()
- local character = player.Character
- if character then
- local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
- if humanoidRootPart then
- previousPosition = humanoidRootPart.CFrame
- end
- end
- end
- task.wait(.1)
- end
- end
- local function onCharacterAdded(character)
- if counterIsoMODE then
- local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
- if previousPosition then
- humanoidRootPart.CFrame = previousPosition
- end
- end
- end
- player.CharacterAdded:Connect(onCharacterAdded)
- task.spawn(trackPlayerPosition)
- local Toggle = Miscellaneous:CreateToggle({
- Name = "Counter Isolation Mode",
- CurrentValue = false,
- Flag = "Toggle1",
- Callback = function(Value)
- counterIsoMODE = Value
- if counterIsoMODE then
- Rayfield:Notify({
- Title = "Counter Isolation Mode",
- Content = "you will reappear where you died",
- Duration = 6.5,
- Image = 124144713366592,
- })
- else
- Rayfield:Notify({
- Title = "Counter Isolation Mode",
- Content = "you will no longer reappear where you died",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Disable Blocks zone restriction for quest",
- Callback = function()
- workspace:FindFirstChild(LPTEAM2()).QuestNum.Value = 0
- Rayfield:Notify({
- Title = "Blocks restriction",
- Content = "the restriction zone is disabled",
- Duration = 6.5,
- Image = 124144713366592,
- })
- end,
- })
- Section = Miscellaneous:CreateSection("FPS Booster")
- local Button = Miscellaneous:CreateButton({
- Name = "Remove All Texture",
- Callback = function()
- for _, obj in ipairs(game:GetDescendants()) do
- if obj:IsA("Texture") or obj:IsA("Decal") then
- obj:Destroy()
- end
- if obj:IsA("BasePart") then
- obj.Material = Enum.Material.SmoothPlastic
- end
- end
- end,
- })
- local Toggle = Miscellaneous:CreateToggle({
- Name = "Hide useless parts",
- CurrentValue = false,
- Flag = "Toggle1",
- Callback = function(Value)
- if Value then
- workspace.MainTerrain.Parent = game:GetService("ReplicatedStorage")
- else
- game:GetService("ReplicatedStorage").MainTerrain.Parent = workspace
- end
- end,
- })
- local Toggle = Miscellaneous:CreateToggle({
- Name = "Hide players blocks",
- CurrentValue = false,
- Flag = "Toggle1",
- Callback = function(Value)
- if Value then
- workspace.Blocks.Parent = game:GetService("ReplicatedStorage")
- else
- game:GetService("ReplicatedStorage").Blocks.Parent = workspace
- end
- end,
- })
- local Toggle = Miscellaneous:CreateToggle({
- Name = "Hide All [Optimized for Auto Farm]",
- CurrentValue = false,
- Flag = "Toggle1",
- Callback = function(Value)
- local Stuff = {
- "Blocks",
- "Challenge",
- "TempStuff",
- "Teams",
- "MainTerrain",
- "OtherStages",
- "BlackZone",
- "CamoZone",
- "MagentaZone",
- "New YellerZone",
- "Really blueZone",
- "Really redZone",
- "Sand",
- "Water",
- "WhiteZone",
- "WaterMask"
- }
- if Value then
- for _, v in ipairs(Stuff) do
- local object = workspace:FindFirstChild(v) or workspace.BoatStages:FindFirstChild("OtherStages")
- if object then
- object.Parent = game:GetService("ReplicatedStorage")
- end
- end
- else
- for _, v in ipairs(Stuff) do
- local object = game:GetService("ReplicatedStorage"):FindFirstChild(v)
- if object then
- if v == "OtherStages" then
- game:GetService("ReplicatedStorage").OtherStages.Parent = workspace.BoatStages
- else
- object.Parent = workspace
- end
- end
- end
- end
- end,
- })
- local spoofSpeed = 40
- Section = Miscellaneous:CreateSection("Spoofer")
- local Slider = Miscellaneous:CreateSlider({
- Name = "Wheel Speed",
- Range = {10, 1000},
- Increment = 10,
- Suffix = " - MaxSpeed",
- CurrentValue = 40,
- Flag = "Slider1",
- Callback = function(Value)
- spoofSpeed = Value
- end,
- })
- local Button = Miscellaneous:CreateButton({
- Name = "Spoof speed",
- Callback = function()
- local itcihmsoeoesoes = workspace.Blocks:FindFirstChild(Nplayer)
- if itcihmsoeoesoes then
- for _, model in ipairs(itcihmsoeoesoes:GetChildren()) do
- if model:IsA("Model") then
- local maxSpeed = model:FindFirstChild("MaxSpeed")
- if maxSpeed and maxSpeed:IsA("NumberValue") then
- maxSpeed.Value = spoofSpeed
- end
- end
- end
- end
- end,
- })
- Section = Miscellaneous:CreateSection("Teleport to Place")
- local Button = Miscellaneous:CreateButton({
- Name = "Inner Cloud",
- Callback = function()
- TeleportService:Teleport(1930863474, game.Players.LocalPlayer)
- end,
- })
- Button = Miscellaneous:CreateButton({
- Name = "Christmas",
- Callback = function()
- TeleportService:Teleport(1930866268, game.Players.LocalPlayer)
- end,
- })
- local function Init()
- local initclock = coroutine.create(initclock)
- local ImgStats = coroutine.create(ImgStats)
- local initimgfiles = coroutine.create(initimgfiles)
- local ImgStats2 = coroutine.create(ImgStats2)
- coroutine.resume(initclock)
- coroutine.resume(ImgStats)
- coroutine.resume(initimgfiles)
- coroutine.resume(ImgStats2)
- end
- zdzddz = Miscellaneous:CreateButton({
- Name = "Halloween [maybe need an anti-kick]",
- Callback = function()
- TeleportService:Teleport(1930665568, game.Players.LocalPlayer) -- WARNING: YOU WILL GET KICKED WHEN YOU JOIN IT, need to try with a client-sided anti kick
- end,
- })
- -- queueteleport(loadstring(game:HttpGet('https://raw.githubusercontent.com/TheRealAsu/BABFT/refs/heads/main/Source.lua'))())
- --[[
- ▀█████████▄ ▄██ ▄ ▄████████ ▄████████ ███ █▄
- ███ ███ ███ ██▄ ███ ███ ███ ███ ███ ███
- ███ ███ ███▄▄▄███ ███ ███ ███ █▀ ███ ███
- ▄███▄▄▄██▀ ▀▀▀▀▀▀███ ███ ███ ███ ███ ███
- ▀▀███▀▀▀██▄ ▄██ ███ ▀███████████ ▀███████████ ███ ███
- ███ ██▄ ███ ███ ███ ███ ███ ███ ███
- ███ ███ ███ ███ ███ ███ ▄█ ███ ███ ███
- ▄█████████▀ ▀█████▀ ███ █▀ ▄████████▀ ████████▀
- @thereal_asu | Build A Boat For Treasure
- discord server: https://discord.gg/zrAB2m5gvz
- ]]
- Init()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement