--[[ Brookhaven Prop Magnet Wings + UI for Delta Executor Features: Draggable UI, On/Off Toggle, Adjustable Radius TextBox, Prop Attraction. ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") local player = Players.LocalPlayer -- ========================================== -- โš™๏ธ BASE CONFIGURATION (Defaults) -- ========================================== local CONFIG = { AttractRadius = 150, -- Default radius (can be changed in UI) StealGameProps = true, -- Suck up unanchored game props PropSnapping = true, -- Align stolen props perfectly SpawnFakeProps = true, -- Spawn glowing neon base wings PropColor = Color3.fromRGB(150, 50, 255), -- Purple base color PropMaterial = Enum.Material.Neon, PropSize = Vector3.new(0.2, 3, 0.5), PropsPerWing = 12, WingSpan = 6, WingDrop = 2.5, FanAngle = 60, FlapSpeed = 6, FlapWidth = 40, } -- State Variables local IsActive = false _G.WingProps = { Left = {}, Right = {} } local stolenProps = {} -- ========================================== -- ๐Ÿงน CLEANUP OLD EXECUTIONS -- ========================================== if _G.WingConnection then _G.WingConnection:Disconnect() end if _G.PropScanner then task.cancel(_G.PropScanner) end if _G.WingProps then for _, prop in pairs(_G.WingProps.Left) do if prop then prop:Destroy() end end for _, prop in pairs(_G.WingProps.Right) do if prop then prop:Destroy() end end end -- Find safe UI parent (CoreGui hides it from game anti-cheats) local UI_PARENT = pcall(function() return CoreGui.Name end) and CoreGui or player:WaitForChild("PlayerGui") if UI_PARENT:FindFirstChild("PropWingGUI") then UI_PARENT.PropWingGUI:Destroy() end -- ========================================== -- ๐ŸŽจ CREATE USER INTERFACE (GUI) -- ========================================== local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "PropWingGUI" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = UI_PARENT local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, 220, 0, 150) MainFrame.Position = UDim2.new(0.5, -110, 0.8, -75) MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 35) MainFrame.BorderSizePixel = 0 MainFrame.Parent = ScreenGui local UICorner = Instance.new("UICorner") UICorner.CornerRadius = UDim.new(0, 10) UICorner.Parent = MainFrame local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 30) Title.BackgroundTransparency = 1 Title.Text = "๐Ÿงฒ Magnet Wings" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.Font = Enum.Font.GothamBold Title.TextSize = 16 Title.Parent = MainFrame local ToggleBtn = Instance.new("TextButton") ToggleBtn.Size = UDim2.new(0.8, 0, 0, 40) ToggleBtn.Position = UDim2.new(0.1, 0, 0, 40) ToggleBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50) ToggleBtn.Text = "Wings: OFF" ToggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255) ToggleBtn.Font = Enum.Font.GothamBold ToggleBtn.TextSize = 18 ToggleBtn.Parent = MainFrame local BtnCorner = Instance.new("UICorner") BtnCorner.CornerRadius = UDim.new(0, 6) BtnCorner.Parent = ToggleBtn local RadiusLabel = Instance.new("TextLabel") RadiusLabel.Size = UDim2.new(0.5, 0, 0, 30) RadiusLabel.Position = UDim2.new(0.1, 0, 0, 95) RadiusLabel.BackgroundTransparency = 1 RadiusLabel.Text = "Radius:" RadiusLabel.TextColor3 = Color3.fromRGB(200, 200, 200) RadiusLabel.Font = Enum.Font.Gotham RadiusLabel.TextSize = 14 RadiusLabel.TextXAlignment = Enum.TextXAlignment.Left RadiusLabel.Parent = MainFrame local RadiusBox = Instance.new("TextBox") RadiusBox.Size = UDim2.new(0.3, 0, 0, 30) RadiusBox.Position = UDim2.new(0.6, 0, 0, 95) RadiusBox.BackgroundColor3 = Color3.fromRGB(50, 50, 55) RadiusBox.Text = tostring(CONFIG.AttractRadius) RadiusBox.TextColor3 = Color3.fromRGB(255, 255, 255) RadiusBox.Font = Enum.Font.GothamBold RadiusBox.TextSize = 14 RadiusBox.Parent = MainFrame local BoxCorner = Instance.new("UICorner") BoxCorner.CornerRadius = UDim.new(0, 4) BoxCorner.Parent = RadiusBox -- UI Dragging Logic local dragging, dragInput, dragStart, startPos MainFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = MainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) MainFrame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -- ========================================== -- ๐Ÿ› ๏ธ WING LOGIC & FUNCTIONS -- ========================================== local function createFakeWings() local function makeProp() local part = Instance.new("Part") part.Size = CONFIG.PropSize part.Anchored = true part.CanCollide = false part.Locked = true part.Massless = true part.Color = CONFIG.PropColor part.Material = CONFIG.PropMaterial part.Parent = workspace return part end _G.WingProps = { Left = {}, Right = {} } if CONFIG.SpawnFakeProps then for i = 1, CONFIG.PropsPerWing do table.insert(_G.WingProps.Left, makeProp()) table.insert(_G.WingProps.Right, makeProp()) end end end local function destroyWingsAndRelease() -- Destroy fake wings for _, prop in ipairs(_G.WingProps.Left) do if prop then prop:Destroy() end end for _, prop in ipairs(_G.WingProps.Right) do if prop then prop:Destroy() end end _G.WingProps = { Left = {}, Right = {} } -- Drop stolen game props for _, prop in ipairs(stolenProps) do if prop and prop.Parent then pcall(function() prop.CanCollide = true end) end end stolenProps = {} end -- ========================================== -- ๐ŸŽฎ UI BUTTON EVENT LISTENERS -- ========================================== ToggleBtn.MouseButton1Click:Connect(function() IsActive = not IsActive if IsActive then ToggleBtn.Text = "Wings: ON" ToggleBtn.BackgroundColor3 = Color3.fromRGB(50, 200, 50) createFakeWings() else ToggleBtn.Text = "Wings: OFF" ToggleBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50) destroyWingsAndRelease() end end) RadiusBox.FocusLost:Connect(function() local newRadius = tonumber(RadiusBox.Text) if newRadius then -- Keep the radius between 10 and 1000 so the game doesn't break CONFIG.AttractRadius = math.clamp(newRadius, 10, 1000) RadiusBox.Text = tostring(CONFIG.AttractRadius) else RadiusBox.Text = tostring(CONFIG.AttractRadius) -- Reset if user types text instead of a number end end) -- ========================================== -- ๐Ÿงฒ PROP SCANNER LOOP -- ========================================== _G.PropScanner = task.spawn(function() while task.wait(0.2) do -- Fast scan if not IsActive then continue end local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then local hrp = char.HumanoidRootPart for _, part in ipairs(workspace:GetDescendants()) do if part:IsA("BasePart") and not part.Anchored and not part:IsDescendantOf(char) then -- Check if inside user-defined radius if (part.Position - hrp.Position).Magnitude <= CONFIG.AttractRadius then if not table.find(stolenProps, part) then table.insert(stolenProps, part) pcall(function() part.CanCollide = false end) end end end end end -- Clean up lost props for i = #stolenProps, 1, -1 do if not stolenProps[i] or not stolenProps[i].Parent then table.remove(stolenProps, i) end end end end) -- ========================================== -- ๐Ÿ”„ WING ANIMATION LOOP -- ========================================== local tickCount = 0 _G.WingConnection = RunService.Heartbeat:Connect(function(deltaTime) if not IsActive then return end local character = player.Character if not character or not character:FindFirstChild("HumanoidRootPart") then return end local hrp = character.HumanoidRootPart tickCount = tickCount + (deltaTime * CONFIG.FlapSpeed) local currentFlap = math.sin(tickCount) * math.rad(CONFIG.FlapWidth) local leftSlots, rightSlots = {}, {} -- Calculate slots local function calculateSlots(isLeft, slotTable) local sideMult = isLeft and -1 or 1 local backHingeCFrame = hrp.CFrame * CFrame.new(sideMult * 0.5, 0.5, 0.6) local animatedHinge = backHingeCFrame * CFrame.Angles(0, sideMult * currentFlap, 0) for i = 1, CONFIG.PropsPerWing do local progress = (i - 1) / (CONFIG.PropsPerWing - 1) if progress ~= progress then progress = 0 end local targetCFrame = animatedHinge * CFrame.new(sideMult * (progress * CONFIG.WingSpan), -(progress * CONFIG.WingDrop), 0) * CFrame.Angles(math.rad(15), 0, sideMult * math.rad(CONFIG.FanAngle) * progress) table.insert(slotTable, targetCFrame) end end calculateSlots(true, leftSlots) calculateSlots(false, rightSlots) -- Place fake props if CONFIG.SpawnFakeProps then for i, prop in ipairs(_G.WingProps.Left) do prop.CFrame = leftSlots[i] end for i, prop in ipairs(_G.WingProps.Right) do prop.CFrame = rightSlots[i] end end -- Magnetize game props if CONFIG.StealGameProps and #stolenProps > 0 then local totalSlots = CONFIG.PropsPerWing for i, gamePart in ipairs(stolenProps) do local slotArray = (i % 2 == 0) and leftSlots or rightSlots local slotIndex = (math.floor(i / 2) % totalSlots) + 1 local targetCFrame = slotArray[slotIndex] pcall(function() if not CONFIG.PropSnapping then targetCFrame = targetCFrame * CFrame.Angles(math.rad(math.random(-20, 20)), math.rad(math.random(-20, 20)), 0) end gamePart.CFrame = targetCFrame gamePart.Velocity = Vector3.new(0,0,0) gamePart.RotVelocity = Vector3.new(0,0,0) end) end end end)