-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local camera = workspace.CurrentCamera local targetDefs = { { name = "PlaceholderMonster", color = Color3.fromRGB(0, 255, 0), teleport = false, group = "monster" }, { name = "HiddenKey1", color = Color3.fromRGB(255, 0, 0), teleport = true, group = "items" }, { name = "HiddenKey2", color = Color3.fromRGB(255, 0, 0), teleport = true, group = "items" }, { name = "HiddenKey3", color = Color3.fromRGB(255, 0, 0), teleport = true, group = "items" }, { name = "HiddenKey4", color = Color3.fromRGB(255, 0, 0), teleport = true, group = "items" }, { name = "CodeNote", color = Color3.fromRGB(255, 255, 0), teleport = true, group = "items" }, } local SPAWN_POSITION = Vector3.new(254, 22, -314) local function findByName(name) for _, obj in ipairs(workspace:GetDescendants()) do if obj.Name == name and (obj:IsA("BasePart") or obj:IsA("Model")) then return obj end end return nil end local function getBoundsCFrameAndSize(target) if target:IsA("Model") then local cf, size = target:GetBoundingBox() return cf, size elseif target:IsA("BasePart") then return target.CFrame, target.Size end return nil, nil end local function getPosition(target) if target:IsA("Model") then local cf = target:GetBoundingBox() return cf.Position elseif target:IsA("BasePart") then return target.Position end return nil end local function teleportToPosition(pos) local char = player.Character if not char then return end local hrp = char:FindFirstChild("HumanoidRootPart") if not hrp then return end hrp.CFrame = CFrame.new(pos) end local function teleportToTarget(target) local pos = getPosition(target) if not pos then return end teleportToPosition(pos + Vector3.new(0, 3, 0)) end -- GUI setup local screenGui = Instance.new("ScreenGui") screenGui.Name = "AdminEspGui" screenGui.ResetOnSpawn = false screenGui.IgnoreGuiInset = true screenGui.DisplayOrder = 100 screenGui.Parent = playerGui -- Track enabled state per group local groupEnabled = { monster = true, items = true, } -- Helper to build a toggle button, returns the button + its stroke local function createToggleButton(text, yPos, color) local btn = Instance.new("TextButton") btn.Name = text .. "Toggle" btn.Size = UDim2.fromOffset(140, 40) btn.Position = UDim2.fromOffset(20, yPos) btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40) btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.SourceSansBold btn.TextSize = 16 btn.Text = text .. ": ON" btn.AutoButtonColor = true btn.Parent = screenGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 6) corner.Parent = btn local stroke = Instance.new("UIStroke") stroke.Thickness = 1 stroke.Color = color stroke.Parent = btn return btn, stroke end local monsterToggle, monsterStroke = createToggleButton("Monster ESP", 200, Color3.fromRGB(0, 255, 0)) local itemsToggle, itemsStroke = createToggleButton("Items ESP", 250, Color3.fromRGB(255, 255, 0)) local tpPanel = Instance.new("Frame") tpPanel.Name = "TeleportPanel" tpPanel.Size = UDim2.fromOffset(140, 0) tpPanel.AutomaticSize = Enum.AutomaticSize.Y tpPanel.Position = UDim2.fromOffset(20, 300) tpPanel.BackgroundColor3 = Color3.fromRGB(30, 30, 30) tpPanel.BackgroundTransparency = 0.2 tpPanel.Parent = screenGui local tpPanelCorner = Instance.new("UICorner") tpPanelCorner.CornerRadius = UDim.new(0, 6) tpPanelCorner.Parent = tpPanel local tpPanelPadding = Instance.new("UIPadding") tpPanelPadding.PaddingTop = UDim.new(0, 6) tpPanelPadding.PaddingBottom = UDim.new(0, 6) tpPanelPadding.PaddingLeft = UDim.new(0, 6) tpPanelPadding.PaddingRight = UDim.new(0, 6) tpPanelPadding.Parent = tpPanel local tpListLayout = Instance.new("UIListLayout") tpListLayout.Padding = UDim.new(0, 6) tpListLayout.SortOrder = Enum.SortOrder.LayoutOrder tpListLayout.Parent = tpPanel -- Spawn TP button local spawnButton = Instance.new("TextButton") spawnButton.Name = "TP_Spawn" spawnButton.Size = UDim2.new(1, 0, 0, 32) spawnButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50) spawnButton.TextColor3 = Color3.fromRGB(0, 200, 255) spawnButton.Font = Enum.Font.SourceSansBold spawnButton.TextSize = 15 spawnButton.Text = "TP: Spawn" spawnButton.LayoutOrder = 0 spawnButton.Parent = tpPanel local spawnCorner = Instance.new("UICorner") spawnCorner.CornerRadius = UDim.new(0, 4) spawnCorner.Parent = spawnButton spawnButton.MouseButton1Click:Connect(function() teleportToPosition(SPAWN_POSITION) end) local corners = { Vector3.new(-0.5, -0.5, -0.5), Vector3.new(0.5, -0.5, -0.5), Vector3.new(0.5, -0.5, 0.5), Vector3.new(-0.5, -0.5, 0.5), Vector3.new(-0.5, 0.5, -0.5), Vector3.new(0.5, 0.5, -0.5), Vector3.new(0.5, 0.5, 0.5), Vector3.new(-0.5, 0.5, 0.5), } local trackers = {} for i, def in ipairs(targetDefs) do local boxFrame = Instance.new("Frame") boxFrame.Name = def.name .. "Box" boxFrame.BackgroundTransparency = 1 boxFrame.BorderSizePixel = 0 boxFrame.Visible = false boxFrame.Parent = screenGui local stroke = Instance.new("UIStroke") stroke.Thickness = 2 stroke.Color = def.color stroke.Parent = boxFrame local label = Instance.new("TextLabel") label.BackgroundTransparency = 1 label.Size = UDim2.new(1, 0, 0, 16) label.Position = UDim2.new(0, 0, 0, -18) label.Font = Enum.Font.SourceSansBold label.TextSize = 14 label.TextColor3 = def.color label.Text = def.name label.Parent = boxFrame local tracker = { def = def, boxFrame = boxFrame, target = nil, } if def.teleport then local tpButton = Instance.new("TextButton") tpButton.Name = "TP_" .. def.name tpButton.Size = UDim2.new(1, 0, 0, 32) tpButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50) tpButton.TextColor3 = def.color tpButton.Font = Enum.Font.SourceSansBold tpButton.TextSize = 15 tpButton.Text = "TP: " .. def.name tpButton.LayoutOrder = i tpButton.Parent = tpPanel local tpCorner = Instance.new("UICorner") tpCorner.CornerRadius = UDim.new(0, 4) tpCorner.Parent = tpButton tpButton.MouseButton1Click:Connect(function() if not tracker.target or not tracker.target.Parent then tracker.target = findByName(def.name) end if tracker.target then teleportToTarget(tracker.target) else warn(def.name .. " not found, can't teleport.") end end) end table.insert(trackers, tracker) end monsterToggle.MouseButton1Click:Connect(function() groupEnabled.monster = not groupEnabled.monster monsterToggle.Text = "Monster ESP: " .. (groupEnabled.monster and "ON" or "OFF") monsterStroke.Color = groupEnabled.monster and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 0, 0) if not groupEnabled.monster then for _, t in ipairs(trackers) do if t.def.group == "monster" then t.boxFrame.Visible = false end end end end) itemsToggle.MouseButton1Click:Connect(function() groupEnabled.items = not groupEnabled.items itemsToggle.Text = "Items ESP: " .. (groupEnabled.items and "ON" or "OFF") itemsStroke.Color = groupEnabled.items and Color3.fromRGB(255, 255, 0) or Color3.fromRGB(255, 0, 0) if not groupEnabled.items then for _, t in ipairs(trackers) do if t.def.group == "items" then t.boxFrame.Visible = false end end end end) RunService.RenderStepped:Connect(function() for _, t in ipairs(trackers) do if not groupEnabled[t.def.group] then t.boxFrame.Visible = false else if not t.target or not t.target.Parent then t.target = findByName(t.def.name) end if not t.target then t.boxFrame.Visible = false else local cf, size = getBoundsCFrameAndSize(t.target) if not cf then t.boxFrame.Visible = false else local minX, minY = math.huge, math.huge local maxX, maxY = -math.huge, -math.huge local anyBehindCamera = false for _, offset in ipairs(corners) do local worldPoint = cf:PointToWorldSpace(offset * size) local screenPoint = camera:WorldToViewportPoint(worldPoint) if screenPoint.Z <= 0 then anyBehindCamera = true break end minX = math.min(minX, screenPoint.X) minY = math.min(minY, screenPoint.Y) maxX = math.max(maxX, screenPoint.X) maxY = math.max(maxY, screenPoint.Y) end if anyBehindCamera then t.boxFrame.Visible = false else t.boxFrame.Visible = true t.boxFrame.Position = UDim2.fromOffset(minX, minY) t.boxFrame.Size = UDim2.fromOffset(maxX - minX, maxY - minY) end end end end end end) print("Admin panel started: Monster ESP + Items ESP + teleports ready.") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local root = character:WaitForChild("HumanoidRootPart") -- Settings local minSpeed = 16 local maxSpeed = 90 -- keep this reasonable (60-80 is safer) local targetSpeed = 45 local enabled = false local connection = nil local attachment = nil local linearVel = nil -- Create the force objects local function setupVelocity() if attachment then attachment:Destroy() end if linearVel then linearVel:Destroy() end attachment = Instance.new("Attachment") attachment.Name = "SpeedAtt" attachment.Parent = root linearVel = Instance.new("LinearVelocity") linearVel.Name = "SpeedForce" linearVel.Attachment0 = attachment linearVel.MaxForce = 99999 linearVel.VectorVelocity = Vector3.zero linearVel.RelativeTo = Enum.ActuatorRelativeTo.World linearVel.Parent = root end local function startSpeed() if connection then connection:Disconnect() end setupVelocity() connection = RunService.Heartbeat:Connect(function() if not enabled or not humanoid or not root or not linearVel then return end local moveDir = humanoid.MoveDirection if moveDir.Magnitude > 0.05 then -- slight random so it doesn't look perfectly constant local random = math.random(-3, 3) local finalSpeed = targetSpeed + random linearVel.VectorVelocity = Vector3.new(moveDir.X * finalSpeed, 0, moveDir.Z * finalSpeed) linearVel.MaxForce = 99999 else linearVel.VectorVelocity = Vector3.zero linearVel.MaxForce = 0 end end) end local function stopSpeed() if connection then connection:Disconnect() connection = nil end if linearVel then linearVel.VectorVelocity = Vector3.zero linearVel.MaxForce = 0 end end -- GUI local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "TBSpeed" ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.Parent = game:GetService("CoreGui") local Main = Instance.new("Frame") Main.Size = UDim2.new(0, 260, 0, 155) Main.Position = UDim2.new(0.5, -130, 0.25, 0) Main.BackgroundColor3 = Color3.fromRGB(22, 22, 22) Main.BorderSizePixel = 0 Main.Active = true Main.Draggable = true Main.Parent = ScreenGui Instance.new("UICorner", Main).CornerRadius = UDim.new(0, 8) local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 28) Title.BackgroundColor3 = Color3.fromRGB(32, 32, 32) Title.BorderSizePixel = 0 Title.Text = "TB Speed (Under Hood)" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.Font = Enum.Font.GothamBold Title.TextSize = 14 Title.Parent = Main Instance.new("UICorner", Title).CornerRadius = UDim.new(0, 8) local ToggleBtn = Instance.new("TextButton") ToggleBtn.Size = UDim2.new(0, 110, 0, 26) ToggleBtn.Position = UDim2.new(0, 15, 0, 40) ToggleBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40) ToggleBtn.BorderSizePixel = 0 ToggleBtn.Text = "OFF" ToggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255) ToggleBtn.Font = Enum.Font.GothamBold ToggleBtn.TextSize = 13 ToggleBtn.Parent = Main Instance.new("UICorner", ToggleBtn).CornerRadius = UDim.new(0, 6) local SpeedBox = Instance.new("TextBox") SpeedBox.Size = UDim2.new(0, 100, 0, 26) SpeedBox.Position = UDim2.new(0, 140, 0, 40) SpeedBox.BackgroundColor3 = Color3.fromRGB(40, 40, 40) SpeedBox.BorderSizePixel = 0 SpeedBox.Text = "45" SpeedBox.TextColor3 = Color3.fromRGB(255, 255, 255) SpeedBox.Font = Enum.Font.Gotham SpeedBox.TextSize = 13 SpeedBox.Parent = Main Instance.new("UICorner", SpeedBox).CornerRadius = UDim.new(0, 6) local SliderBG = Instance.new("Frame") SliderBG.Size = UDim2.new(0, 230, 0, 7) SliderBG.Position = UDim2.new(0, 15, 0, 85) SliderBG.BackgroundColor3 = Color3.fromRGB(45, 45, 45) SliderBG.BorderSizePixel = 0 SliderBG.Parent = Main Instance.new("UICorner", SliderBG).CornerRadius = UDim.new(1, 0) local SliderFill = Instance.new("Frame") SliderFill.Size = UDim2.new(0.35, 0, 1, 0) SliderFill.BackgroundColor3 = Color3.fromRGB(0, 170, 255) SliderFill.BorderSizePixel = 0 SliderFill.Parent = SliderBG Instance.new("UICorner", SliderFill).CornerRadius = UDim.new(1, 0) local SliderBtn = Instance.new("TextButton") SliderBtn.Size = UDim2.new(0, 16, 0, 16) SliderBtn.Position = UDim2.new(0.35, -8, 0.5, -8) SliderBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SliderBtn.BorderSizePixel = 0 SliderBtn.Text = "" SliderBtn.Parent = SliderBG Instance.new("UICorner", SliderBtn).CornerRadius = UDim.new(1, 0) -- Functions local function updateVisual() local percent = math.clamp((targetSpeed - minSpeed) / (maxSpeed - minSpeed), 0, 1) SliderFill.Size = UDim2.new(percent, 0, 1, 0) SliderBtn.Position = UDim2.new(percent, -8, 0.5, -8) SpeedBox.Text = tostring(math.floor(targetSpeed)) end local function setSpeed(val) targetSpeed = math.clamp(tonumber(val) or 45, minSpeed, maxSpeed) updateVisual() end ToggleBtn.MouseButton1Click:Connect(function() enabled = not enabled if enabled then ToggleBtn.Text = "ON" ToggleBtn.BackgroundColor3 = Color3.fromRGB(40, 160, 60) startSpeed() else ToggleBtn.Text = "OFF" ToggleBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40) stopSpeed() end end) SpeedBox.FocusLost:Connect(function(enter) if enter then setSpeed(SpeedBox.Text) end end) local dragging = false SliderBtn.MouseButton1Down:Connect(function() dragging = true end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local rel = math.clamp((UserInputService:GetMouseLocation().X - SliderBG.AbsolutePosition.X) / SliderBG.AbsoluteSize.X, 0, 1) setSpeed(minSpeed + rel * (maxSpeed - minSpeed)) end end) -- Respawn support player.CharacterAdded:Connect(function(char) character = char humanoid = char:WaitForChild("Humanoid") root = char:WaitForChild("HumanoidRootPart") task.wait(0.8) if enabled then startSpeed() end end) setSpeed(45) print("TB LinearVelocity speed loaded")