explore
key systems
new
docs
discord
search scripts
⌘K
explore
key systems
new
docs
discord
sign in
⌘↵
--
publishes from anywhere on this page
new paste
untitled.luau
empty
/ 512kb
open file
⌘O
explore
key systems
new
docs
sign in
copy.lua
921 lines · 44.3kb
/ 512kb
open file
⌘O
-- ============================================================ -- 随心配 Hub · 飞天(含移速) + 飞车(改持续操控) + 甩飞(修溢出) + ESP -- ============================================================ local Players = game:GetService("Players") local RS = game:GetService("RunService") local UIS = game:GetService("UserInputService") local LP = Players.LocalPlayer if not LP.Character then LP.CharacterAdded:Wait() end -- ===== GUI ===== local SG = Instance.new("ScreenGui") SG.Name = "SuiXinPeiHub" SG.ResetOnSpawn = false SG.ZIndexBehavior = Enum.ZIndexBehavior.Sibling SG.IgnoreGuiInset = true pcall(function() SG.Parent = game:GetService("CoreGui") end) local not SG.Parent local SG.Parent = end:UIS("PlayerGui") game GetService local = UIS.TouchEnabled LP if UIS.KeyboardEnabled not then = Instance.new("UIScale") Wait = end UIScale.Parent = -- ===== GUI =====, local SG = Instance.new("ScreenGui")) false = true:pcall("RunService") function game SG.Name = "SuiXinPeiHub" SG.ResetOnSpawn = cgameInstance.new("UICorner") c.CornerRadius = SG.ZIndexBehavior = Enum.ZIndexBehavior.Sibling SG.IgnoreGuiInset = GetService UDim.new(0, 8) c.Parent = end(if() SG.Parent = not:then("CoreGui") LP) WaitForChild end SG.Parent local SG.Parent = isMobile:and not local = Instance.new("UIScale") UIScale.Scale = andisMobilenot 0.75 label local UIScale isMobile(andor, SG, local, function, parentcornerorreturn c local functionSGUIScalelocal function jkltext-- ============================================================ = abc def ghi jkl mno local abc def abc def ghi jkl abc def def ghi jkl mno pqr t.Size = size; t.Position = pos; t.BackgroundTransparency = 1 t.Text = text; t.TextColor3 = color or Color3.fromRGB(220,220,220) t.TextSize = isMobile and 15 or 13 t.Font = Enum.Font.Gotham t.TextXAlignment = Enum.TextXAlignment.Left t.Parent = parent return t end -- ===== 主面板 ===== local MainFrame = Instance.new("Frame") if isMobile then MainFrame.Size = UDim2.new(0.92, 0, 0.85, 0) MainFrame.Position = UDim2.new(0.04, 0, 0.08, 0) else MainFrame.Size = UDim2.new(0, 440, 0, 400) MainFrame.Position = UDim2.new(0.5, -220, 0.5, -200) end MainFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 24) MainFrame.BorderSizePixel = 0 MainFrame.Active = true MainFrame.Draggable = not isMobile MainFrame.Visible = false MainFrame.Parent = SG corner(MainFrame, UDim.new(0, 12)) if isMobile then local dragStart, startPos MainFrame.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.Touch then dragStart = i.Position; startPos = MainFrame.Position end end) MainFrame.InputChanged:Connect(function(i) if dragStart and i.UserInputType == Enum.UserInputType.Touch then local delta = i.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) MainFrame.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.Touch then dragStart = nil end end) end local TopBar = Instance.new("Frame") TopBar.Size = UDim2.new(1, 0, 0, isMobile and 44 or 38) TopBar.BackgroundColor3 = Color3.fromRGB(30, 30, 40) TopBar.BorderSizePixel = 0 TopBar.Parent = MainFrame corner(TopBar, UDim.new(0, 12)) label(TopBar, "随心配 Hub", UDim2.new(0, 200, 1, 0), UDim2.new(0, 14, 0, 0), Color3.fromRGB(255,255,255), Enum.Font.GothamBold) local CloseBtn = Instance.new("TextButton") CloseBtn.Size = UDim2.new(0, isMobile and 50 or 38, 0, isMobile and 36 or 30) CloseBtn.Position = UDim2.new(1, isMobile and -54 or -42, 0, isMobile and 4 or 4) CloseBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50) CloseBtn.Text = "✕" CloseBtn.TextColor3 = Color3.fromRGB(255,255,255) CloseBtn.Font = Enum.Font.GothamBold CloseBtn.TextSize = isMobile and 18 or 14 CloseBtn.Parent = TopBar corner(CloseBtn, UDim.new(0, 6)) CloseBtn.MouseButton1Click:Connect(function() MainFrame.Visible = false end) local SideBar = Instance.new("Frame") SideBar.Size = UDim2.new(0, isMobile and 110 or 100, 1, isMobile and -50 or -38) SideBar.Position = UDim2.new(0, 0, 0, isMobile and 48 or 38) SideBar.BackgroundColor3 = Color3.fromRGB(25, 25, 32) SideBar.BorderSizePixel = 0 SideBar.Parent = MainFrame local function createTab(text, yPos) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -12, 0, isMobile and 44 or 38) btn.Position = UDim2.new(0, 6, 0, yPos) btn.BackgroundColor3 = Color3.fromRGB(40, 40, 52) btn.Text = text btn.TextColor3 = Color3.fromRGB(220,220,220) btn.TextSize = isMobile and 15 or 13 btn.Font = Enum.Font.GothamBold btn.Parent = SideBar corner(btn, UDim.new(0, 8)) return btn end local tabFly = createTab("🪶 飞天", 10) local tabCar = createTab("🚗 飞车", isMobile and 60 or 54) local tabFlyHack = createTab("🔇 甩飞", isMobile and 110 or 98) local tabESP = createTab("👁 ESP", isMobile and 160 or 142) local tabSettings = createTab("⚙ 设置", isMobile and 210 or 186) -- Content 开启裁剪,防止溢出 local Content = Instance.new("Frame") Content.Size = UDim2.new(1, isMobile and -120 or -108, 1, isMobile and -56 or -46) Content.Position = UDim2.new(0, isMobile and 114 or 104, 0, isMobile and 50 or 42) Content.BackgroundTransparency = 1 Content.ClipsDescendants = true -- 关键:子元素超出会被裁掉 Content.Parent = MainFrame local ContentTitle = label(Content, "", UDim2.new(1, -10, 0, 30), UDim2.new(0, 5, 0, 4), Color3.fromRGB(180,180,200), Enum.Font.GothamBold) local FloatBtn = Instance.new("TextButton") FloatBtn.Size = isMobile and UDim2.new(0, 64, 0, 64) or UDim2.new(0, 56, 0, 56) FloatBtn.Position = UDim2.new(1, isMobile and -74 or -66, 1, isMobile and -74 or -66) FloatBtn.BackgroundColor3 = Color3.fromRGB(50, 150, 255) FloatBtn.Text = "Hub" FloatBtn.TextColor3 = Color3.fromRGB(255,255,255) FloatBtn.Font = Enum.Font.GothamBold FloatBtn.TextSize = isMobile and 16 or 14 FloatBtn.Parent = SG corner(FloatBtn, UDim.new(1, 0)) FloatBtn.MouseButton1Click:Connect(function() MainFrame.Visible = not MainFrame.Visible end) -- ===== 控件工厂 ===== local nextY = isMobile and 44 or 36 local function resetLayout() nextY = isMobile and 44 or 36 end local function clearContent() for _, c in ipairs(Content:GetChildren()) do if c ~= ContentTitle then c:Destroy() end end end local btnH = isMobile and 44 or 36 local function addLabel(text, color) label(Content, text, UDim2.new(1, -10, 0, 20), UDim2.new(0, 5, 0, nextY), color or Color3.fromRGB(180,180,180)) nextY = nextY + 22 end local function addToggle(text, default, callback) local row = Instance.new("Frame") row.Size = UDim2.new(1, -10, 0, btnH + 4) row.Position = UDim2.new(0, 5, 0, nextY) row.BackgroundTransparency = 1 row.Parent = Content label(row, text, UDim2.new(1, -70, 1, 0), UDim2.new(0, 0, 0, 4), Color3.fromRGB(220,220,220)) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 60, 0, btnH) btn.Position = UDim2.new(1, -62, 0, 2) btn.Text = default and "ON" or "OFF" btn.TextColor3 = default and Color3.fromRGB(50,255,50) or Color3.fromRGB(255,80,80) btn.BackgroundColor3 = default and Color3.fromRGB(40,120,40) or Color3.fromRGB(100,40,40) btn.Font = Enum.Font.GothamBold btn.TextSize = isMobile and 14 or 12 btn.Parent = row corner(btn, UDim.new(0, 6)) local state = default btn.MouseButton1Click:Connect(function() state = not state btn.Text = state and "ON" or "OFF" btn.TextColor3 = state and Color3.fromRGB(50,255,50) or Color3.fromRGB(255,80,80) btn.BackgroundColor3 = state and Color3.fromRGB(40,120,40) or Color3.fromRGB(100,40,40) callback(state) end) nextY = nextY + btnH + 8 end local function addBtn(text, bgColor, callback) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -10, 0, btnH) btn.Position = UDim2.new(0, 5, 0, nextY) btn.BackgroundColor3 = bgColor or Color3.fromRGB(50, 100, 200) btn.Text = text btn.TextColor3 = Color3.fromRGB(255,255,255) btn.Font = Enum.Font.GothamBold btn.TextSize = isMobile and 15 or 13 btn.Parent = Content corner(btn, UDim.new(0, 8)) btn.MouseButton1Click:Connect(callback) nextY = nextY + btnH + 6 end local function addSpeedRow(labelTxt, default, min, max, callback) addLabel(labelTxt .. ": " .. default, Color3.fromRGB(100,200,255)) local row = Instance.new("Frame") row.Size = UDim2.new(1, -10, 0, btnH) row.Position = UDim2.new(0, 5, 0, nextY) row.BackgroundTransparency = 1 row.Parent = Content nextY = nextY + btnH + 6 local minusBtn = Instance.new("TextButton") minusBtn.Size = UDim2.new(0, btnH, 1, 0); minusBtn.Position = UDim2.new(0, 0, 0, 0) minusBtn.BackgroundColor3 = Color3.fromRGB(200,80,80); minusBtn.Text = "-" minusBtn.TextColor3 = Color3.new(1,1,1); minusBtn.Font = Enum.Font.GothamBold; minusBtn.TextSize = 20 minusBtn.Parent = row; corner(minusBtn, UDim.new(0, 6)) local valLabel = Instance.new("TextLabel") valLabel.Size = UDim2.new(1, -btnH*2 - 10, 1, 0); valLabel.Position = UDim2.new(0, btnH + 5, 0, 0) valLabel.BackgroundTransparency = 1; valLabel.Text = tostring(default) valLabel.TextColor3 = Color3.new(1,1,1); valLabel.Font = Enum.Font.GothamBold; valLabel.TextSize = isMobile and 16 or 14 valLabel.Parent = row local plusBtn = Instance.new("TextButton") plusBtn.Size = UDim2.new(0, btnH, 1, 0); plusBtn.Position = UDim2.new(1, -btnH, 0, 0) plusBtn.BackgroundColor3 = Color3.fromRGB(80,200,80); plusBtn.Text = "+" plusBtn.TextColor3 = Color3.new(1,1,1); plusBtn.Font = Enum.Font.GothamBold; plusBtn.TextSize = 20 plusBtn.Parent = row; corner(plusBtn, UDim.new(0, 6)) local val = default minusBtn.MouseButton1Click:Connect(function() if val > min then val = val - 1; valLabel.Text = val; callback(val) end end) plusBtn.MouseButton1Click:Connect(function() if val < max then val = val + 1; valLabel.Text = val; callback(val) end end) end -- ============================================================ -- 飞天(恢复原版 + 移速调节) -- ============================================================ local Fly = { Active = false, Speed = 50, -- 移速(可调) Conn = nil, bg = nil, bv = nil, tpThreads = {}, inputBegan = nil, inputEnded = nil, } local function getRoot() local c = LP.Character if not c then return nil, nil end return c:FindFirstChild("HumanoidRootPart"), c:FindFirstChildOfClass("Humanoid") end local function stopFly() if not Fly.Active then return end Fly.Active = false if Fly.Conn then Fly.Conn:Disconnect() Fly.Conn = nil end if Fly.inputBegan then Fly.inputBegan:Disconnect() Fly.inputBegan = nil end if Fly.inputEnded then Fly.inputEnded:Disconnect() Fly.inputEnded = nil end if Fly.bg then pcall(function() Fly.bg:Destroy() end) Fly.bg = nil end if Fly.bv then pcall(function() Fly.bv:Destroy() end) Fly.bv = nil end for _, co in ipairs(Fly.tpThreads) do pcall(function() coroutine.close(co) end) end Fly.tpThreads = {} local root, hum = getRoot() if hum then hum.PlatformStand = false for _, s in ipairs(Enum.HumanoidStateType:GetEnumItems()) do pcall(function() hum:SetStateEnabled(s, true) end) end pcall(function() hum:ChangeState(Enum.HumanoidStateType.RunningNoPhysics) end) end pcall(function() if LP.Character then LP.Character.Animate.Disabled = false end end) end local function startFly() stopFly() local root, hum = getRoot() if not root or not hum then return end Fly.Active = true hum.PlatformStand = true local Char = LP.Character if Char then local Hum = Char:FindFirstChildOfClass("Humanoid") or Char:FindFirstChildOfClass("AnimationController") if Hum then for _, v in ipairs(Hum:GetPlayingAnimationTracks()) do v:AdjustSpeed(0) end end end for _, st in ipairs({"Climbing","FallingDown","Flying","Freefall","GettingUp","Jumping","Landed","Physics","PlatformStanding","Ragdoll","Running","RunningNoPhysics","Seated","StrafingNoPhysics","Swimming"}) do pcall(function() hum:SetStateEnabled(Enum.HumanoidStateType[st], false) end) end hum:ChangeState(Enum.HumanoidStateType.Swimming) local isR15 = hum.RigType == Enum.HumanoidRigType.R15 local torso = isR15 and LP.Character:FindFirstChild("UpperTorso") or LP.Character:FindFirstChild("Torso") if not torso then stopFly() return end local bg = Instance.new("BodyGyro", torso); bg.P = 9e4; bg.maxTorque = Vector3.new(9e9, 9e9, 9e9); bg.cframe = torso.CFrame; Fly.bg = bg local bv = Instance.new("BodyVelocity", torso); bv.velocity = Vector3.new(0, 0.1, 0); bv.maxForce = Vector3.new(9e9, 9e9, 9e9); Fly.bv = bv local ctrl = {f = 0, b = 0, l = 0, r = 0}; local lastctrl = {f = 0, b = 0, l = 0, r = 0} local maxspeed = Fly.Speed -- 用可调移速 local speedval = 0 for i = 1, 1 do local co = coroutine.create(function() local hb = RS.Heartbeat; local tpwalking = true local chr = LP.Character; local hum2 = chr and chr:FindFirstChildWhichIsA("Humanoid") while tpwalking and hb:Wait() and chr and hum2 and hum2.Parent do if hum2.MoveDirection.Magnitude > 0 then chr:TranslateBy(hum2.MoveDirection) end end end) coroutine.resume(co); table.insert(Fly.tpThreads, co) end Fly.inputBegan = UIS.InputBegan:Connect(function(i, gp) if gp then return end if i.KeyCode == Enum.KeyCode.W then ctrl.f = 1 end if i.KeyCode == Enum.KeyCode.S then ctrl.b = 1 end if i.KeyCode == Enum.KeyCode.A then ctrl.l = 1 end if i.KeyCode == Enum.KeyCode.D then ctrl.r = 1 end end) Fly.inputEnded = UIS.InputEnded:Connect(function(i, gp) if gp then return end if i.KeyCode == Enum.KeyCode.W then ctrl.f = 0 end if i.KeyCode == Enum.KeyCode.S then ctrl.b = 0 end if i.KeyCode == Enum.KeyCode.A then ctrl.l = 0 end if i.KeyCode == Enum.KeyCode.D then ctrl.r = 0 end end) Fly.Conn = RS.RenderStepped:Connect(function() if not Fly.Active then return end local root2, hum2 = getRoot() if not root2 or not hum2 or hum2.Health <= 0 then stopFly() return end maxspeed = Fly.Speed -- 动态跟随调节 if ctrl.l + ctrl.r ~= 0 or ctrl.f + ctrl.b ~= 0 then speedval = speedval + 0.5 + (speedval / maxspeed) if speedval > maxspeed then speedval = maxspeed end elseif speedval ~= 0 then speedval = speedval - 1 if speedval < 0 then speedval = 0 end end if (ctrl.l + ctrl.r) ~= 0 or (ctrl.f + ctrl.b) ~= 0 then Fly.bv.velocity = ((workspace.CurrentCamera.CoordinateFrame.lookVector * (ctrl.f + ctrl.b)) + ((workspace.CurrentCamera.CoordinateFrame * CFrame.new(ctrl.l + ctrl.r, (ctrl.f + ctrl.b) * 0.2, 0).p) - workspace.CurrentCamera.CoordinateFrame.p)) * speedval lastctrl = {f = ctrl.f, b = ctrl.b, l = ctrl.l, r = ctrl.r} elseif speedval ~= 0 then Fly.bv.velocity = ((workspace.CurrentCamera.CoordinateFrame.lookVector * (lastctrl.f + lastctrl.b)) + ((workspace.CurrentCamera.CoordinateFrame * CFrame.new(lastctrl.l + lastctrl.r, (lastctrl.f + lastctrl.b) * 0.2, 0).p) - workspace.CurrentCamera.CoordinateFrame.p)) * speedval else Fly.bv.velocity = Vector3.new(0, 0, 0) end Fly.bg.cframe = workspace.CurrentCamera.CoordinateFrame * CFrame.Angles(-math.rad((ctrl.f + ctrl.b) * 50 * speedval / maxspeed), 0, 0) end) end local function renderFly() clearContent(); resetLayout(); ContentTitle.Text = "🪶 飞天" addLabel("原版飞行引擎 | WASD 方向 | 带加速度", Color3.fromRGB(140,140,140)) addSpeedRow("移速", Fly.Speed, 10, 200, function(v) Fly.Speed = v end) -- 移速调节 addToggle("启用飞行", false, function(v) if v then startFly() else stopFly() end end) addBtn("⬆️ 上升", Color3.fromRGB(80,200,80), function() local r = getRoot() if r then r.CFrame = r.CFrame * CFrame.new(0, 5, 0) end end) addBtn("⬇️ 下降", Color3.fromRGB(200,80,80), function() local r = getRoot() if r then r.CFrame = r.CFrame * CFrame.new(0, -5, 0) end end) addBtn("🛑 停止飞行", Color3.fromRGB(200,50,50), stopFly) end -- ============================================================ -- 飞车(改为和飞天一样的持续操控方式) -- ============================================================ local Car = { Active = false, Speed = 50, Conn = nil, BV = nil, BG = nil, inputBegan = nil, inputEnded = nil, Target = nil, -- PrimaryPart } local function stopCar() Car.Active = false if Car.Conn then Car.Conn:Disconnect() Car.Conn = nil end if Car.inputBegan then Car.inputBegan:Disconnect() Car.inputBegan = nil end if Car.inputEnded then Car.inputEnded:Disconnect() Car.inputEnded = nil end if Car.BV then pcall(function() Car.BV:Destroy() end) Car.BV = nil end if Car.BG then pcall(function() Car.BG:Destroy() end) Car.BG = nil end Car.Target = nil end local function startCar() stopCar() local char = LP.Character if not char then return false end local hum = char:FindFirstChildOfClass("Humanoid") if not hum then return false end -- 优先载具 PrimaryPart,其次座位,再 HRP local target = nil if hum.SeatPart then local vehicle = hum.SeatPart.Parent for i = 1, 8 do if vehicle and vehicle:IsA("Model") and vehicle.PrimaryPart then target = vehicle.PrimaryPart; break end vehicle = vehicle and vehicle.Parent end if not target and hum.SeatPart:IsA("BasePart") then target = hum.SeatPart end end if not target then target = char:FindFirstChild("HumanoidRootPart") end if not target then return false end Car.Active = true Car.Target = target local bg = Instance.new("BodyGyro", target) bg.MaxTorque = Vector3.new(math.huge, math.huge, math.huge) bg.D = 5000; bg.P = 50000 bg.CFrame = target.CFrame Car.BG = bg local bv = Instance.new("BodyVelocity", target) bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge) bv.Velocity = Vector3.new(0, 0, 0) Car.BV = bv local ctrl = {f=0,b=0,l=0,r=0,u=0,d=0} Car.inputBegan = UIS.InputBegan:Connect(function(i, gp) if gp then return end if i.KeyCode == Enum.KeyCode.W then ctrl.f = 1 end if i.KeyCode == Enum.KeyCode.S then ctrl.b = 1 end if i.KeyCode == Enum.KeyCode.A then ctrl.l = 1 end if i.KeyCode == Enum.KeyCode.D then ctrl.r = 1 end if i.KeyCode == Enum.KeyCode.Space then ctrl.u = 1 end if i.KeyCode == Enum.KeyCode.LeftShift or i.KeyCode == Enum.KeyCode.LeftControl then ctrl.d = 1 end end) Car.inputEnded = UIS.InputEnded:Connect(function(i, gp) if gp then return end if i.KeyCode == Enum.KeyCode.W then ctrl.f = 0 end if i.KeyCode == Enum.KeyCode.S then ctrl.b = 0 end if i.KeyCode == Enum.KeyCode.A then ctrl.l = 0 end if i.KeyCode == Enum.KeyCode.D then ctrl.r = 0 end if i.KeyCode == Enum.KeyCode.Space then ctrl.u = 0 end if i.KeyCode == Enum.KeyCode.LeftShift or i.KeyCode == Enum.KeyCode.LeftControl then ctrl.d = 0 end end) Car.Conn = RS.RenderStepped:Connect(function() if not Car.Active or not Car.Target or not Car.Target.Parent then stopCar() return end local cam = workspace.CurrentCamera local cf = cam.CFrame local move = Vector3.new() local look = cf.LookVector local right = cf.RightVector if ctrl.f == 1 then move = move + look end if ctrl.b == 1 then move = move - look end if ctrl.r == 1 then move = move + right end if ctrl.l == 1 then move = move - right end move = Vector3.new(move.X, 0, move.Z) if move.Magnitude > 0 then move = move.Unit end local vert = (ctrl.u - ctrl.d) * Vector3.new(0, 1, 0) local vel = (move * Car.Speed) + (vert * Car.Speed) Car.BV.Velocity = vel if move.Magnitude > 0 then Car.BG.CFrame = CFrame.new(Car.Target.Position, Car.Target.Position + move) end end) return true end local function renderCar() clearContent(); resetLayout(); ContentTitle.Text = "🚗 飞车" addLabel("持续操控 | WASD 移动 | 空格上升 | Shift 下降", Color3.fromRGB(140,140,140)) addLabel("⚠️ 坐上车后开启,否则飞角色", Color3.fromRGB(255,200,100)) addSpeedRow("移速", Car.Speed, 10, 200, function(v) Car.Speed = v end) local carOn = false local carBtn = Instance.new("TextButton") carBtn.Size = UDim2.new(1, -10, 0, btnH) carBtn.Position = UDim2.new(0, 5, 0, nextY) carBtn.BackgroundColor3 = Color3.fromRGB(0, 150, 0) carBtn.Text = "🚀 开启飞车" carBtn.TextColor3 = Color3.fromRGB(255,255,255) carBtn.Font = Enum.Font.GothamBold carBtn.TextSize = isMobile and 15 or 13 carBtn.Parent = Content corner(carBtn, UDim.new(0, 8)) carBtn.MouseButton1Click:Connect(function() if not carOn then local ok = startCar() if ok then carOn = true carBtn.Text = "🛑 关闭飞车" carBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50) end else stopCar() carOn = false carBtn.Text = "🚀 开启飞车" carBtn.BackgroundColor3 = Color3.fromRGB(0, 150, 0) end end) nextY = nextY + btnH + 6 addBtn("⬆️ 上升", Color3.fromRGB(80,200,80), function() if Car.Target then Car.BV.Velocity = Vector3.new(0, Car.Speed, 0) end end) addBtn("⬇️ 下降", Color3.fromRGB(200,80,80), function() if Car.Target then Car.BV.Velocity = Vector3.new(0, -Car.Speed, 0) end end) addBtn("🛑 停止并关闭", Color3.fromRGB(200,50,50), function() stopCar(); carOn = false carBtn.Text = "🚀 开启飞车"; carBtn.BackgroundColor3 = Color3.fromRGB(0, 150, 0) end) end -- ============================================================ -- 甩飞(修复 UI 溢出:Content 裁剪 + 按钮紧凑 + 状态栏收起) -- ============================================================ local FlyHack = { Silent = false, Loop = false, flyConns = {}, loopConns = {}, selected = nil, origPos = nil, wasSilent = false, tpFlying = false } local function SafeChar(p) if not p then return nil end local c = p.Character; if c and c.Parent then return c end end local function SafeHum(c) if c then return c:FindFirstChildOfClass("Humanoid") end end local function SafeHRP(c) if c then return c:FindFirstChild("HumanoidRootPart") end end local function IsPlayerFlying(p) if not p then return false end local c = SafeChar(p); if not c then return false end local hrp = SafeHRP(c); local hum = SafeHum(c) if not hrp or not hum then return false end if hrp.AssemblyLinearVelocity.Magnitude > 30 then return true end local st = hum:GetState() return st == Enum.HumanoidStateType.Physics or st == Enum.HumanoidStateType.FallingDown or st == Enum.HumanoidStateType.Ragdoll end local function ToggleSilentFly(state) FlyHack.Silent = state for _, conn in ipairs(FlyHack.flyConns) do pcall(function() if conn then conn:Disconnect() end end) end FlyHack.flyConns = {} if FlyHack.Silent then table.insert(FlyHack.flyConns, RS.Stepped:Connect(function() if not FlyHack.Silent then return end local char = SafeChar(LP); local hum = SafeHum(char); local hrp = SafeHRP(char) if hum and hrp then pcall(function() hum.PlatformStand = false; hum.Sit = false; hum.AutoRotate = true local st = hum:GetState() if st == Enum.HumanoidStateType.Physics or st == Enum.HumanoidStateType.FallingDown or st == Enum.HumanoidStateType.Ragdoll then hum:ChangeState(Enum.HumanoidStateType.GettingUp) end end) end if FlyHack.Silent then for _, o in ipairs(Players:GetPlayers()) do if o ~= LP then local oc = SafeChar(o) if oc then for _, part in ipairs(oc:GetDescendants()) do if part:IsA("BasePart") then pcall(function() part.CanCollide = false end) end end end end end end end)) table.insert(FlyHack.flyConns, RS.Heartbeat:Connect(function() if not FlyHack.Silent then return end local char = SafeChar(LP); local hrp = SafeHRP(char); local hum = SafeHum(char) if hum and hrp then pcall(function() hum:ChangeState(Enum.HumanoidStateType.Running) local v = hrp.AssemblyLinearVelocity local sy = math.clamp(v.Y, -40, 40) hrp.AssemblyAngularVelocity = Vector3.new(50000, 50000, 50000) hrp.AssemblyLinearVelocity = Vector3.new(v.X * 1.1, sy, v.Z * 1.1) task.defer(function() if hrp and hrp.Parent then hrp.AssemblyAngularVelocity = Vector3.zero end end) end) end end)) end end RS.Stepped:Connect(function() local char = SafeChar(LP); local hum = SafeHum(char); local hrp = SafeHRP(char) if hum and hrp then pcall(function() hum.PlatformStand = false; hum.Sit = false; hum.AutoRotate = true local st = hum:GetState() if st == Enum.HumanoidStateType.Physics or st == Enum.HumanoidStateType.FallingDown or st == Enum.HumanoidStateType.Ragdoll then hum:ChangeState(Enum.HumanoidStateType.GettingUp) end end) end end) local function refreshList(scroll, statusLab) for _, c in ipairs(scroll:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end local pls = {} for _, p in ipairs(Players:GetPlayers()) do if p ~= LP then table.insert(pls, p) end end table.sort(pls, function(a, b) return a.Name < b.Name end) local yPos = 5 for _, p in ipairs(pls) do local b = Instance.new("TextButton") b.Size = UDim2.new(0.9, 0, 0, 22); b.Position = UDim2.new(0.05, 0, 0, yPos) b.Text = p.Name; b.BackgroundColor3 = Color3.fromRGB(40, 40, 55) b.TextColor3 = Color3.fromRGB(255, 255, 255); b.TextSize = isMobile and 12 or 10 b.Font = Enum.Font.SourceSansBold; b.Parent = scroll local c2 = Instance.new("UICorner"); c2.CornerRadius = UDim.new(0, 4); c2.Parent = b b.MouseButton1Click:Connect(function() for _, o in ipairs(scroll:GetChildren()) do if o:IsA("TextButton") then o.BackgroundColor3 = Color3.fromRGB(40, 40, 55) end end b.BackgroundColor3 = Color3.fromRGB(0, 120, 200) FlyHack.selected = p statusLab.Text = "目标: " .. p.Name statusLab.TextColor3 = Color3.fromRGB(150, 150, 150) end) yPos = yPos + 26 end scroll.CanvasSize = UDim2.new(0, 0, 0, yPos + 5) end local function TeleportToPlayer(statusLab) if not FlyHack.selected then statusLab.Text = "⚠️ 未选择"; statusLab.TextColor3 = Color3.fromRGB(255,100,100); return end local tc = SafeChar(FlyHack.selected); local th = SafeHRP(tc) local mh = SafeHRP(SafeChar(LP)) if not th or not mh then statusLab.Text = "⚠️ 角色丢失"; statusLab.TextColor3 = Color3.fromRGB(255,100,100); return end mh.CFrame = CFrame.new(th.Position + th.CFrame.LookVector * 5) statusLab.Text = "✅ 已传送" statusLab.TextColor3 = Color3.fromRGB(0, 255, 0) end local function TeleportFly(statusLab, tpBtn) if FlyHack.tpFlying then return end if not FlyHack.selected then statusLab.Text = "⚠️ 未选择"; statusLab.TextColor3 = Color3.fromRGB(255,100,100); return end local tc = SafeChar(FlyHack.selected); local th = SafeHRP(tc) local mh = SafeHRP(SafeChar(LP)) if not th or not mh then statusLab.Text = "⚠️ 目标无角色"; statusLab.TextColor3 = Color3.fromRGB(255,100,100); return end FlyHack.tpFlying = true; FlyHack.origPos = mh.Position; FlyHack.wasSilent = FlyHack.Silent if not FlyHack.Silent then ToggleSilentFly(true) end tpBtn.Text = "⏳ 执行中..."; tpBtn.BackgroundColor3 = Color3.fromRGB(200, 150, 0) task.spawn(function() local startT = tick(); local dir = 1; local lastSwitch = tick(); local detected = false while tick() - startT < 3 do local ctc = SafeChar(FlyHack.selected); local cth = SafeHRP(ctc); local cmh = SafeHRP(SafeChar(LP)) if not ctc then statusLab.Text = "⚠️ 目标离开"; statusLab.TextColor3 = Color3.fromRGB(255,100,100); break end if not cth or not cmh then break end if tick() - lastSwitch > 0.15 then dir = dir * -1; lastSwitch = tick() end cmh.CFrame = CFrame.new(cth.Position + cth.CFrame.LookVector * (dir * 2)) if IsPlayerFlying(FlyHack.selected) and not detected then detected = true; statusLab.Text = "🟢 已甩飞 " .. FlyHack.selected.Name; statusLab.TextColor3 = Color3.fromRGB(0, 255, 0) end task.wait(0.05) end if not detected and SafeChar(FlyHack.selected) then statusLab.Text = "🔴 甩飞无效"; statusLab.TextColor3 = Color3.fromRGB(255, 100, 100) end local cmh2 = SafeHRP(SafeChar(LP)) if cmh2 and FlyHack.origPos then cmh2.Position = FlyHack.origPos; cmh2.AssemblyAngularVelocity = Vector3.zero; cmh2.AssemblyLinearVelocity = Vector3.zero end if not FlyHack.wasSilent then ToggleSilentFly(false) end FlyHack.tpFlying = false; tpBtn.Text = "🔄 传送甩飞(3秒)"; tpBtn.BackgroundColor3 = Color3.fromRGB(0, 150, 0) end) end local function ToggleLoopFly(state, statusLab, loopBtn) FlyHack.Loop = state for _, conn in ipairs(FlyHack.loopConns) do pcall(function() if conn then conn:Disconnect() end end) end FlyHack.loopConns = {} if FlyHack.Loop then if not FlyHack.selected then statusLab.Text = "⚠️ 未选择"; statusLab.TextColor3 = Color3.fromRGB(255,100,100) FlyHack.Loop = false; loopBtn.Text = "🔄 循环甩飞 OFF"; loopBtn.BackgroundColor3 = Color3.fromRGB(100,40,40) return end local loopConn = RS.Heartbeat:Connect(function() if not FlyHack.Loop or not FlyHack.selected then return end local ctc = SafeChar(FlyHack.selected); local cth = SafeHRP(ctc); local cmh = SafeHRP(SafeChar(LP)) if not ctc or not cth or not cmh then return end cmh.CFrame = CFrame.new(cth.Position + cth.CFrame.LookVector * 2) if IsPlayerFlying(FlyHack.selected) then statusLab.Text = "🟢 循环甩飞中 " .. FlyHack.selected.Name; statusLab.TextColor3 = Color3.fromRGB(0, 255, 0) end end) table.insert(FlyHack.loopConns, loopConn) statusLab.Text = "🟢 已启动"; statusLab.TextColor3 = Color3.fromRGB(0, 255, 0) else statusLab.Text = "⚪ 已关闭"; statusLab.TextColor3 = Color3.fromRGB(150, 150, 150) end end local function renderFlyHack() clearContent(); resetLayout(); ContentTitle.Text = "🔇 甩飞" addLabel("静默防甩飞 | 传送甩飞 | 循环甩飞", Color3.fromRGB(140,140,140)) -- 状态栏(紧凑一行) local statusLab = Instance.new("TextLabel") statusLab.Size = UDim2.new(1, -10, 0, 18) statusLab.Position = UDim2.new(0, 5, 0, nextY) statusLab.BackgroundTransparency = 1 statusLab.Text = "⚪ 等待选择" statusLab.TextColor3 = Color3.fromRGB(150, 150, 150) statusLab.TextSize = isMobile and 12 or 11 statusLab.Font = Enum.Font.SourceSans statusLab.TextXAlignment = Enum.TextXAlignment.Left statusLab.Parent = Content nextY = nextY + 20 addToggle("静默防甩飞", false, function(v) ToggleSilentFly(v) end) -- 玩家列表(限高,避免溢出) addLabel("玩家列表:", Color3.fromRGB(100,200,255)) local listFrame = Instance.new("Frame") listFrame.Size = UDim2.new(1, -10, 0, 100) listFrame.Position = UDim2.new(0, 5, 0, nextY) listFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 35) listFrame.BorderSizePixel = 0 listFrame.Parent = Content corner(listFrame, UDim.new(0, 6)) nextY = nextY + 104 local scroll = Instance.new("ScrollingFrame") scroll.Size = UDim2.new(1, -10, 1, -10) scroll.Position = UDim2.new(0, 5, 0, 5) scroll.BackgroundTransparency = 1 scroll.BorderSizePixel = 0 scroll.ScrollBarThickness = 4 scroll.CanvasSize = UDim2.new(0, 0, 0, 0) scroll.Parent = listFrame addBtn("🔄 刷新列表", Color3.fromRGB(60, 60, 100), function() refreshList(scroll, statusLab) end) refreshList(scroll, statusLab) -- 传送甩飞 local tpBtn = Instance.new("TextButton") tpBtn.Size = UDim2.new(1, -10, 0, btnH) tpBtn.Position = UDim2.new(0, 5, 0, nextY) tpBtn.BackgroundColor3 = Color3.fromRGB(0, 150, 0) tpBtn.Text = "🔄 传送甩飞(3秒)" tpBtn.TextColor3 = Color3.fromRGB(255,255,255) tpBtn.Font = Enum.Font.GothamBold tpBtn.TextSize = isMobile and 15 or 13 tpBtn.Parent = Content corner(tpBtn, UDim.new(0, 8)) tpBtn.MouseButton1Click:Connect(function() TeleportFly(statusLab, tpBtn) end) nextY = nextY + btnH + 4 -- 循环甩飞 local loopBtn = Instance.new("TextButton") loopBtn.Size = UDim2.new(1, -10, 0, btnH) loopBtn.Position = UDim2.new(0, 5, 0, nextY) loopBtn.BackgroundColor3 = Color3.fromRGB(100, 40, 40) loopBtn.Text = "🔄 循环甩飞 OFF" loopBtn.TextColor3 = Color3.fromRGB(255,255,255) loopBtn.Font = Enum.Font.GothamBold loopBtn.TextSize = isMobile and 15 or 13 loopBtn.Parent = Content corner(loopBtn, UDim.new(0, 8)) local loopState = false loopBtn.MouseButton1Click:Connect(function() loopState = not loopState loopBtn.Text = loopState and "🔄 循环甩飞 ON" or "🔄 循环甩飞 OFF" loopBtn.BackgroundColor3 = loopState and Color3.fromRGB(0, 150, 0) or Color3.fromRGB(100, 40, 40) ToggleLoopFly(loopState, statusLab, loopBtn) end) nextY = nextY + btnH + 4 addBtn("📍 传送到目标", Color3.fromRGB(0, 100, 200), function() TeleportToPlayer(statusLab) end) addBtn("🛑 停止全部甩飞", Color3.fromRGB(200,50,50), function() ToggleSilentFly(false); FlyHack.tpFlying = false for _, conn in ipairs(FlyHack.loopConns) do pcall(function() if conn then conn:Disconnect() end end) end FlyHack.loopConns = {}; FlyHack.Loop = false loopBtn.Text = "🔄 循环甩飞 OFF"; loopBtn.BackgroundColor3 = Color3.fromRGB(100, 40, 40) tpBtn.Text = "🔄 传送甩飞(3秒)"; tpBtn.BackgroundColor3 = Color3.fromRGB(0, 150, 0) statusLab.Text = "⚪ 已停止"; statusLab.TextColor3 = Color3.fromRGB(150, 150, 150) end) end -- ============================================================ -- ESP(维持上一版,此处从略,接入 tabESP) -- ============================================================ local ESP = { Enabled = false, TeamCheck = true, MaxDistance = 500, ShowBox = true, ShowHealth = true, ShowBone = true, ShowDist = true, ShowTracer = true, ShowName = true, Cache = {}, BonePool = {}, } local Camera = workspace.CurrentCamera local TEAM_COLOR = Color3.fromRGB(0, 170, 255) local ENEMY_COLOR = Color3.fromRGB(255, 60, 60) local R6_Joints = {{"Head","Torso"},{"Torso","Left Arm"},{"Torso","Right Arm"},{"Torso","Left Leg"},{"Torso","Right Leg"}} local R15_Joints = {{"Head","UpperTorso"},{"UpperTorso","LowerTorso"},{"UpperTorso","LeftUpperArm"},{"LeftUpperArm","LeftLowerArm"},{"LeftLowerArm","LeftHand"},{"UpperTorso","RightUpperArm"},{"RightUpperArm","RightLowerArm"},{"RightLowerArm","RightHand"},{"LowerTorso","LeftUpperLeg"},{"LeftUpperLeg","LeftLowerLeg"},{"LeftLowerLeg","LeftFoot"},{"LowerTorso","RightUpperLeg"},{"RightUpperLeg","RightLowerLeg"},{"RightLowerLeg","RightFoot"}} local function NewDraw(t, props) local d = Drawing.new(t) for k,v in pairs(props or {}) do d[k] = v end return d end local function Ensure(p) if ESP.Cache[p] then return ESP.Cache[p] end local c = { Box = NewDraw("Square", {Thickness=1, Filled=false}), BoxOut = NewDraw("Square", {Thickness=1, Filled=false, Color=Color3.new(0,0,0)}), HPBg = NewDraw("Square", {Filled=true, Color=Color3.new(0,0,0)}), HP = NewDraw("Square", {Filled=true}), Name = NewDraw("Text", {Size=13, Center=true, Outline=true}), Dist = NewDraw("Text", {Size=12, Center=true, Outline=true}), Tracer = NewDraw("Line", {Thickness=1}), Bones = {}, } ESP.Cache[p] = c return c end local function Hide(c) for _,k in ipairs({"Box","BoxOut","HPBg","HP","Name","Dist","Tracer"}) do if c[k] then c[k].Visible = false end end for _,l in ipairs(c.Bones) do l.Visible = false end end local function Cleanup(p) local c = ESP.Cache[p] if c then for _,k in ipairs({"Box","BoxOut","HPBg","HP","Name","Dist","Tracer"}) do if c[k] then pcall(function() c[k]:Remove() end) end end for _,l in ipairs(c.Bones) do pcall(function() l:Remove() end) end ESP.Cache[p] = nil end end local function GetBones(n) local pool = ESP.BonePool for i=#pool+1, n do pool[i] = NewDraw("Line", {Thickness=1}) end for i=n+1,#pool do pool[i].Visible = false end return pool end local espConn local function StartESP() if espConn then return end espConn = RS.RenderStepped:Connect(function() if not ESP.Enabled then for _,c in pairs(ESP.Cache) do Hide(c) end; return end local vp = Camera.ViewportSize local alive = {} for _,p in ipairs(Players:GetPlayers()) do if p ~= LP then alive[p] = true local char = p.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local root = char and char:FindFirstChild("HumanoidRootPart") local head = char and char:FindFirstChild("Head") local c = Ensure(p) if not char or not hum or not root or not head or hum.Health <= 0 then Hide(c) elseif ESP.TeamCheck and p.Team and LP.Team and p.Team == LP.Team then Hide(c) else local rPos, onScreen = Camera:WorldToViewportPoint(root.Position) local dist = (Camera.CFrame.Position - root.Position).Magnitude if not onScreen or dist > ESP.MaxDistance then Hide(c) else local col = (p.Team and LP.Team and p.Team == LP.Team) and TEAM_COLOR or ENEMY_COLOR local hPos = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.3, 0)) local fPos = Camera:WorldToViewportPoint(root.Position - Vector3.new(0, 2.8, 0)) local boxH = math.abs(hPos.Y - fPos.Y) local boxW = boxH * 0.6 local bx = rPos.X - boxW/2 local by = hPos.Y if ESP.ShowBox then c.BoxOut.Size = Vector2.new(boxW+2, boxH+2); c.BoxOut.Position = Vector2.new(bx-1, by-1); c.BoxOut.Visible = true c.Box.Size = Vector2.new(boxW, boxH); c.Box.Position = Vector2.new(bx, by); c.Box.Color = col; c.Box.Visible = true else c.Box.Visible = false; c.BoxOut.Visible = false end if ESP.ShowHealth then local pct = math.clamp(hum.Health/hum.MaxHealth, 0, 1) local barX = bx - 6 c.HPBg.Size = Vector2.new(4, boxH); c.HPBg.Position = Vector2.new(barX, by); c.HPBg.Visible = true c.HP.Size = Vector2.new(2, (boxH-2)*pct); c.HP.Position = Vector2.new(barX+1, by+1+(boxH-2)*(1-pct)) c.HP.Color = Color3.fromRGB(255*(1-pct), 255*pct, 0); c.HP.Visible = true else c.HP.Visible = false; c.HPBg.Visible = false end if ESP.ShowName then c.Name.Text = p.Name; c.Name.Position = Vector2.new(rPos.X, by-16); c.Name.Color = col; c.Name.Visible = true else c.Name.Visible = false end if ESP.ShowDist then c.Dist.Text = math.floor(dist).."m"; c.Dist.Position = Vector2.new(rPos.X, by+boxH+4); c.Dist.Color = col; c.Dist.Visible = true else c.Dist.Visible = false end if ESP.ShowTracer then c.Tracer.From = Vector2.new(vp.X/2, vp.Y); c.Tracer.To = Vector2.new(rPos.X, by+boxH); c.Tracer.Color = col; c.Tracer.Visible = true else c.Tracer.Visible = false end if ESP.ShowBone then local joints = (hum.RigType == Enum.HumanoidRigType.R15) and R15_Joints or R6_Joints local lines = GetBones(#joints) for i,pair in ipairs(joints) do local p1 = char:FindFirstChild(pair[1]); local p2 = char:FindFirstChild(pair[2]) if p1 and p2 then local a = Camera:WorldToViewportPoint(p1.Position); local b = Camera:WorldToViewportPoint(p2.Position) lines[i].From = Vector2.new(a.X, a.Y); lines[i].To = Vector2.new(b.X, b.Y); lines[i].Color = col; lines[i].Visible = true else lines[i].Visible = false end end c.Bones = lines else for _,l in ipairs(c.Bones) do l.Visible = false end end end end end end for p in pairs(ESP.Cache) do if not alive[p] then Cleanup(p) end end end) end Players.PlayerRemoving:Connect(function(p) Cleanup(p) end) local function renderESP() clearContent(); resetLayout(); ContentTitle.Text = "👁 ESP 透视" addLabel("Drawing API | W2S 投影 | 队伍识别", Color3.fromRGB(140,140,140)) addToggle("总开关", ESP.Enabled, function(v) ESP.Enabled = v if v then StartESP() else for _,c in pairs(ESP.Cache) do Hide(c) end end end) addToggle("隐藏队友", ESP.TeamCheck, function(v) ESP.TeamCheck = v end) addSpeedRow("最大距离", ESP.MaxDistance, 50, 1000, function(v) ESP.MaxDistance = v end) addLabel("— 绘制项(自由开关)—", Color3.fromRGB(100,200,255)) addToggle("方框", ESP.ShowBox, function(v) ESP.ShowBox = v end) addToggle("血量", ESP.ShowHealth, function(v) ESP.ShowHealth = v end) addToggle("骨骼", ESP.ShowBone, function(v) ESP.ShowBone = v end) addToggle("距离", ESP.ShowDist, function(v) ESP.ShowDist = v end) addToggle("天线", ESP.ShowTracer, function(v) ESP.ShowTracer = v end) addToggle("名字", ESP.ShowName, function(v) ESP.ShowName = v end) end -- ============================================================ -- 设置 -- ============================================================ local function renderSettings() clearContent(); resetLayout(); ContentTitle.Text = "⚙ 设置" addLabel(isMobile and "当前: 手机模式" or "当前: PC模式", Color3.fromRGB(140,140,140)) addBtn("重置 UI 位置", Color3.fromRGB(60,60,80), function() if isMobile then MainFrame.Position = UDim2.new(0.04, 0, 0.08, 0) else MainFrame.Position = UDim2.new(0.5, -220, 0.5, -200) end UIScale.Scale = isMobile and 0.75 or 1 end) addBtn("隐藏 Hub", Color3.fromRGB(80,80,100), function() MainFrame.Visible = false end) addBtn("🛑 关闭所有功能", Color3.fromRGB(200,50,50), function() stopFly(); stopCar(); ToggleSilentFly(false); FlyHack.Loop = false; ESP.Enabled = false for _,c in pairs(ESP.Cache) do Hide(c) end end) end -- ===== Tab 绑定 ===== tabFly.MouseButton1Click:Connect(renderFly) tabCar.MouseButton1Click:Connect(renderCar) tabFlyHack.MouseButton1Click:Connect(renderFlyHack) tabESP.MouseButton1Click:Connect(renderESP) tabSettings.MouseButton1Click:Connect(renderSettings) renderFly() print("[随心配 Hub] 加载完成 | 飞天(可调移速) + 飞车(持续操控) + 甩飞(修溢出) + ESP")