-- Hub "lmaoh2" Roblox con Key System y GUI decorada -- Author: Lmaohp2 -- Github: https://gist.github.com/Lmaohp2 -- Note: This script is public. You can use it, but please give credit to the author. local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local plr = Players.LocalPlayer local savedPos = nil local noclip = false local hubVisible = true -- ===== KEY SYSTEM ===== local correctKey = "LMAOH2" local enteredKey = "" -- Key input GUI local function requestKey() local gui = Instance.new("ScreenGui") gui.Name = "KeySystem" gui.ResetOnSpawn = false gui.Parent = plr:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 400, 0, 150) -- más grande frame.Position = UDim2.new(0.5, -200, 0.5, -75) frame.BackgroundColor3 = Color3.fromRGB(20, 20, 20) frame.BorderSizePixel = 2 frame.Parent = gui frame.BackgroundTransparency = 0.1 frame.BorderColor3 = Color3.fromRGB(255,255,255) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -20, 0, 40) title.Position = UDim2.new(0, 10, 0, 10) title.BackgroundTransparency = 1 title.Text = "ENTER HUB KEY" title.Font = Enum.Font.SourceSansBold title.TextScaled = true title.TextColor3 = Color3.fromRGB(255,255,255) title.Parent = frame local textbox = Instance.new("TextBox") textbox.Size = UDim2.new(0, 380, 0, 40) textbox.Position = UDim2.new(0, 10, 0, 60) textbox.PlaceholderText = "Enter Key..." textbox.ClearTextOnFocus = true textbox.Parent = frame textbox.TextScaled = true textbox.TextColor3 = Color3.fromRGB(255,255,255) textbox.BackgroundColor3 = Color3.fromRGB(60,60,60) textbox.BorderSizePixel = 1 local button = Instance.new("TextButton") button.Size = UDim2.new(0, 380, 0, 40) button.Position = UDim2.new(0, 10, 0, 110) button.Text = "Submit" button.TextScaled = true button.TextColor3 = Color3.fromRGB(255,255,255) button.BackgroundColor3 = Color3.fromRGB(80, 80, 80) button.BorderSizePixel = 1 button.Parent = frame local completed = Instance.new("BoolValue") completed.Value = false completed.Name = "KeyCompleted" completed.Parent = gui button.MouseButton1Click:Connect(function() enteredKey = textbox.Text if enteredKey == correctKey then completed.Value = true gui:Destroy() else textbox.Text = "" textbox.PlaceholderText = "Wrong Key!" end end) return completed end local keyCheck = requestKey() keyCheck.Changed:Wait() -- espera hasta que el jugador ingrese la key correcta -- ===== HUB GUI ===== local function getChar() if not plr.Character or not plr.Character:FindFirstChild("HumanoidRootPart") then plr.CharacterAdded:Wait() end return plr.Character end local function getPlayerGui() return plr:WaitForChild("PlayerGui") end -- ScreenGui local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "lmaoh2" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = getPlayerGui() -- Frame local Frame = Instance.new("Frame") Frame.Size = UDim2.new(0, 250, 0, 220) -- más alto Frame.Position = UDim2.new(0.5, -125, 0.5, -110) Frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) Frame.BorderSizePixel = 2 Frame.Parent = ScreenGui Frame.BackgroundTransparency = 0.05 Frame.BorderColor3 = Color3.fromRGB(255,255,255) Frame.Rotation = 0 Frame.ClipsDescendants = true Frame.AnchorPoint = Vector2.new(0.5,0.5) -- Drag functionality local dragging = false local dragInput, dragStart, startPos Frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = Frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) Frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) RunService.RenderStepped:Connect(function() if dragging and dragInput then local delta = dragInput.Position - dragStart Frame.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) -- Button creation local function makeButton(text, posY) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 220, 0, 40) btn.Position = UDim2.new(0, 15, 0, posY) btn.Text = text btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.SourceSansBold btn.TextScaled = true btn.Parent = Frame btn.BorderSizePixel = 1 btn.AutoButtonColor = true btn.ClipsDescendants = true return btn end local TPButton = makeButton("TP (Save Pos)", 15) local TP2Button = makeButton("TP2 (Go To Saved Pos)", 65) local TrasButton = makeButton("TRAS (Noclip)", 115) -- Author label below TRAS local AuthorLabel = Instance.new("TextLabel") AuthorLabel.Size = UDim2.new(0, 220, 0, 30) AuthorLabel.Position = UDim2.new(0, 15, 0, 175) AuthorLabel.BackgroundTransparency = 1 AuthorLabel.Text = "AUTHOR: lmaoh2" AuthorLabel.TextColor3 = Color3.fromRGB(255, 255, 255) AuthorLabel.Font = Enum.Font.SourceSansBold AuthorLabel.TextScaled = true AuthorLabel.Parent = Frame -- TP functionality TPButton.MouseButton1Click:Connect(function() local char = getChar() local hrp = char:WaitForChild("HumanoidRootPart") savedPos = hrp.CFrame TPButton.Text = "Pos Saved!" task.wait(1) TPButton.Text = "TP (Save Pos)" end) -- TP2 functionality TP2Button.MouseButton1Click:Connect(function() if savedPos then local char = getChar() local hrp = char:WaitForChild("HumanoidRootPart") hrp.CFrame = savedPos end end) -- TRAS (noclip) TrasButton.MouseButton1Click:Connect(function() noclip = not noclip if noclip then TrasButton.Text = "TRAS (ON)" else TrasButton.Text = "TRAS (OFF)" end end) -- Noclip loop RunService.Stepped:Connect(function() local char = plr.Character if noclip and char then for _, part in pairs(char:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end) -- Toggle GUI with K UIS.InputBegan:Connect(function(input, gp) if not gp and input.KeyCode == Enum.KeyCode.K then hubVisible = not hubVisible Frame.Visible = hubVisible end end) -- RGB text and frame local rainbowSpeed = 2 RunService.RenderStepped:Connect(function() local t = tick() * rainbowSpeed local r = math.floor((math.sin(t) * 127 + 128)) local g = math.floor((math.sin(t + 2) * 127 + 128)) local b = math.floor((math.sin(t + 4) * 127 + 128)) local color = Color3.fromRGB(r, g, b) TPButton.TextColor3 = color TP2Button.TextColor3 = color TrasButton.TextColor3 = color AuthorLabel.TextColor3 = color Frame.BackgroundColor3 = Color3.fromRGB(255-r, 255-g, 255-b) end) --[[ WORKING PLAYER ESP: Rainbow Name + Distance + Small Rainbow Line Place this LocalScript in StarterPlayer -> StarterPlayerScripts - BillboardGui parented to LocalPlayer.PlayerGui (must be there to display) - Single RenderStepped loop updates all players (no per-player loops) - Ignores NPCs and ignores local player --]] local RunService = game:GetService("RunService") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") -- Helpers local function rainbowColor(t) return Color3.fromHSV((t % 5) / 5, 1, 1) end -- Storage for ESP items -- keys = Player, value = {billboard = BillboardGui, nameLabel = TextLabel, distLabel = TextLabel, line = Frame} local espItems = {} local function makeBillboardForCharacter(player, character) if not character then return end local head = character:FindFirstChild("Head") local hrp = character:FindFirstChild("HumanoidRootPart") local hum = character:FindFirstChild("Humanoid") if not head or not hrp or not hum then return end -- Create root folder inside PlayerGui to hold the billboard local container = Instance.new("Folder") container.Name = "ESP_Container_" .. player.UserId container.Parent = PlayerGui local billboard = Instance.new("BillboardGui") billboard.Name = "ESP_Billboard" billboard.Adornee = head billboard.AlwaysOnTop = true billboard.Size = UDim2.new(4, 0, 2, 0) billboard.StudsOffset = Vector3.new(0, 1.8, 0) billboard.Parent = container -- Name label (top) local nameLabel = Instance.new("TextLabel") nameLabel.Name = "ESP_Name" nameLabel.Size = UDim2.new(1, 0, 0.6, 0) nameLabel.Position = UDim2.new(0, 0, 0, 0) nameLabel.BackgroundTransparency = 1 nameLabel.TextScaled = true nameLabel.Font = Enum.Font.GothamBold nameLabel.TextStrokeTransparency = 0.6 nameLabel.Parent = billboard -- Distance label (under name) local distLabel = Instance.new("TextLabel") distLabel.Name = "ESP_Distance" distLabel.Size = UDim2.new(1, 0, 0.35, 0) distLabel.Position = UDim2.new(0, 0, 0.62, 0) distLabel.BackgroundTransparency = 1 distLabel.TextScaled = true distLabel.Font = Enum.Font.Gotham distLabel.TextColor3 = Color3.new(1,1,1) distLabel.TextStrokeTransparency = 0.6 distLabel.Parent = billboard -- small line (frame) under everything local line = Instance.new("Frame") line.Name = "ESP_Line" line.Size = UDim2.new(0.8, 0, 0.08, 0) line.Position = UDim2.new(0.1, 0, 0.95, 0) line.AnchorPoint = Vector2.new(0, 1) line.BorderSizePixel = 0 line.Parent = billboard espItems[player] = { container = container, billboard = billboard, nameLabel = nameLabel, distLabel = distLabel, line = line } end local function removeESP(player) local it = espItems[player] if it then if it.container and it.container.Parent then it.container:Destroy() end espItems[player] = nil end end -- When a player's character spawns, create the billboard (but ignore localplayer) local function onCharacterAddedForPlayer(player) if player == LocalPlayer then return end local character = player.Character if not character then return end -- small delay to allow parts to exist task.delay(0.15, function() -- safety: ensure still valid if not player.Character then return end -- create or recreate ESP removeESP(player) makeBillboardForCharacter(player, player.Character) end) end -- Player added / removed handlers Players.PlayerAdded:Connect(function(plr) if plr == LocalPlayer then return end plr.CharacterAdded:Connect(function() onCharacterAddedForPlayer(plr) end) -- If character already exists (rare), create immediately if plr.Character then onCharacterAddedForPlayer(plr) end end) Players.PlayerRemoving:Connect(function(plr) removeESP(plr) end) -- Initialize existing players for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer then if plr.Character then onCharacterAddedForPlayer(plr) end plr.CharacterAdded:Connect(function() onCharacterAddedForPlayer(plr) end) end end -- Single RenderStepped to update rainbow and distance RunService.RenderStepped:Connect(function() local now = tick() local myRoot = (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")) for plr, data in pairs(espItems) do -- validate if not plr or not plr.Parent then removeESP(plr) else local char = plr.Character if not char or not char:FindFirstChild("HumanoidRootPart") then removeESP(plr) else local hrp = char.HumanoidRootPart -- update name rainbow local color = rainbowColor(now + (plr.UserId % 10) * 0.1) -- small offset per player data.nameLabel.TextColor3 = color data.line.BackgroundColor3 = color -- update name text and distance data.nameLabel.Text = plr.Name if myRoot then local dist = math.floor((myRoot.Position - hrp.Position).Magnitude) data.distLabel.Text = tostring(dist) .. "m" else data.distLabel.Text = "--m" end end end end end)