-- --- AUTO-REPLACE LOGIC --- local uiName = "TrublHub_V61" local fileName = "TrublHub_Config.json" local HttpService = game:GetService("HttpService") for _, oldUI in pairs(game.Players.LocalPlayer.PlayerGui:GetChildren()) do if oldUI.Name:find("TrublHub") then oldUI:Destroy() end end local Player = game.Players.LocalPlayer local Character = Player.Character or Player.CharacterAdded:Wait() local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Stats = game:GetService("Stats") -- --- DATA SAVING --- _G.Settings = { SpeedEnabled = false, StealSpeedEnabled = false, AutoSpeed = false, CustomSpeedValue = 50, StealSpeedValue = 27, StealSpeedKeybind = "L", -- Default Key AutoSteal = false, BatEnabled = false, InfJump = false, AntiRagdoll = false, GodMode = false } local function Save() if writefile then writefile(fileName, HttpService:JSONEncode(_G.Settings)) end end local function Load() if isfile and isfile(fileName) then local success, data = pcall(function() return HttpService:JSONDecode(readfile(fileName)) end) if success then for k, v in pairs(data) do _G.Settings[k] = v end end end end Load() -- --- UI DESIGN HELPERS --- local function ApplyDesign(obj, radius, strokeColor, thickness) Instance.new("UICorner", obj).CornerRadius = UDim.new(0, radius) local stroke = Instance.new("UIStroke", obj) stroke.Color = strokeColor stroke.Thickness = thickness stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border end -- --- SCREEN GUI --- local ScreenGui = Instance.new("ScreenGui", Player.PlayerGui) ScreenGui.Name = uiName ScreenGui.ResetOnSpawn = false -- --- TOP CENTER HUD --- local TopHud = Instance.new("Frame", ScreenGui) TopHud.Size = UDim2.new(0, 300, 0, 85) TopHud.Position = UDim2.new(0.5, -150, 0, 10) TopHud.BackgroundColor3 = Color3.fromRGB(10, 10, 10) ApplyDesign(TopHud, 8, Color3.fromRGB(255, 0, 0), 2) local TopTitle = Instance.new("TextLabel", TopHud) TopTitle.Size = UDim2.new(1, 0, 0, 25) TopTitle.Text = "TRUBLHUB" TopTitle.Font = Enum.Font.GothamBold TopTitle.TextColor3 = Color3.fromRGB(255, 0, 0); TopTitle.TextSize = 16 TopTitle.BackgroundTransparency = 1 local StatsLabel = Instance.new("TextLabel", TopHud) StatsLabel.Size = UDim2.new(1, 0, 0, 20); StatsLabel.Position = UDim2.new(0, 0, 0, 25) StatsLabel.Text = "FPS: 0 | PING: 0ms"; StatsLabel.Font = Enum.Font.Code StatsLabel.TextColor3 = Color3.fromRGB(200, 200, 200); StatsLabel.TextSize = 12 StatsLabel.BackgroundTransparency = 1 local DiscordFrame = Instance.new("Frame", TopHud) DiscordFrame.Size = UDim2.new(0.9, 0, 0, 25); DiscordFrame.Position = UDim2.new(0.05, 0, 0, 50) DiscordFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20) ApplyDesign(DiscordFrame, 4, Color3.fromRGB(255, 0, 0), 1) local DiscordLink = Instance.new("TextLabel", DiscordFrame) DiscordLink.Size = UDim2.new(0.75, 0, 1, 0); DiscordLink.Text = "https://discord.gg/s5hzgwVM" DiscordLink.Font = Enum.Font.SourceSans; DiscordLink.TextColor3 = Color3.fromRGB(255, 255, 255) DiscordLink.TextSize = 11; DiscordLink.BackgroundTransparency = 1 local CopyBtn = Instance.new("TextButton", DiscordFrame) CopyBtn.Size = UDim2.new(0.25, 0, 1, 0); CopyBtn.Position = UDim2.new(0.75, 0, 0, 0) CopyBtn.Text = "COPY"; CopyBtn.Font = Enum.Font.GothamBold CopyBtn.TextColor3 = Color3.fromRGB(255, 0, 0); CopyBtn.TextSize = 10 CopyBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) ApplyDesign(CopyBtn, 4, Color3.fromRGB(255, 0, 0), 1) CopyBtn.MouseButton1Click:Connect(function() if setclipboard then setclipboard("https://discord.gg/s5hzgwVM") end CopyBtn.Text = "COPIED!"; task.wait(1); CopyBtn.Text = "COPY" end) -- Stats Refresh task.spawn(function() local lastTime = tick(); local frameCount = 0 RunService.RenderStepped:Connect(function() frameCount = frameCount + 1 if tick() - lastTime >= 1 then local ping = math.round(Stats.Network.ServerStatsItem["Data Ping"]:GetValue()) StatsLabel.Text = "FPS: "..frameCount.." | PING: "..ping.."ms" frameCount = 0; lastTime = tick() end end) end) -- --- MAIN MENU FRAME --- local MainFrame = Instance.new("Frame", ScreenGui) MainFrame.Size = UDim2.new(0, 260, 0, 420) MainFrame.Position = UDim2.new(1, -280, 0.5, -210) MainFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 10) MainFrame.Active = true ApplyDesign(MainFrame, 12, Color3.fromRGB(255, 0, 0), 2) local Container = Instance.new("Frame", MainFrame) Container.Size = UDim2.new(1, 0, 1, -60); Container.Position = UDim2.new(0, 0, 0, 50) Container.BackgroundTransparency = 1 local TabHolder = Instance.new("Frame", MainFrame) TabHolder.Size = UDim2.new(1, -20, 0, 30); TabHolder.Position = UDim2.new(0, 10, 0, 10) TabHolder.BackgroundTransparency = 1 local TabList = Instance.new("UIListLayout", TabHolder) TabList.FillDirection = Enum.FillDirection.Horizontal; TabList.Padding = UDim.new(0, 5) local Pages = {}; local TabButtons = {} local function CreateTab(name) local Page = Instance.new("ScrollingFrame", Container) Page.Size = UDim2.new(1, 0, 1, 0); Page.BackgroundTransparency = 1; Page.Visible = false Page.ScrollBarThickness = 4; Page.ScrollBarImageColor3 = Color3.fromRGB(255, 0, 0) local list = Instance.new("UIListLayout", Page) list.Padding = UDim.new(0, 8); list.HorizontalAlignment = Enum.HorizontalAlignment.Center local TabBtn = Instance.new("TextButton", TabHolder) TabBtn.Size = UDim2.new(0.31, 0, 1, 0); TabBtn.Text = name:upper() TabBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 20); TabBtn.TextColor3 = Color3.fromRGB(150, 150, 150) TabBtn.Font = Enum.Font.GothamBold; TabBtn.TextSize = 10 ApplyDesign(TabBtn, 5, Color3.fromRGB(255, 0, 0), 1) TabBtn.MouseButton1Click:Connect(function() for n, p in pairs(Pages) do p.Visible = (n == name) TabButtons[n].TextColor3 = (n == name) and Color3.new(1,1,1) or Color3.fromRGB(150, 150, 150) end end) Pages[name] = Page; TabButtons[name] = TabBtn return Page end local SpeedPage = CreateTab("Speed") local StealPage = CreateTab("Steal") local HelpPage = CreateTab("Help") -- --- UI COMPONENTS --- local function AddToggle(parent, text, settingKey) local btn = Instance.new("TextButton", parent) btn.Size = UDim2.new(0.9, 0, 0, 38); btn.Font = Enum.Font.GothamBold; btn.TextColor3 = Color3.new(1,1,1) ApplyDesign(btn, 6, Color3.fromRGB(255, 0, 0), 1) local function update() local state = _G.Settings[settingKey] btn.Text = text .. ": " .. (state and "ON" or "OFF") btn.BackgroundColor3 = state and Color3.fromRGB(180, 0, 0) or Color3.fromRGB(25, 25, 25) end btn.MouseButton1Click:Connect(function() _G.Settings[settingKey] = not _G.Settings[settingKey] update(); Save() end) task.spawn(function() while task.wait(0.5) do if not btn or not btn.Parent then break end update() end end) update() end local function AddInput(parent, labelText, settingKey, isKeybind) local f = Instance.new("Frame", parent) f.Size = UDim2.new(0.9, 0, 0, 40); f.BackgroundColor3 = Color3.fromRGB(20, 20, 20) ApplyDesign(f, 6, Color3.fromRGB(255, 0, 0), 1) local l = Instance.new("TextLabel", f) l.Size = UDim2.new(0.4, 0, 1, 0); l.Position = UDim2.new(0.05, 0, 0, 0) l.Text = labelText; l.TextColor3 = Color3.new(1,1,1); l.BackgroundTransparency = 1; l.Font = Enum.Font.Code; l.TextSize = 10 local b = Instance.new("TextBox", f) b.Size = UDim2.new(0.4, 0, 0.7, 0); b.Position = UDim2.new(0.55, 0, 0.15, 0) b.BackgroundColor3 = Color3.fromRGB(10, 10, 10); b.TextColor3 = Color3.new(1,0,0) b.Text = tostring(_G.Settings[settingKey]) ApplyDesign(b, 4, Color3.fromRGB(255, 0, 0), 1) b.FocusLost:Connect(function() if isKeybind then local newKey = b.Text:sub(1,1):upper() -- Take first letter and make uppercase if newKey ~= "" then _G.Settings[settingKey] = newKey b.Text = newKey end else _G.Settings[settingKey] = tonumber(b.Text) or _G.Settings[settingKey] end Save() end) end -- --- BUILD MENU --- AddInput(SpeedPage, "BOOST SPD", "CustomSpeedValue") AddInput(SpeedPage, "STEAL SPD", "StealSpeedValue") AddInput(SpeedPage, "STEAL KEY", "StealSpeedKeybind", true) -- Keybind Input AddToggle(SpeedPage, "Speed Boost", "SpeedEnabled") AddToggle(SpeedPage, "Steal Speed", "StealSpeedEnabled") AddToggle(SpeedPage, "Smart Bat", "BatEnabled") AddToggle(StealPage, "Auto Steal", "AutoSteal") AddToggle(HelpPage, "Immortal King", "GodMode") AddToggle(HelpPage, "Anti Ragdoll", "AntiRagdoll") AddToggle(HelpPage, "Platform Jump", "InfJump") -- --- CORE LOGIC --- local levPart = Instance.new("Part") levPart.Size = Vector3.new(5, 0.5, 5); levPart.Transparency = 1; levPart.Anchored = true; levPart.CanCollide = true; levPart.Name = "TrublJump" local isHoldingSpace = false -- FIXED KEYBIND DETECTION UserInputService.InputBegan:Connect(function(input, gp) if not gp then if input.KeyCode == Enum.KeyCode.Space then isHoldingSpace = true end -- Check if the key pressed matches the name of our stored Keybind local boundKeyName = tostring(_G.Settings.StealSpeedKeybind):upper() if input.KeyCode.Name:upper() == boundKeyName then _G.Settings.StealSpeedEnabled = not _G.Settings.StealSpeedEnabled Save() end end end) UserInputService.InputEnded:Connect(function(input, gp) if input.KeyCode == Enum.KeyCode.Space then isHoldingSpace = false end end) -- Smart Bat Loop task.spawn(function() while task.wait(0.05) do if _G.Settings.BatEnabled then local char = Player.Character local root = char and char:FindFirstChild("HumanoidRootPart") local hum = char and char:FindFirstChild("Humanoid") local backpack = Player:FindFirstChild("Backpack") if char and root and hum and backpack then local bat = char:FindFirstChild("Bat") or backpack:FindFirstChild("Bat") if bat then local targetFound = false for _, other in pairs(game.Players:GetPlayers()) do if other ~= Player and other.Character and other.Character:FindFirstChild("HumanoidRootPart") then local oRoot = other.Character.HumanoidRootPart local oHum = other.Character:FindFirstChild("Humanoid") if oHum and oHum.Health > 0 and (root.Position - oRoot.Position).Magnitude <= 12 then targetFound = true if bat.Parent ~= char then hum:EquipTool(bat) end bat:Activate() break end end end if not targetFound and bat.Parent == char then hum:UnequipTools() end end end end end end) -- Physics Loop RunService.Heartbeat:Connect(function() if not Character or not Character:FindFirstChild("Humanoid") then return end local Root = Character:FindFirstChild("HumanoidRootPart") local Hum = Character.Humanoid -- Anchored Anti-Ragdoll if _G.Settings.AntiRagdoll then Hum:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false) Hum:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false) for _, part in ipairs(Character:GetChildren()) do if part:IsA("BasePart") then part.Anchored = (part.Name ~= "HumanoidRootPart") end end else for _, part in ipairs(Character:GetChildren()) do if part:IsA("BasePart") then part.Anchored = false end end end -- Speed Logic if Root then local targetSpeed = 16 if _G.Settings.StealSpeedEnabled then targetSpeed = _G.Settings.StealSpeedValue elseif _G.Settings.SpeedEnabled then targetSpeed = _G.Settings.CustomSpeedValue end if (_G.Settings.StealSpeedEnabled or _G.Settings.SpeedEnabled) and Hum.MoveDirection.Magnitude > 0 then Root.Velocity = Vector3.new(Hum.MoveDirection.X * targetSpeed, Root.Velocity.Y, Hum.MoveDirection.Z * targetSpeed) end end -- Jump Platform if _G.Settings.InfJump then Hum.JumpPower = 0 if isHoldingSpace then levPart.Parent = workspace levPart.CFrame = Root.CFrame * CFrame.new(0, -3.2, 0) Root.Velocity = Vector3.new(Root.Velocity.X, 30, Root.Velocity.Z) else levPart.Parent = nil end else Hum.JumpPower = 50; levPart.Parent = nil end end) Player.CharacterAdded:Connect(function(nc) Character = nc end) -- --- DRAGGABLE --- local d, s, p MainFrame.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then d, s, p = true, i.Position, MainFrame.Position end end) UserInputService.InputChanged:Connect(function(i) if d and i.UserInputType == Enum.UserInputType.MouseMovement then local delta = i.Position - s MainFrame.Position = UDim2.new(p.X.Scale, p.X.Offset + delta.X, p.Y.Scale, p.Y.Offset + delta.Y) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then d = false end end) Pages["Speed"].Visible = true; TabButtons["Speed"].TextColor3 = Color3.new(1,1,1)