local Players = game:GetService("Players") local RunService = game:GetService("RunService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Workspace = game:GetService("Workspace") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local camera = Workspace.CurrentCamera local Event = ReplicatedStorage:WaitForChild("MenuToys"):WaitForChild("SpawnToyRemoteFunction") local targetPart = Instance.new("Part") targetPart.Name = "NeonTargetIndicator" targetPart.Shape = Enum.PartType.Ball targetPart.Size = Vector3.new(1.5, 1.5, 1.5) targetPart.Material = Enum.Material.Neon targetPart.Color = Color3.fromRGB(255, 0, 0) targetPart.CanCollide = false targetPart.Anchored = true targetPart.Parent = Workspace RunService.RenderStepped:Connect(function() local character = player.Character if not character or not character:FindFirstChild("HumanoidRootPart") then return end local camCFrame = camera.CFrame local lookVector = camCFrame.LookVector local pitch = math.asin(lookVector.Y) local alpha = math.clamp((-pitch) / (math.pi / 2), 0, 1) local fixedOffset = -0.66 + (alpha * (-14.9 - (-0.66))) targetPart.Position = camCFrame.Position + (lookVector * fixedOffset) end) local pg = player:WaitForChild("PlayerGui") local gui = Instance.new("ScreenGui") gui.Name = "FastUI" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.Parent = pg local unlocked = true local buttonSize = 55 local dragging = false local dragInput local dragStart local startPositions = {} local dragMoved = false local clickThreshold = 8 local function makeButton(parent, text, size, position) local button = Instance.new("TextButton") button.Size = size button.Position = position button.BackgroundColor3 = Color3.fromRGB(15, 15, 15) button.Text = text button.TextColor3 = Color3.fromRGB(220, 220, 220) button.TextSize = 14 button.Font = Enum.Font.SourceSansBold button.AutoButtonColor = false button.Active = true button.Parent = parent local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = button local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(60, 60, 60) stroke.Thickness = 2 stroke.Parent = button return button end local btn = makeButton( gui, "7S", UDim2.fromOffset(buttonSize, buttonSize), UDim2.new(0.1, 0, 0.4, 0) ) local mainCorner = btn:FindFirstChildOfClass("UICorner") mainCorner.CornerRadius = UDim.new(1, 0) local helper = Instance.new("Frame") helper.Name = "HelperPanel" helper.Size = UDim2.fromOffset(150, 88) helper.Position = UDim2.new(0.1, buttonSize + 10, 0.4, -16) helper.BackgroundColor3 = Color3.fromRGB(22, 22, 22) helper.BackgroundTransparency = 0.05 helper.Parent = gui local helperCorner = Instance.new("UICorner") helperCorner.CornerRadius = UDim.new(0, 10) helperCorner.Parent = helper local helperStroke = Instance.new("UIStroke") helperStroke.Color = Color3.fromRGB(65, 65, 65) helperStroke.Thickness = 2 helperStroke.Parent = helper local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -10, 0, 22) title.Position = UDim2.fromOffset(5, 2) title.BackgroundTransparency = 1 title.Text = "AJUDANTE" title.TextColor3 = Color3.fromRGB(210, 210, 210) title.TextSize = 13 title.Font = Enum.Font.SourceSansBold title.Parent = helper local spawnHelper = makeButton( helper, "spawn pattle", UDim2.fromOffset(58, 30), UDim2.fromOffset(7, 32) ) local smaller = makeButton( helper, "TAM -", UDim2.fromOffset(38, 30), UDim2.fromOffset(69, 32) ) local bigger = makeButton( helper, "TAM +", UDim2.fromOffset(38, 30), UDim2.fromOffset(111, 32) ) local sizeLabel = makeButton( helper, tostring(buttonSize), UDim2.fromOffset(43, 22), UDim2.fromOffset(7, 63) ) local lockButton = makeButton( helper, "🔓", UDim2.fromOffset(43, 22), UDim2.fromOffset(54, 63) ) local function updatePanelPosition() helper.Position = UDim2.new( btn.Position.X.Scale, btn.Position.X.Offset + buttonSize + 10, btn.Position.Y.Scale, btn.Position.Y.Offset - 16 ) end local function setSize(newSize) buttonSize = math.clamp(newSize, 35, 100) btn.Size = UDim2.fromOffset(buttonSize, buttonSize) sizeLabel.Text = tostring(buttonSize) updatePanelPosition() end local function setLocked(value) unlocked = not value if unlocked then lockButton.Text = "🔓" lockButton.BackgroundColor3 = Color3.fromRGB(15, 15, 15) title.Text = "AJUDANTE" else lockButton.Text = "🔒" lockButton.BackgroundColor3 = Color3.fromRGB(90, 45, 20) title.Text = "AJUDANTE - TRAVADO" end end local function spawnPallet() local character = player.Character if not character then return end task.spawn(function() RunService.Heartbeat:Wait() local spawnPosition = targetPart.Position local camCFrame = camera.CFrame local _, yaw, _ = camCFrame:ToOrientation() local newCFrame = camCFrame.Rotation + spawnPosition local rotationVector = Vector3.new(0, math.deg(yaw), 0) pcall(function() Event:InvokeServer( "PalletLightBrown", newCFrame, rotationVector ) end) end) end spawnHelper.MouseButton1Click:Connect(function() if not dragMoved then spawnPallet() end end) smaller.MouseButton1Click:Connect(function() if unlocked then setSize(buttonSize - 5) end end) bigger.MouseButton1Click:Connect(function() if unlocked then setSize(buttonSize + 5) end end) lockButton.MouseButton1Click:Connect(function() setLocked(unlocked) end) local function beginDrag(input) if not unlocked then return end dragging = true dragMoved = false dragStart = input.Position startPositions = { btn = btn.Position, helper = helper.Position } dragInput = input end local function updateDrag(input) if not dragging or not unlocked then return end local delta = input.Position - dragStart if math.abs(delta.X) > clickThreshold or math.abs(delta.Y) > clickThreshold then dragMoved = true end if dragMoved then btn.Position = UDim2.new( startPositions.btn.X.Scale, startPositions.btn.X.Offset + delta.X, startPositions.btn.Y.Scale, startPositions.btn.Y.Offset + delta.Y ) helper.Position = UDim2.new( startPositions.helper.X.Scale, startPositions.helper.X.Offset + delta.X, startPositions.helper.Y.Scale, startPositions.helper.Y.Offset + delta.Y ) end end local function endDrag() dragging = false dragInput = nil end local function connectDrag(object) object.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then beginDrag(input) input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then endDrag() end end) end end) object.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) end connectDrag(btn) connectDrag(helper) UserInputService.InputChanged:Connect(function(input) if input == dragInput then updateDrag(input) end end) -- Apertar Q spawna o pallet diretamente UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.Q then spawnPallet() end end) -- O botão 7S também spawna o pallet btn.MouseButton1Click:Connect(function() if dragMoved then return end spawnPallet() end) setLocked(false)