local Players, RunService, UIS = game:GetService("Players"), game:GetService("RunService"), game:GetService("UserInputService") local LP = Players.LocalPlayer local FLOAT_SPEED, DIST_BELOW, conn = 5, 3 -- UI Setup local gui = Instance.new("ScreenGui", LP:WaitForChild("PlayerGui")) gui.Name, gui.ResetOnSpawn = "ElevatorUI", false local function makeCorner(parent, radius) local c = Instance.new("UICorner", parent) c.CornerRadius = UDim.new(0, radius) end local frame = Instance.new("Frame", gui) frame.AnchorPoint, frame.Position = Vector2.new(0.5, 0.5), UDim2.new(0.5, 0, 0.5, 0) frame.Size, frame.BackgroundColor3, frame.BackgroundTransparency = UDim2.new(0, 200, 0, 260), Color3.fromRGB(25, 25, 25), 0.1 makeCorner(frame, 10) local function makeTextBox(yPos, placeholder, default) local box = Instance.new("TextBox", frame) box.Size, box.Position = UDim2.new(1, -20, 0, 30), UDim2.new(0, 10, 0, yPos) box.PlaceholderText, box.Text = placeholder, default or "" box.TextScaled, box.BackgroundColor3, box.TextColor3 = true, Color3.fromRGB(50, 50, 50), Color3.fromRGB(255, 255, 255) makeCorner(box, 8) return box end local function makeButton(yPos, text, color) local btn = Instance.new("TextButton", frame) btn.Size, btn.Position = UDim2.new(1, -20, 0, 30), UDim2.new(0, 10, 0, yPos) btn.Text, btn.TextScaled, btn.BackgroundColor3, btn.TextColor3 = text, true, color, Color3.fromRGB(255, 255, 255) makeCorner(btn, 8) return btn end -- Title Bar local titleBar = Instance.new("Frame", frame) titleBar.Size, titleBar.BackgroundColor3 = UDim2.new(1, 0, 0, 30), Color3.fromRGB(40, 40, 40) makeCorner(titleBar, 10) local titleLabel = Instance.new("TextLabel", titleBar) titleLabel.Size, titleLabel.Position = UDim2.new(1, -30, 1, 0), UDim2.new(0, 10, 0, 0) titleLabel.Text, titleLabel.TextColor3, titleLabel.BackgroundTransparency = "Human Elevator", Color3.new(1, 1, 1), 1 titleLabel.TextXAlignment, titleLabel.Font, titleLabel.TextSize = Enum.TextXAlignment.Left, Enum.Font.GothamBold, 16 local closeBtn = makeButton(0, "X", Color3.fromRGB(170, 0, 0)) closeBtn.Size, closeBtn.Position, closeBtn.Parent = UDim2.new(0, 30, 1, 0), UDim2.new(1, -30, 0, 0), titleBar -- Inputs local usernameBox = makeTextBox(40, "Username or display name") local distBox = makeTextBox(80, "Distance below", tostring(DIST_BELOW)) local speedBox = makeTextBox(120, "Float speed", tostring(FLOAT_SPEED)) -- Buttons local startBtn = makeButton(170, "Start", Color3.fromRGB(0, 170, 0)) local stopBtn = makeButton(210, "Stop", Color3.fromRGB(170, 0, 0)) -- Dragging local dragging, dragStart, startPos local function updateDrag(input) local delta = input.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end titleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging, dragStart, startPos = true, input.Position, frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) titleBar.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then updateDrag(input) end end) -- Helpers local function getHRP(char) return char and char:FindFirstChild("HumanoidRootPart") end -- Dynamic player list local playerList = {} local function updatePlayerList() playerList = {} for _, p in ipairs(Players:GetPlayers()) do table.insert(playerList, p) end end updatePlayerList() Players.PlayerAdded:Connect(updatePlayerList) Players.PlayerRemoving:Connect(updatePlayerList) -- Autofill on focus lost usernameBox.FocusLost:Connect(function() local input = usernameBox.Text:lower() for _, p in ipairs(playerList) do if p.Name:lower():sub(1, #input) == input or p.DisplayName:lower():sub(1, #input) == input then usernameBox.Text = p.Name break end end end) -- Elevator Logic local function startPlatform(target) if conn then conn:Disconnect() end local localHRP, targetHRP = getHRP(LP.Character), getHRP(target.Character) if not localHRP or not targetHRP then return end conn = RunService.RenderStepped:Connect(function(dt) if not targetHRP.Parent or not localHRP.Parent then return end localHRP.CFrame = CFrame.new(targetHRP.Position.X, targetHRP.Position.Y - DIST_BELOW + FLOAT_SPEED * dt, targetHRP.Position.Z) end) end local function stopPlatform() if conn then conn:Disconnect(); conn = nil end end -- Events startBtn.MouseButton1Click:Connect(function() DIST_BELOW = tonumber(distBox.Text) or DIST_BELOW FLOAT_SPEED = tonumber(speedBox.Text) or FLOAT_SPEED local input = usernameBox.Text for _, p in ipairs(playerList) do if p.Name == input or p.DisplayName == input then startPlatform(p) return end end warn("Player not found:", input) end) stopBtn.MouseButton1Click:Connect(stopPlatform) closeBtn.MouseButton1Click:Connect(function() stopPlatform(); gui:Destroy() end)