--[[ 🔨 BUILD HELPER — PREMIUM EDITION Копирование постройки + Автофарм + Anti-AFK Стиль интерфейса: градиенты, пульсация, свечение. ]] local vim = game:GetService("VirtualInputManager") local players = game:GetService("Players") local TS = game:GetService("TweenService") local workspace = game:GetService("Workspace") local replicatedStorage = game:GetService("ReplicatedStorage") local runService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local player = players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local HRP = character:WaitForChild("HumanoidRootPart") local tweening = false local index = 1 local blockData = player:WaitForChild("Data") local blocksFolder = workspace:WaitForChild("Blocks") local pastePercent = 0 local usedList = {} local selectedBase = nil local autofarm = false local ignoreAnchored = true local clipboard = nil -- ========================================== -- ТЕМА (стиль "Сын хуйни") -- ========================================== local T = { Bg = Color3.fromRGB(10, 10, 16), Bg2 = Color3.fromRGB(18, 18, 28), Card = Color3.fromRGB(24, 24, 36), CardHover = Color3.fromRGB(36, 36, 54), Accent1 = Color3.fromRGB(130, 90, 255), Accent2 = Color3.fromRGB(0, 200, 255), Accent3 = Color3.fromRGB(255, 80, 180), Success = Color3.fromRGB(0, 220, 140), Danger = Color3.fromRGB(255, 70, 90), Text = Color3.fromRGB(255, 255, 255), TextDim = Color3.fromRGB(140, 140, 170), } local function corner(i, r) local c = Instance.new("UICorner", i); c.CornerRadius = UDim.new(0, r or 10); return c end local function stroke(i, c, t, tr) local s = Instance.new("UIStroke", i); s.Color = c or T.Accent1; s.Thickness = t or 1; s.Transparency = tr or 0; return s end local function grad(i, c1, c2, r) local g = Instance.new("UIGradient", i); g.Color = ColorSequence.new(c1, c2); g.Rotation = r or 0; return g end -- ========================================== -- CORE FUNCTIONS (без изменений) -- ========================================== local function getBlockID(name) return blockData:FindFirstChild(name) and blockData:FindFirstChild(name).Value or 9 end local function setTransparency(transparencyWanted, block) if not block then return end if block.PPart.Transparency == transparencyWanted then return end local calls = transparencyWanted / 0.25 local tool if character:FindFirstChild("PropertiesTool") then tool = character["PropertiesTool"] else humanoid:EquipTool(player.Backpack.PropertiesTool); task.wait(); tool = character.PropertiesTool end local args = {"Transparency", {block}} task.spawn(function() for i = 1, calls do tool.SetPropertieRF:InvokeServer(unpack(args)) end end) end local function setAnchored(block) if not block then return end local tool if character:FindFirstChild("PropertiesTool") then tool = character["PropertiesTool"] else humanoid:EquipTool(player.Backpack.PropertiesTool); task.wait(); tool = character.PropertiesTool end local args = {"Anchored", {block}} task.spawn(function() tool.SetPropertieRF:InvokeServer(unpack(args)) end) end local function rescaleBlock(block, newPos, newSize) if not block then return end local tool if character:FindFirstChild("ScalingTool") then tool = character["ScalingTool"] else humanoid:EquipTool(player.Backpack.ScalingTool); task.wait(); tool = character.ScalingTool end local args = {block, newSize, newPos} task.spawn(function() tool.RF:InvokeServer(unpack(args)) end) end local function getPlayerZone(playerInstance) local teamColor = playerInstance.TeamColor for _, v in pairs(workspace:GetChildren()) do if v:FindFirstChild("TeamColor") and v.TeamColor.Value then if v.TeamColor.Value == teamColor then return v end end end return nil end local function placeBlock(name, pos, relativeTo, Anchored) local tool if character:FindFirstChild("BuildingTool") then tool = character["BuildingTool"] else humanoid:EquipTool(player.Backpack.BuildingTool); task.wait(); tool = character.BuildingTool end if not relativeTo then relativeTo = getPlayerZone(player) end local args = {name, getBlockID(name), relativeTo, relativeTo and relativeTo.CFrame:ToObjectSpace(pos) or CFrame.new(), ignoreAnchored and true or Anchored, pos, false} task.spawn(function() tool.RF:InvokeServer(unpack(args)) end) end local function paintBlock(block, color) if not block or not block:FindFirstChild("PPart") then return end if block.PPart.Color == color then return end local tool if character:FindFirstChild("PaintingTool") then tool = character["PaintingTool"] else humanoid:EquipTool(player.Backpack.PaintingTool); task.wait(); tool = character.PaintingTool end local args = {{block, color}} task.spawn(function() tool.RF:InvokeServer(args) end) end local function getJoint(model) for _, v in pairs(model.PPart:GetChildren()) do if v:IsA("Snap") or v:IsA("Weld") then if v.Part1 then if not (v.Part1.Parent == model) then return v.Part1 end end end end return getPlayerZone(player) end local function getNewBlockPos(hisBase, block, myBase) if not block or not block:FindFirstChild("PPart") then return CFrame.new() end if not hisBase or not myBase then return block.PPart.CFrame end local offset = hisBase.CFrame:ToObjectSpace(block.PPart.CFrame) return myBase.CFrame * offset end local function copyBuild(blocks) local t = {} local myBase = getPlayerZone(player) local hisBase = getPlayerZone(players:FindFirstChild(blocks.Name)) for _, block in ipairs(blocks:GetChildren()) do if block:FindFirstChild("PPart") then if not (getBlockID(block.Name) == 0 or (usedList[block.Name] or 0) > getBlockID(block.Name)) then local relative = getJoint(block) relative = relative == hisBase and myBase or relative usedList[block.Name] = (usedList[block.Name] or 0) + 1 table.insert(t, { Name = block.Name, Pos = getNewBlockPos(hisBase, block, myBase), Relative = getPlayerZone(player), Transparency = block.PPart.Transparency, Anchored = block.PPart.Anchored, Size = block.PPart.Size, Color = block.PPart.Color, }) end end end return t end local function getBlock(expected, createdList) local best, bestDist = nil, math.huge for _, b in ipairs(createdList) do if b and b:FindFirstChild("PPart") and b.Name == expected.Name then local dist = (b.PPart.Position - expected.Pos.Position).Magnitude if dist < bestDist then bestDist = dist; best = b end end end return best end local function getPlayerBase() for _, child in pairs(blocksFolder:GetChildren()) do if child.Name == player.Name then return child end end end local function pasteBuild(t, folder) pastePercent = 0 local childrenDebug = 0 local tCount = #t local lastPlaced = tick() local c c = folder.ChildAdded:Connect(function() childrenDebug += 1; lastPlaced = tick() end) for i, v in ipairs(t) do placeBlock(v.Name, v.Pos, v.Relative, v.Anchored) pastePercent += 50 / tCount if i % 20 == 0 then task.wait(0.05) end end repeat task.wait(0.1) until tick() - lastPlaced > 5 local playerBaseList = folder:GetChildren() for i, v in ipairs(t) do local b = getBlock(v, playerBaseList) rescaleBlock(b, v.Pos, v.Size) paintBlock(b, v.Color) setTransparency(v.Transparency, b) if i % 20 == 0 then task.wait(0.05) end pastePercent += 50 / tCount end c:Disconnect() pastePercent = 0 end -- ========================================== -- SCREEN GUI -- ========================================== local SG = Instance.new("ScreenGui") SG.Name = "BuildHelper" SG.ResetOnSpawn = false SG.IgnoreGuiInset = true SG.DisplayOrder = 999 SG.ZIndexBehavior = Enum.ZIndexBehavior.Sibling SG.Parent = player:WaitForChild("PlayerGui") -- ========================================== -- ЧАСТИЦЫ ФОНА -- ========================================== local FX = Instance.new("Frame", SG) FX.Size = UDim2.new(1, 0, 1, 0) FX.BackgroundTransparency = 1 FX.ZIndex = 1 task.spawn(function() while FX.Parent do local star = Instance.new("Frame", FX) local size = math.random(2, 4) star.Size = UDim2.new(0, size, 0, size) star.Position = UDim2.new(math.random(), 0, 1.05, 0) local pool = {T.Accent1, T.Accent2, T.Accent3} star.BackgroundColor3 = pool[math.random(1, 3)] star.BorderSizePixel = 0 star.ZIndex = 1 corner(star, 999) local dur = math.random(5, 10) TS:Create(star, TweenInfo.new(dur, Enum.EasingStyle.Linear), { Position = UDim2.new(star.Position.X.Scale + (math.random() - 0.5) * 0.15, 0, -0.05, 0), BackgroundTransparency = 1, }):Play() task.delay(dur + 0.1, function() star:Destroy() end) task.wait(0.15) end end) -- ========================================== -- ГЛАВНОЕ ОКНО -- ========================================== local W, H = 340, 460 local Main = Instance.new("Frame", SG) Main.Size = UDim2.new(0, W, 0, H) Main.Position = UDim2.new(0, 20, 0.5, -H/2) Main.BackgroundColor3 = T.Bg Main.BackgroundTransparency = 0.05 Main.BorderSizePixel = 0 Main.Active = true Main.Draggable = true Main.ClipsDescendants = true Main.ZIndex = 50 corner(Main, 16) grad(Main, T.Bg, T.Bg2, 135) local MS = stroke(Main, T.Accent1, 1.4, 0.5) local MSG = grad(MS, T.Accent1, T.Accent2, 0) -- Вращение обводки task.spawn(function() local r = 0 while Main.Parent do r = (r + 1) % 360 MSG.Rotation = r task.wait(0.03) end end) -- ========================================== -- HEADER -- ========================================== local Head = Instance.new("Frame", Main) Head.Size = UDim2.new(1, 0, 0, 52) Head.BackgroundColor3 = T.Bg2 Head.BackgroundTransparency = 0.4 Head.BorderSizePixel = 0 Head.ZIndex = 51 corner(Head, 16) local HFix = Instance.new("Frame", Head) HFix.Size = UDim2.new(1, 0, 0, 14) HFix.Position = UDim2.new(0, 0, 1, -14) HFix.BackgroundColor3 = T.Bg2 HFix.BackgroundTransparency = 0.4 HFix.BorderSizePixel = 0 HFix.ZIndex = 51 local HG = grad(Head, T.Accent1, T.Accent2, 15) HG.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.82), NumberSequenceKeypoint.new(0.5, 0.7), NumberSequenceKeypoint.new(1, 0.88), }) -- Иконка с вращением local Icon = Instance.new("Frame", Head) Icon.Size = UDim2.new(0, 32, 0, 32) Icon.Position = UDim2.new(0, 12, 0, 10) Icon.BorderSizePixel = 0 Icon.ZIndex = 52 corner(Icon, 10) local IG = grad(Icon, T.Accent1, T.Accent2, 0) task.spawn(function() local r = 0 while Icon.Parent do r = (r + 2) % 360 IG.Rotation = r task.wait(0.03) end end) local IconTxt = Instance.new("TextLabel", Icon) IconTxt.Size = UDim2.new(1, 0, 1, 0) IconTxt.BackgroundTransparency = 1 IconTxt.Font = Enum.Font.GothamBlack IconTxt.Text = "🔨" IconTxt.TextColor3 = T.Text IconTxt.TextSize = 16 IconTxt.ZIndex = 53 -- Заголовок с градиентом local Title = Instance.new("TextLabel", Head) Title.Size = UDim2.new(1, -120, 0, 22) Title.Position = UDim2.new(0, 54, 0, 8) Title.BackgroundTransparency = 1 Title.Font = Enum.Font.GothamBlack Title.Text = "BUILD HELPER" Title.TextColor3 = T.Text Title.TextSize = 15 Title.TextXAlignment = Enum.TextXAlignment.Left Title.ZIndex = 53 local TG = grad(Title, T.Accent1, T.Accent2, 0) task.spawn(function() local r = 0 while Title.Parent do r = (r + 2) % 360 TG.Rotation = r task.wait(0.03) end end) local TitleStroke = Instance.new("UIStroke", Title) TitleStroke.Color = T.Accent2 TitleStroke.Thickness = 1 TitleStroke.Transparency = 0.4 TitleStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Contextual task.spawn(function() while Title.Parent do TS:Create(TitleStroke, TweenInfo.new(0.9, Enum.EasingStyle.Sine), {Transparency = 0.1, Thickness = 1.6}):Play() task.wait(0.9) TS:Create(TitleStroke, TweenInfo.new(0.9, Enum.EasingStyle.Sine), {Transparency = 0.6, Thickness = 1}):Play() task.wait(0.9) end end) local SubTitle = Instance.new("TextLabel", Head) SubTitle.Size = UDim2.new(1, -120, 0, 14) SubTitle.Position = UDim2.new(0, 54, 0, 28) SubTitle.BackgroundTransparency = 1 SubTitle.Font = Enum.Font.Gotham SubTitle.Text = "copy build • auto farm" SubTitle.TextColor3 = T.TextDim SubTitle.TextSize = 10 SubTitle.TextXAlignment = Enum.TextXAlignment.Left SubTitle.ZIndex = 53 local CloseBtn = Instance.new("TextButton", Head) CloseBtn.Size = UDim2.new(0, 30, 0, 30) CloseBtn.Position = UDim2.new(1, -40, 0, 11) CloseBtn.BackgroundColor3 = T.Danger CloseBtn.BackgroundTransparency = 0.2 CloseBtn.BorderSizePixel = 0 CloseBtn.Font = Enum.Font.GothamBold CloseBtn.Text = "×" CloseBtn.TextColor3 = T.Text CloseBtn.TextSize = 18 CloseBtn.AutoButtonColor = false CloseBtn.ZIndex = 55 CloseBtn.Active = true corner(CloseBtn, 999) CloseBtn.MouseEnter:Connect(function() TS:Create(CloseBtn, TweenInfo.new(0.15), {BackgroundTransparency = 0, Size = UDim2.new(0, 32, 0, 32), Position = UDim2.new(1, -41, 0, 10)}):Play() end) CloseBtn.MouseLeave:Connect(function() TS:Create(CloseBtn, TweenInfo.new(0.15), {BackgroundTransparency = 0.2, Size = UDim2.new(0, 30, 0, 30), Position = UDim2.new(1, -40, 0, 11)}):Play() end) -- ========================================== -- BODY -- ========================================== local Body = Instance.new("Frame", Main) Body.Size = UDim2.new(1, -20, 1, -70) Body.Position = UDim2.new(0, 10, 0, 62) Body.BackgroundTransparency = 1 Body.ZIndex = 52 local BLayout = Instance.new("UIListLayout", Body) BLayout.Padding = UDim.new(0, 8) BLayout.SortOrder = Enum.SortOrder.LayoutOrder local function MakeLabel(text) local l = Instance.new("TextLabel", Body) l.Size = UDim2.new(1, 0, 0, 14) l.BackgroundTransparency = 1 l.Font = Enum.Font.GothamBold l.Text = text l.TextColor3 = T.Accent2 l.TextSize = 10 l.TextXAlignment = Enum.TextXAlignment.Left l.ZIndex = 53 return l end -- 1. Выбор игрока MakeLabel("1. ВЫБЕРИ ИГРОКА") local playerBtn = Instance.new("TextButton", Body) playerBtn.Size = UDim2.new(1, 0, 0, 34) playerBtn.BackgroundColor3 = T.Card playerBtn.BorderSizePixel = 0 playerBtn.Font = Enum.Font.Gotham playerBtn.Text = "👤 Выбрать игрока" playerBtn.TextColor3 = T.Text playerBtn.TextSize = 12 playerBtn.AutoButtonColor = false playerBtn.LayoutOrder = 1 playerBtn.ZIndex = 53 corner(playerBtn, 10) local PBS = stroke(playerBtn, T.Accent2, 1, 0.5) playerBtn.MouseEnter:Connect(function() TS:Create(playerBtn, TweenInfo.new(0.15), {BackgroundColor3 = T.CardHover}):Play() end) playerBtn.MouseLeave:Connect(function() TS:Create(playerBtn, TweenInfo.new(0.15), {BackgroundColor3 = T.Card}):Play() end) local playerPanel = Instance.new("Frame", Body) playerPanel.Size = UDim2.new(1, 0, 0, 0) playerPanel.BackgroundColor3 = T.Card playerPanel.BorderSizePixel = 0 playerPanel.ClipsDescendants = true playerPanel.LayoutOrder = 2 playerPanel.Visible = false playerPanel.ZIndex = 54 corner(playerPanel, 10) local playerScroll = Instance.new("ScrollingFrame", playerPanel) playerScroll.Size = UDim2.new(1, -8, 1, -8) playerScroll.Position = UDim2.new(0, 4, 0, 4) playerScroll.BackgroundTransparency = 1 playerScroll.BorderSizePixel = 0 playerScroll.ScrollBarThickness = 3 playerScroll.ScrollBarImageColor3 = T.Accent1 playerScroll.CanvasSize = UDim2.new(0, 0, 0, 0) playerScroll.AutomaticCanvasSize = Enum.AutomaticSize.Y playerScroll.ZIndex = 55 local pLayout = Instance.new("UIListLayout", playerScroll) pLayout.Padding = UDim.new(0, 4) local playerPanelOpen = false local function refreshPlayerList() for _, c in ipairs(playerScroll:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end for _, p in ipairs(players:GetPlayers()) do if p ~= player then local b = Instance.new("TextButton", playerScroll) b.Size = UDim2.new(1, 0, 0, 28) b.BackgroundColor3 = T.Card b.BorderSizePixel = 0 b.Font = Enum.Font.Gotham b.Text = " " .. p.DisplayName b.TextColor3 = T.Text b.TextSize = 11 b.TextXAlignment = Enum.TextXAlignment.Left b.AutoButtonColor = false b.ZIndex = 56 corner(b, 6) b.MouseEnter:Connect(function() TS:Create(b, TweenInfo.new(0.15), {BackgroundColor3 = T.CardHover}):Play() end) b.MouseLeave:Connect(function() TS:Create(b, TweenInfo.new(0.15), {BackgroundColor3 = T.Card}):Play() end) b.MouseButton1Click:Connect(function() playerBtn.Text = "✅ " .. p.DisplayName playerBtn.TextColor3 = T.Success for _, folder in pairs(blocksFolder:GetChildren()) do if folder.Name == p.Name then selectedBase = folder end end end) end end end playerBtn.MouseButton1Click:Connect(function() playerPanelOpen = not playerPanelOpen if playerPanelOpen then refreshPlayerList() playerPanel.Visible = true TS:Create(playerPanel, TweenInfo.new(0.25), {Size = UDim2.new(1, 0, 0, 130)}):Play() else TS:Create(playerPanel, TweenInfo.new(0.25), {Size = UDim2.new(1, 0, 0, 0)}):Play() task.wait(0.3) playerPanel.Visible = false end end) -- 2. Копировать MakeLabel("2. СКОПИРОВАТЬ") local copyBtn = Instance.new("TextButton", Body) copyBtn.Size = UDim2.new(1, 0, 0, 36) copyBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) copyBtn.BorderSizePixel = 0 copyBtn.Font = Enum.Font.GothamBold copyBtn.Text = "📋 КОПИРОВАТЬ ПОСТРОЙКУ" copyBtn.TextColor3 = T.Text copyBtn.TextSize = 12 copyBtn.AutoButtonColor = false copyBtn.LayoutOrder = 3 copyBtn.ZIndex = 53 corner(copyBtn, 10) local CBG = grad(copyBtn, T.Accent1, T.Accent2, 0) task.spawn(function() local r = 0 while copyBtn.Parent do r = (r + 0.8) % 360 CBG.Rotation = r task.wait(0.03) end end) copyBtn.MouseEnter:Connect(function() TS:Create(copyBtn, TweenInfo.new(0.2), {Size = UDim2.new(1, 6, 0, 38), Position = UDim2.new(0, -3, 0, 0)}):Play() end) copyBtn.MouseLeave:Connect(function() TS:Create(copyBtn, TweenInfo.new(0.2), {Size = UDim2.new(1, 0, 0, 36), Position = UDim2.new(0, 0, 0, 0)}):Play() end) copyBtn.MouseButton1Click:Connect(function() if not selectedBase then copyBtn.Text = "❌ Выбери игрока" task.wait(1.5) copyBtn.Text = "📋 КОПИРОВАТЬ ПОСТРОЙКУ" return end usedList = {} clipboard = copyBuild(selectedBase) copyBtn.Text = "✅ Скопировано: " .. #clipboard .. " блоков" task.wait(2) copyBtn.Text = "📋 КОПИРОВАТЬ ПОСТРОЙКУ" end) -- 3. Построить MakeLabel("3. ПОСТРОИТЬ") local pasteBtn = Instance.new("TextButton", Body) pasteBtn.Size = UDim2.new(1, 0, 0, 36) pasteBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) pasteBtn.BorderSizePixel = 0 pasteBtn.Font = Enum.Font.GothamBold pasteBtn.Text = "🏗 ПОСТРОИТЬ" pasteBtn.TextColor3 = T.Text pasteBtn.TextSize = 12 pasteBtn.AutoButtonColor = false pasteBtn.LayoutOrder = 4 pasteBtn.ZIndex = 53 corner(pasteBtn, 10) local PBG = grad(pasteBtn, T.Success, T.Accent2, 0) task.spawn(function() local r = 0 while pasteBtn.Parent do r = (r + 0.8) % 360 PBG.Rotation = r task.wait(0.03) end end) pasteBtn.MouseEnter:Connect(function() TS:Create(pasteBtn, TweenInfo.new(0.2), {Size = UDim2.new(1, 6, 0, 38), Position = UDim2.new(0, -3, 0, 0)}):Play() end) pasteBtn.MouseLeave:Connect(function() TS:Create(pasteBtn, TweenInfo.new(0.2), {Size = UDim2.new(1, 0, 0, 36), Position = UDim2.new(0, 0, 0, 0)}):Play() end) pasteBtn.MouseButton1Click:Connect(function() if not clipboard then pasteBtn.Text = "❌ Сначала скопируй" task.wait(1.5) pasteBtn.Text = "🏗 ПОСТРОИТЬ" return end pasteBuild(clipboard, getPlayerBase()) end) -- 4. Автофарм MakeLabel("4. АВТОФАРМ") local farmBtn = Instance.new("TextButton", Body) farmBtn.Size = UDim2.new(1, 0, 0, 36) farmBtn.BackgroundColor3 = T.Card farmBtn.BorderSizePixel = 0 farmBtn.Font = Enum.Font.GothamBold farmBtn.Text = "🌾 АВТОФАРМ: ВЫКЛ" farmBtn.TextColor3 = T.Text farmBtn.TextSize = 12 farmBtn.AutoButtonColor = false farmBtn.LayoutOrder = 5 farmBtn.ZIndex = 53 corner(farmBtn, 10) local FBS = stroke(farmBtn, T.Accent3, 1, 0.5) farmBtn.MouseEnter:Connect(function() TS:Create(farmBtn, TweenInfo.new(0.15), {BackgroundColor3 = T.CardHover}):Play() end) farmBtn.MouseLeave:Connect(function() TS:Create(farmBtn, TweenInfo.new(0.15), {BackgroundColor3 = farmBtn.BackgroundColor3}):Play() end) farmBtn.MouseButton1Click:Connect(function() autofarm = not autofarm if autofarm then farmBtn.Text = "🌾 АВТОФАРМ: ВКЛ" TS:Create(farmBtn, TweenInfo.new(0.2), {BackgroundColor3 = T.Success}):Play() FBS.Color = T.Success else farmBtn.Text = "🌾 АВТОФАРМ: ВЫКЛ" TS:Create(farmBtn, TweenInfo.new(0.2), {BackgroundColor3 = T.Card}):Play() FBS.Color = T.Accent3 end end) -- Статус local statusLabel = Instance.new("TextLabel", Body) statusLabel.Size = UDim2.new(1, 0, 0, 16) statusLabel.BackgroundTransparency = 1 statusLabel.Font = Enum.Font.Gotham statusLabel.Text = "Готово к работе" statusLabel.TextColor3 = T.TextDim statusLabel.TextSize = 10 statusLabel.TextXAlignment = Enum.TextXAlignment.Left statusLabel.LayoutOrder = 6 statusLabel.ZIndex = 53 task.spawn(function() while task.wait(0.3) do if pastePercent > 0 then statusLabel.Text = "⏳ Строительство: " .. math.floor(pastePercent) .. "%" statusLabel.TextColor3 = Color3.fromRGB(255, 200, 60) elseif autofarm then statusLabel.Text = "🌾 Автофарм: стадия " .. index statusLabel.TextColor3 = T.Success else statusLabel.Text = "Готово к работе" statusLabel.TextColor3 = T.TextDim end end end) -- ========================================== -- FAB (квадратная, с пульсацией, справа внизу) -- ========================================== local FAB = Instance.new("TextButton", SG) FAB.Size = UDim2.new(0, 60, 0, 60) FAB.Position = UDim2.new(1, -80, 1, -80) FAB.BackgroundColor3 = Color3.fromRGB(255, 255, 255) FAB.BorderSizePixel = 0 FAB.Font = Enum.Font.GothamBlack FAB.Text = "🔨" FAB.TextColor3 = T.Text FAB.TextSize = 28 FAB.AutoButtonColor = false FAB.Visible = false FAB.Active = true FAB.ZIndex = 100 corner(FAB, 14) local FBG = grad(FAB, T.Accent1, T.Accent2, 0) local FBS = stroke(FAB, T.Accent2, 2, 0.4) task.spawn(function() local r = 0 while FAB.Parent do r = (r + 2) % 360 FBG.Rotation = r task.wait(0.03) end end) task.spawn(function() while FAB.Parent do TS:Create(FBS, TweenInfo.new(1.2, Enum.EasingStyle.Sine), {Transparency = 0.1, Thickness = 3}):Play() task.wait(1.2) TS:Create(FBS, TweenInfo.new(1.2, Enum.EasingStyle.Sine), {Transparency = 0.6, Thickness = 2}):Play() task.wait(1.2) end end) -- Драг FAB local fd, fs, fm FAB.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then fd = input.Position fs = FAB.Position fm = false local c1 c1 = UIS.InputChanged:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseMovement or inp.UserInputType == Enum.UserInputType.Touch then local dl = inp.Position - fd if math.abs(dl.X) > 3 or math.abs(dl.Y) > 3 then fm = true local vp = workspace.CurrentCamera.ViewportSize FAB.Position = UDim2.new(0, math.clamp(fs.X.Offset + dl.X, 4, vp.X - 64), 0, math.clamp(fs.Y.Offset + dl.Y, 4, vp.Y - 64)) end end end) local c2 c2 = UIS.InputEnded:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then c1:Disconnect() c2:Disconnect() if not fm then FAB.Visible = false Main.Visible = true end end end) end end) CloseBtn.MouseButton1Click:Connect(function() Main.Visible = false FAB.Visible = true end) UIS.InputBegan:Connect(function(input, gp) if gp then return end if input.KeyCode == Enum.KeyCode.RightControl then if Main.Visible then Main.Visible = false FAB.Visible = true else Main.Visible = true FAB.Visible = false end end end) -- ========================================== -- АВТОФАРМ -- ========================================== task.spawn(function() while true do task.wait() if autofarm then if not HRP then continue end if index == 11 then local Stages = workspace:FindFirstChild("BoatStages") if not Stages then continue end local normalStages = Stages:FindFirstChild("NormalStages") if not normalStages then continue end local endpoint = normalStages:FindFirstChild("TheEnd") if not endpoint then continue end local chest = endpoint:FindFirstChild("GoldenChest") if not chest then continue end HRP:PivotTo(chest:GetPivot() + Vector3.new(0, 0, -10)) local ii = 0 repeat task.wait(1) ii += 1 if ii % 20 == 0 then HRP:PivotTo(chest:GetPivot() + Vector3.new(0, 0, -10)) end until (HRP.Position - chest:GetPivot().Position).Magnitude > 500 index = 1 else local stages = workspace:FindFirstChild("BoatStages") if not stages then continue end local normalStages = stages:FindFirstChild("NormalStages") if not normalStages then continue end local roomName = "CaveStage" .. index local stage = normalStages:FindFirstChild(roomName) if not stage then continue end local darkPart = stage:FindFirstChild("DarknessPart") if not darkPart then continue end character:PivotTo(darkPart.CFrame - Vector3.new(0, 0, 15)) local tween2 = TS:Create(HRP, TweenInfo.new(2, Enum.EasingStyle.Linear), {CFrame = darkPart.CFrame + Vector3.new(0, 0, 20)}) tweening = true tween2:Play() tween2.Completed:Wait() tweening = false index += 1 end end end end) runService.Heartbeat:Connect(function() if tweening then HRP.Velocity = Vector3.zero end end) player.CharacterAdded:Connect(function(charactery) character = charactery HRP = character:WaitForChild("HumanoidRootPart") humanoid = character:WaitForChild("Humanoid") end) task.spawn(function() while task.wait(100) do vim:SendKeyEvent(true, Enum.KeyCode.Tilde, false, nil) task.wait(0.1) vim:SendKeyEvent(false, Enum.KeyCode.Tilde, false, nil) end end) print("[Build Helper] Premium Edition загружено.")