-- Force cleanup of any existing instance
local function forceCleanup()
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local ContextActionService = game:GetService("ContextActionService")
-- Destroy existing GUI
if LocalPlayer.PlayerGui:FindFirstChild("PMCCHub") then
LocalPlayer.PlayerGui.PMCCHub:Destroy()
end
-- Clean up global connections
if _G.PMCCHub_JoinConn then
_G.PMCCHub_JoinConn:Disconnect()
_G.PMCCHub_JoinConn = nil
end
if _G.PMCCHub_LeaveConn then
_G.PMCCHub_LeaveConn:Disconnect()
_G.PMCCHub_LeaveConn = nil
end
if _G.PMCCHub_ESPConn then
_G.PMCCHub_ESPConn:Disconnect()
_G.PMCCHub_ESPConn = nil
end
if _G.PMCCHub_PlatformConn then
_G.PMCCHub_PlatformConn:Disconnect()
_G.PMCCHub_PlatformConn = nil
end
-- Clean up physics and connections
if _G.PMCCHub_BodyVelocity then
_G.PMCCHub_BodyVelocity:Destroy()
_G.PMCCHub_BodyVelocity = nil
end
if _G.PMCCHub_BodyGyro then
_G.PMCCHub_BodyGyro:Destroy()
_G.PMCCHub_BodyGyro = nil
end
if _G.PMCCHub_NoclipConnection then
_G.PMCCHub_NoclipConnection:Disconnect()
_G.PMCCHub_NoclipConnection = nil
end
if _G.PMCCHub_InfiniteJumpConnection then
_G.PMCCHub_InfiniteJumpConnection:Disconnect()
_G.PMCCHub_InfiniteJumpConnection = nil
end
if _G.PMCCHub_InputConnections then
for _, conn in pairs(_G.PMCCHub_InputConnections) do
conn:Disconnect()
end
_G.PMCCHub_InputConnections = nil
end
if _G.PMCCHub_PlatformInputConnections then
for _, conn in pairs(_G.PMCCHub_PlatformInputConnections) do
conn:Disconnect()
end
_G.PMCCHub_PlatformInputConnections = nil
end
if _G.PMCCHub_PlatformPart then
_G.PMCCHub_PlatformPart:Destroy()
_G.PMCCHub_PlatformPart = nil
end
-- Clean up ESP objects
if _G.PMCCHub_ESPObjects then
for _, obj in pairs(_G.PMCCHub_ESPObjects) do
if obj.Highlight then obj.Highlight:Destroy() end
if obj.BillboardGui then obj.BillboardGui:Destroy() end
end
_G.PMCCHub_ESPObjects = nil
end
-- Unbind ContextActionService actions
ContextActionService:UnbindAction("FlyAction")
ContextActionService:UnbindAction("PlatformAction")
ContextActionService:UnbindAction("CameraAction")
-- Reset character collision
local character = LocalPlayer.Character
if character then
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
end
end
end
end
-- Execute cleanup for any previous instance
forceCleanup()
-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local StarterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")
local ContextActionService = game:GetService("ContextActionService")
local LocalPlayer = Players.LocalPlayer
local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:FindFirstChild("HumanoidRootPart")
-- GUI
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "PMCCHub"
ScreenGui.Parent = LocalPlayer.PlayerGui
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.ResetOnSpawn = false
-- Main Frame
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 250, 0, 300)
MainFrame.Position = UDim2.new(0.35, 0, 0.25, 0)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui
Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 12)
-- Scrolling container for buttons
local ButtonContainer = Instance.new("ScrollingFrame")
ButtonContainer.Size = UDim2.new(1, -10, 1, -100)
ButtonContainer.Position = UDim2.new(0, 5, 0, 70)
ButtonContainer.BackgroundTransparency = 1
ButtonContainer.BorderSizePixel = 0
ButtonContainer.ScrollBarThickness = 6
ButtonContainer.CanvasSize = UDim2.new(0, 0, 0, 0)
ButtonContainer.Parent = MainFrame
-- Title
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -60, 0, 30)
Title.Position = UDim2.new(0, 10, 0, 5)
Title.BackgroundTransparency = 1
Title.Text = "PMC.C Hub"
Title.TextColor3 = Color3.fromRGB(0, 200, 255)
Title.Font = Enum.Font.GothamBold
Title.TextSize = 18
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = MainFrame
-- Status Label
local platformDetected = if UserInputService.KeyboardEnabled then "PC" elseif UserInputService.TouchEnabled then "Mobile" elseif UserInputService.GamepadEnabled then "Console" else "Unknown"
local StatusLabel = Instance.new("TextLabel")
StatusLabel.Size = UDim2.new(1, -20, 0, 25)
StatusLabel.Position = UDim2.new(0, 10, 0, 40)
StatusLabel.BackgroundTransparency = 1
StatusLabel.Text = "Platform: " .. platformDetected
StatusLabel.TextColor3 = Color3.fromRGB(0, 200, 255)
StatusLabel.Font = Enum.Font.GothamBold
StatusLabel.TextSize = 14
StatusLabel.TextXAlignment = Enum.TextXAlignment.Left
StatusLabel.Parent = MainFrame
-- Version Label (Grok AI)
local VersionLabel = Instance.new("TextLabel")
VersionLabel.Size = UDim2.new(0, 80, 0, 20)
VersionLabel.Position = UDim2.new(1, -90, 1, -30)
VersionLabel.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
VersionLabel.Text = "Grok AI"
VersionLabel.TextColor3 = Color3.fromRGB(0, 200, 255)
VersionLabel.Font = Enum.Font.GothamBold
VersionLabel.TextSize = 12
VersionLabel.TextXAlignment = Enum.TextXAlignment.Right
VersionLabel.Parent = MainFrame
Instance.new("UICorner", VersionLabel).CornerRadius = UDim.new(0, 6)
-- Close (X)
local CloseButton = Instance.new("TextButton")
CloseButton.Size = UDim2.new(0, 30, 0, 30)
CloseButton.Position = UDim2.new(1, -30, 0, 0)
CloseButton.BackgroundTransparency = 1
CloseButton.Text = "X"
CloseButton.TextColor3 = Color3.fromRGB(255, 0, 0)
CloseButton.Font = Enum.Font.GothamBold
CloseButton.TextSize = 20
CloseButton.Parent = MainFrame
-- Minimize (➖)
local MinimizeButton = Instance.new("TextButton")
MinimizeButton.Size = UDim2.new(0, 30, 0, 30)
MinimizeButton.Position = UDim2.new(1, -60, 0, 0)
MinimizeButton.BackgroundTransparency = 1
MinimizeButton.Text = "-"
MinimizeButton.TextColor3 = Color3.fromRGB(255, 255, 0)
MinimizeButton.Font = Enum.Font.GothamBold
MinimizeButton.TextSize = 22
MinimizeButton.Parent = MainFrame
-- Circle (minimized state)
local CircleButton = Instance.new("TextButton")
CircleButton.Size = UDim2.new(0, 60, 0, 60)
CircleButton.Position = UDim2.new(0.05, 0, 0.6, 0)
CircleButton.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
CircleButton.Text = "PMC"
CircleButton.TextColor3 = Color3.fromRGB(0, 200, 255)
CircleButton.Font = Enum.Font.GothamBold
CircleButton.TextSize = 18
CircleButton.Visible = false
CircleButton.Active = true
CircleButton.Draggable = true
CircleButton.Parent = ScreenGui
Instance.new("UICorner", CircleButton).CornerRadius = UDim.new(1, 0)
-- Minimize / Restore
MinimizeButton.MouseButton1Click:Connect(function()
MainFrame.Visible = false
CircleButton.Visible = true
end)
CircleButton.MouseButton1Click:Connect(function()
MainFrame.Visible = true
CircleButton.Visible = false
end)
-- Confirmation popup
local ConfirmFrame = Instance.new("Frame")
ConfirmFrame.Size = UDim2.new(0, 200, 0, 120)
ConfirmFrame.Position = UDim2.new(0.5, -100, 0.5, -60)
ConfirmFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
ConfirmFrame.Visible = false
ConfirmFrame.ZIndex = 10
ConfirmFrame.Parent = ScreenGui
ConfirmFrame.Active = true
ConfirmFrame.Draggable = true
Instance.new("UICorner", ConfirmFrame).CornerRadius = UDim.new(0, 10)
local ConfirmText = Instance.new("TextLabel")
ConfirmText.Size = UDim2.new(1, -20, 0, 50)
ConfirmText.Position = UDim2.new(0, 10, 0, 10)
ConfirmText.BackgroundTransparency = 1
ConfirmText.Text = "Want to Destroy this GUI?"
ConfirmText.TextColor3 = Color3.fromRGB(255, 255, 255)
ConfirmText.Font = Enum.Font.GothamBold
ConfirmText.TextSize = 16
ConfirmText.ZIndex = 11
ConfirmText.Parent = ConfirmFrame
-- Yes / No
local YesButton = Instance.new("TextButton")
YesButton.Size = UDim2.new(0.4, 0, 0, 30)
YesButton.Position = UDim2.new(0.05, 0, 0.65, 0)
YesButton.BackgroundColor3 = Color3.fromRGB(0, 200, 0)
YesButton.Text = "Yes"
YesButton.TextColor3 = Color3.fromRGB(255, 255, 255)
YesButton.Font = Enum.Font.GothamBold
YesButton.TextSize = 16
YesButton.ZIndex = 11
YesButton.Parent = ConfirmFrame
Instance.new("UICorner", YesButton).CornerRadius = UDim.new(0, 8)
local NoButton = Instance.new("TextButton")
NoButton.Size = UDim2.new(0.4, 0, 0, 30)
NoButton.Position = UDim2.new(0.55, 0, 0.65, 0)
NoButton.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
NoButton.Text = "No"
NoButton.TextColor3 = Color3.fromRGB(255, 255, 255)
NoButton.Font = Enum.Font.GothamBold
NoButton.TextSize = 16
NoButton.ZIndex = 11
NoButton.Parent = ConfirmFrame
Instance.new("UICorner", NoButton).CornerRadius = UDim.new(0, 8)
-- Fly, Noclip, Infinite Jump, ESP, and Platform variables
local FlyEnabled, NoclipEnabled, InfiniteJumpEnabled, ESPEnabled, PlatformEnabled = false, false, false, false, false
local FlySpeed = 50
local PlatformSpeed = 10 -- studs per second for smooth platform movement
local BodyVelocity, BodyGyro, NoclipConnection, InfiniteJumpConnection, ESPConnection, PlatformConnection, PlatformPart
local moveForward, moveBackward, moveLeft, moveRight, moveUp, moveDown = false, false, false, false, false, false
local platformUp, platformDown = false, false
local MobileControls = nil
_G.PMCCHub_InputConnections = _G.PMCCHub_InputConnections or {}
_G.PMCCHub_PlatformInputConnections = _G.PMCCHub_PlatformInputConnections or {}
_G.PMCCHub_ESPObjects = _G.PMCCHub_ESPObjects or {}
-- Mobile controls GUI (with UpP and DownP for Platform, conditional on Fly)
local isMobile = UserInputService.TouchEnabled
if isMobile then
MobileControls = Instance.new("Frame")
MobileControls.Size = UDim2.new(0.5, 0, 0.5, 0)
MobileControls.Position = UDim2.new(0, 0, 0.5, 0)
MobileControls.BackgroundTransparency = 1
MobileControls.Visible = false
MobileControls.Parent = ScreenGui
local UpPButton, DownPButton
local function updateMobileControls()
if FlyEnabled then
if UpPButton then UpPButton.Visible = false end
if DownPButton then DownPButton.Visible = false end
elseif PlatformEnabled then
if not UpPButton then
UpPButton = Instance.new("TextButton")
UpPButton.Size = UDim2.new(0.15, 0, 0.15, 0)
UpPButton.Position = UDim2.new(0, 0, 0.15, 0)
UpPButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
UpPButton.Text = "UpP"
UpPButton.TextColor3 = Color3.fromRGB(255, 255, 255)
UpPButton.Font = Enum.Font.GothamBold
UpPButton.TextSize = 20
Instance.new("UICorner", UpPButton).CornerRadius = UDim.new(0, 8)
UpPButton.Parent = MobileControls
UpPButton.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
platformUp = true
end
end)
UpPButton.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
platformUp = false
end
end)
end
if not DownPButton then
DownPButton = Instance.new("TextButton")
DownPButton.Size = UDim2.new(0.15, 0, 0.15, 0)
DownPButton.Position = UDim2.new(0, 0, 0.35, 0)
DownPButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
DownPButton.Text = "DownP"
DownPButton.TextColor3 = Color3.fromRGB(255, 255, 255)
DownPButton.Font = Enum.Font.GothamBold
DownPButton.TextSize = 20
Instance.new("UICorner", DownPButton).CornerRadius = UDim.new(0, 8)
DownPButton.Parent = MobileControls
DownPButton.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
platformDown = true
end
end)
DownPButton.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
platformDown = false
end
end)
end
UpPButton.Visible = true
DownPButton.Visible = true
else
if UpPButton then UpPButton.Visible = false end
if DownPButton then DownPButton.Visible = false end
end
end
RunService.RenderStepped:Connect(updateMobileControls)
end
-- Input connections for PC, Console, and Controller (Fly and Camera)
local function setupInputListeners()
table.insert(_G.PMCCHub_InputConnections, UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if input.KeyCode == Enum.KeyCode.W then moveForward = true
elseif input.KeyCode == Enum.KeyCode.S then moveBackward = true
elseif input.KeyCode == Enum.KeyCode.A then moveLeft = true
elseif input.KeyCode == Enum.KeyCode.D then moveRight = true
elseif input.KeyCode == Enum.KeyCode.Space then moveUp = true
elseif input.KeyCode == Enum.KeyCode.LeftShift then moveDown = true
end
end))
table.insert(_G.PMCCHub_InputConnections, UserInputService.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.W then moveForward = false
elseif input.KeyCode == Enum.KeyCode.S then moveBackward = false
elseif input.KeyCode == Enum.KeyCode.A then moveLeft = false
elseif input.KeyCode == Enum.KeyCode.D then moveRight = false
elseif input.KeyCode == Enum.KeyCode.Space then moveUp = false
elseif input.KeyCode == Enum.KeyCode.LeftShift then moveDown = false
end
end))
table.insert(_G.PMCCHub_InputConnections, RunService.RenderStepped:Connect(function()
local gamepadState = UserInputService:GetGamepadState(Enum.UserInputType.Gamepad1)
for _, input in pairs(gamepadState) do
if input.KeyCode == Enum.KeyCode.Thumbstick1 then
local horiz = input.Position.X
local vert = -input.Position.Y
moveForward = vert > 0.2
moveBackward = vert < -0.2
moveLeft = horiz < -0.2
moveRight = horiz > 0.2
moveUp = vert > 0.5 and math.abs(horiz) < 0.2 -- Up when centered vertically
moveDown = vert < -0.5 and math.abs(horiz) < 0.2 -- Down when centered vertically
end
end
end))
end
setupInputListeners()
-- Cleanup function
local function cleanup()
FlyEnabled = false
NoclipEnabled = false
InfiniteJumpEnabled = false
ESPEnabled = false
PlatformEnabled = false
if BodyVelocity then
BodyVelocity:Destroy()
BodyVelocity = nil
_G.PMCCHub_BodyVelocity = nil
end
if BodyGyro then
BodyGyro:Destroy()
BodyGyro = nil
_G.PMCCHub_BodyGyro = nil
end
if NoclipConnection then
NoclipConnection:Disconnect()
NoclipConnection = nil
_G.PMCCHub_NoclipConnection = nil
end
if InfiniteJumpConnection then
InfiniteJumpConnection:Disconnect()
InfiniteJumpConnection = nil
_G.PMCCHub_InfiniteJumpConnection = nil
end
if ESPConnection then
ESPConnection:Disconnect()
ESPConnection = nil
_G.PMCCHub_ESPConn = nil
end
if PlatformConnection then
PlatformConnection:Disconnect()
PlatformConnection = nil
_G.PMCCHub_PlatformConn = nil
end
if PlatformPart then
PlatformPart:Destroy()
PlatformPart = nil
_G.PMCCHub_PlatformPart = nil
end
for _, conn in pairs(_G.PMCCHub_InputConnections or {}) do
conn:Disconnect()
end
for _, conn in pairs(_G.PMCCHub_PlatformInputConnections or {}) do
conn:Disconnect()
end
_G.PMCCHub_InputConnections = {}
_G.PMCCHub_PlatformInputConnections = {}
if MobileControls then
MobileControls.Visible = false
end
if character then
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
end
end
end
if _G.PMCCHub_JoinConn then
_G.PMCCHub_JoinConn:Disconnect()
_G.PMCCHub_JoinConn = nil
end
if _G.PMCCHub_LeaveConn then
_G.PMCCHub_LeaveConn:Disconnect()
_G.PMCCHub_LeaveConn = nil
end
-- Clean up ESP objects
for _, obj in pairs(_G.PMCCHub_ESPObjects) do
if obj.Highlight then obj.Highlight:Destroy() end
if obj.BillboardGui then obj.BillboardGui:Destroy() end
end
_G.PMCCHub_ESPObjects = {}
end
-- Handle character respawn
LocalPlayer.CharacterAdded:Connect(function(newChar)
character = newChar
humanoid = newChar:WaitForChild("Humanoid")
rootPart = newChar:WaitForChild("HumanoidRootPart")
cleanup() -- Reset features on respawn
end)
-- Close button logic
CloseButton.MouseButton1Click:Connect(function()
ConfirmFrame.Visible = true
end)
YesButton.MouseButton1Click:Connect(function()
cleanup()
ScreenGui:Destroy()
end)
NoButton.MouseButton1Click:Connect(function()
ConfirmFrame.Visible = false
end)
-- Function to create buttons
local buttonY, buttonCount = 0, 0
local function CreateButton(text, callback)
local Button = Instance.new("TextButton")
Button.Size = UDim2.new(1, -20, 0, 40)
Button.Position = UDim2.new(0, 10, 0, buttonY)
Button.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
Button.Text = text
Button.TextColor3 = Color3.fromRGB(255, 255, 255)
Button.Font = Enum.Font.GothamBold
Button.TextSize = 16
Button.Parent = ButtonContainer
Instance.new("UICorner", Button).CornerRadius = UDim.new(0, 8)
Button.MouseButton1Click:Connect(callback)
buttonY += 50
buttonCount += 1
ButtonContainer.CanvasSize = UDim2.new(0, 0, 0, buttonCount * 50)
end
-- Fly function (using left stick for movement, right stick for camera)
local function toggleFly()
FlyEnabled = not FlyEnabled
if not FlyEnabled then
if BodyVelocity then
BodyVelocity:Destroy()
BodyVelocity = nil
_G.PMCCHub_BodyVelocity = nil
end
if BodyGyro then
BodyGyro:Destroy()
BodyGyro = nil
_G.PMCCHub_BodyGyro = nil
end
if isMobile then
ContextActionService:UnbindAction("FlyAction")
ContextActionService:UnbindAction("CameraAction")
MobileControls.Visible = PlatformEnabled
end
elseif character and rootPart then
BodyVelocity = Instance.new("BodyVelocity")
BodyVelocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
BodyVelocity.Velocity = Vector3.new(0, 0, 0)
BodyVelocity.Parent = rootPart
_G.PMCCHub_BodyVelocity = BodyVelocity
BodyGyro = Instance.new("BodyGyro")
BodyGyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
BodyGyro.CFrame = rootPart.CFrame
BodyGyro.Parent = rootPart
_G.PMCCHub_BodyGyro = BodyGyro
if isMobile or UserInputService.GamepadEnabled then
-- Left stick for movement
ContextActionService:BindAction("FlyAction", function(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin or inputState == Enum.UserInputState.Change then
local moveVector = inputObject.Position
if inputObject.KeyCode == Enum.KeyCode.Thumbstick1 then
moveForward = moveVector.Y < -0.2
moveBackward = moveVector.Y > 0.2
moveLeft = moveVector.X < -0.2
moveRight = moveVector.X > 0.2
moveUp = moveVector.Y > 0.5 and math.abs(moveVector.X) < 0.2
moveDown = moveVector.Y < -0.5 and math.abs(moveVector.X) < 0.2
end
elseif inputState == Enum.UserInputState.End then
moveForward = false
moveBackward = false
moveLeft = false
moveRight = false
moveUp = false
moveDown = false
end
return Enum.ContextActionResult.Sink
end, false, Enum.KeyCode.Thumbstick1)
-- Right stick for camera (normal Roblox view)
ContextActionService:BindAction("CameraAction", function(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin or inputState == Enum.UserInputState.Change then
if inputObject.KeyCode == Enum.KeyCode.Thumbstick2 then
local camera = workspace.CurrentCamera
local rotation = Vector2.new(inputObject.Position.X, -inputObject.Position.Y)
if rotation.Magnitude > 0.1 then
local sensitivity = 0.1
local newCFrame = camera.CFrame * CFrame.Angles(0, rotation.X * sensitivity, 0) * CFrame.Angles(rotation.Y * sensitivity, 0, 0)
camera.CFrame = newCFrame
end
end
end
return Enum.ContextActionResult.Sink
end, false, Enum.KeyCode.Thumbstick2)
MobileControls.Visible = true
end
end
end
-- Noclip function
local function toggleNoclip()
NoclipEnabled = not NoclipEnabled
if not NoclipEnabled then
if NoclipConnection then
NoclipConnection:Disconnect()
NoclipConnection = nil
_G.PMCCHub_NoclipConnection = nil
end
if character then
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
end
end
end
else
NoclipConnection = RunService.Stepped:Connect(function()
if character and NoclipEnabled then
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
end)
_G.PMCCHub_NoclipConnection = NoclipConnection
end
end
-- Infinite Jump function
local function toggleInfiniteJump()
InfiniteJumpEnabled = not InfiniteJumpEnabled
if not InfiniteJumpEnabled then
if InfiniteJumpConnection then
InfiniteJumpConnection:Disconnect()
InfiniteJumpConnection = nil
_G.PMCCHub_InfiniteJumpConnection = nil
end
else
InfiniteJumpConnection = UserInputService.JumpRequest:Connect(function()
if InfiniteJumpEnabled and character and humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end)
_G.PMCCHub_InfiniteJumpConnection = InfiniteJumpConnection
end
end
-- ESP function (only distance, no name)
local function toggleESP()
ESPEnabled = not ESPEnabled
if not ESPEnabled then
if ESPConnection then
ESPConnection:Disconnect()
ESPConnection = nil
_G.PMCCHub_ESPConn = nil
end
for _, obj in pairs(_G.PMCCHub_ESPObjects) do
if obj.Highlight then obj.Highlight:Destroy() end
if obj.BillboardGui then obj.BillboardGui:Destroy() end
end
_G.PMCCHub_ESPObjects = {}
else
local function addESP(player)
if player == LocalPlayer then return end
local function setupESP(char)
if not char then return end
local head = char:FindFirstChild("Head")
if not head then return end
local highlight = Instance.new("Highlight")
highlight.Adornee = head
highlight.FillColor = Color3.fromRGB(255, 255, 255)
highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = head
local billboard = Instance.new("BillboardGui")
billboard.Adornee = head
billboard.Size = UDim2.new(0, 100, 0, 25)
billboard.StudsOffset = Vector3.new(0, 2, 0)
billboard.AlwaysOnTop = true
billboard.Parent = head
local distanceLabel = Instance.new("TextLabel")
distanceLabel.Size = UDim2.new(1, 0, 1, 0)
distanceLabel.Position = UDim2.new(0, 0, 0, 0)
distanceLabel.BackgroundTransparency = 1
distanceLabel.Text = "0 studs"
distanceLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
distanceLabel.TextStrokeTransparency = 0
distanceLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
distanceLabel.Font = Enum.Font.GothamBold
distanceLabel.TextSize = 14
distanceLabel.TextScaled = false
distanceLabel.Parent = billboard
_G.PMCCHub_ESPObjects[player] = {Highlight = highlight, BillboardGui = billboard, DistanceLabel = distanceLabel}
end
if player.Character then
setupESP(player.Character)
end
player.CharacterAdded:Connect(setupESP)
end
for _, player in pairs(Players:GetPlayers()) do
addESP(player)
end
_G.PMCCHub_ESPConn = Players.PlayerAdded:Connect(function(player)
if ESPEnabled then
addESP(player)
end
end)
Players.PlayerRemoving:Connect(function(player)
if _G.PMCCHub_ESPObjects[player] then
local obj = _G.PMCCHub_ESPObjects[player]
if obj.Highlight then obj.Highlight:Destroy() end
if obj.BillboardGui then obj.BillboardGui:Destroy() end
_G.PMCCHub_ESPObjects[player] = nil
end
end)
ESPConnection = RunService.RenderStepped:Connect(function()
if not ESPEnabled then return end
local localRoot = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if not localRoot then return end
for player, obj in pairs(_G.PMCCHub_ESPObjects) do
local playerRoot = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if playerRoot and obj.DistanceLabel then
local distance = (localRoot.Position - playerRoot.Position).Magnitude
obj.DistanceLabel.Text = string.format("%.1f studs", distance)
end
end
end)
end
end
-- Platform function
local function togglePlatform()
PlatformEnabled = not PlatformEnabled
if not PlatformEnabled then
if PlatformConnection then
PlatformConnection:Disconnect()
PlatformConnection = nil
_G.PMCCHub_PlatformConn = nil
end
if PlatformPart then
PlatformPart:Destroy()
PlatformPart = nil
_G.PMCCHub_PlatformPart = nil
end
for _, conn in pairs(_G.PMCCHub_PlatformInputConnections) do
conn:Disconnect()
end
_G.PMCCHub_PlatformInputConnections = {}
platformUp = false
platformDown = false
if MobileControls then
MobileControls.Visible = FlyEnabled
end
elseif character and rootPart then
PlatformPart = Instance.new("Part")
PlatformPart.Size = Vector3.new(6, 0.5, 6)
PlatformPart.Position = rootPart.Position - Vector3.new(0, 3, 0)
PlatformPart.Anchored = true
PlatformPart.CanCollide = true
PlatformPart.BrickColor = BrickColor.new("Institutional white")
PlatformPart.Parent = workspace
_G.PMCCHub_PlatformPart = PlatformPart
PlatformConnection = RunService.RenderStepped:Connect(function(deltaTime)
if PlatformEnabled and character and rootPart and PlatformPart then
PlatformPart.Position = Vector3.new(rootPart.Position.X, PlatformPart.Position.Y, rootPart.Position.Z)
if platformUp then
PlatformPart.Position = PlatformPart.Position + Vector3.new(0, PlatformSpeed * deltaTime, 0)
elseif platformDown then
PlatformPart.Position = PlatformPart.Position - Vector3.new(0, PlatformSpeed * deltaTime, 0)
end
end
end)
_G.PMCCHub_PlatformConn = PlatformConnection
if UserInputService.KeyboardEnabled then
table.insert(_G.PMCCHub_PlatformInputConnections, UserInputService.InputBegan:Connect(function(input, processed)
if processed or not PlatformEnabled then return end
if input.KeyCode == Enum.KeyCode.E then
platformUp = true
elseif input.KeyCode == Enum.KeyCode.Q then
platformDown = true
end
end))
table.insert(_G.PMCCHub_PlatformInputConnections, UserInputService.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.E then
platformUp = false
elseif input.KeyCode == Enum.KeyCode.Q then
platformDown = false
end
end))
end
if MobileControls then
MobileControls.Visible = true
end
end
end
-- Buttons
CreateButton("Fly", toggleFly)
CreateButton("Noclip", toggleNoclip)
CreateButton("Infinite Jump", toggleInfiniteJump)
CreateButton("ESP", toggleESP)
CreateButton("Platform", togglePlatform)
-- PC-only buttons
if UserInputService.KeyboardEnabled and UserInputService.MouseEnabled then
CreateButton("Superman", function()
loadstring(game:HttpGet("https://raw.githubusercontent.com/Bac0nHck/Scripts/main/superman_fly.lua", true))()
end)
end
CreateButton("Infinite Yield", function()
loadstring(game:HttpGet("https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source"))()
end)
CreateButton("c00lgui", function()
loadstring(game:HttpGet("https://raw.githubusercontent.com/cfsmi2/c00lguiv1/refs/heads/main/Main.lua", true))()
end)
-- Game-specific
if game.PlaceId == 4924922222 then -- Brookhaven
CreateButton("Sander XY", function()
loadstring(game:HttpGet("https://raw.githubusercontent.com/kigredns/testUIDK/refs/heads/main/panel.lua"))()
end)
elseif game.PlaceId == 189707 then -- NDS
CreateButton("Nullfire", function()
loadstring(game:HttpGet("https://raw.githubusercontent.com/InfernusScripts/Null-Fire/main/Loader"))()
end)
elseif game.PlaceId == 126884695634066 or game.PlaceId == 6961824067 or game.PlaceId == 7845249823 then -- Grow a Garden
CreateButton("Grow a Garden Auto Farm", function()
loadstring(game:HttpGet("https://zaphub.xyz/Exec"))()
end)
elseif game.PlaceId == 79546208627805 then -- 99 Nights in the Forest
CreateButton("99 Nights Auto Farm", function()
loadstring([[
if not game:IsLoaded() then return end
local CheatEngineMode = false
if (not getgenv) or (getgenv and type(getgenv) ~= "function") then CheatEngineMode = true end
if getgenv and not getgenv().shared then CheatEngineMode = true; getgenv().shared = {} end
if getgenv and not getgenv().debug then CheatEngineMode = true; getgenv().debug = {traceback = function(string) return string end} end
if getgenv and not getgenv().require then CheatEngineMode = true end
if getgenv and getgenv().require and type(getgenv().require) ~= "function" then CheatEngineMode = true end
local debugChecks = { Type = "table", Functions = { "getupvalue", "getupvalues", "getconstants", "getproto" } }
local function checkExecutor()
if identifyexecutor ~= nil and type(identifyexecutor) == "function" then
local suc, res = pcall(function() return identifyexecutor() end)
local blacklist = {'cryptic', 'xeno', 'ember', 'ronix'}
local core_blacklist = {'xeno'}
if suc then
for i, v in pairs(blacklist) do
if string.find(string.lower(tostring(res)), v) then CheatEngineMode = true end
end
for i, v in pairs(core_blacklist) do
if string.find(string.lower(tostring(res)), v) then
pcall(function() getgenv().queue_on_teleport = function() warn('queue_on_teleport disabled!') end end)
end
end
if string.find(string.lower(tostring(res)), "delta") then
getgenv().isnetworkowner = function() return true end
end
end
end
end
task.spawn(function() pcall(checkExecutor) end)
local function checkDebug()
if CheatEngineMode then return end
if not getgenv().debug then
CheatEngineMode = true
else
if type(debug) ~= debugChecks.Type then
CheatEngineMode = true
else
for i, v in pairs(debugChecks.Functions) do
if not debug[v] or (debug[v] and type(debug[v]) ~= "function") then
CheatEngineMode = true
else
local suc, res = pcall(debug[v])
if tostring(res) == "Not Implemented" then CheatEngineMode = true end
end
end
end
end
end
shared.CheatEngineMode = shared.CheatEngineMode or CheatEngineMode
if game.PlaceId == 79546208627805 then
pcall(function()
game:GetService("StarterGui"):SetCore("SendNotification", {
Title = "Voidware | 99 Nights In The Forest",
Text = "Go In Game for Voidware to load :D [You are in lobby currently]",
Duration = 10
})
end)
return
end
task.spawn(function()
pcall(function()
local Services = setmetatable({}, {
__index = function(self, key)
local suc, service = pcall(game.GetService, game, key)
if suc and service then
self[key] = service
return service
else
warn("[Services] Warning: \"" .. key .. "\" is not a valid Roblox service.")
return nil
end
end
})
local Players = Services.Players
local TextChatService = Services.TextChatService
local ChatService = Services.ChatService
repeat task.wait() until game:IsLoaded() and Players.LocalPlayer ~= nil
local chatVersion = TextChatService and TextChatService.ChatVersion or Enum.ChatVersion.LegacyChatService
local TagRegister = shared.TagRegister or {}
if not shared.CheatEngineMode then
if chatVersion == Enum.ChatVersion.TextChatService then
TextChatService.OnIncomingMessage = function(data)
TagRegister = shared.TagRegister or {}
local properties = Instance.new("TextChatMessageProperties", game:GetService("Workspace"))
local TextSource = data.TextSource
local PrefixText = data.PrefixText or ""
if TextSource then
local plr = Players:GetPlayerByUserId(TextSource.UserId)
if plr then
local prefix = ""
if TagRegister[plr] then prefix = prefix .. TagRegister[plr] end
if plr:GetAttribute("__OwnsVIPGamepass") and plr:GetAttribute("VIPChatTag") ~= false then
prefix = prefix .. "[VIP] "
end
local currentLevel = plr:GetAttribute("_CurrentLevel")
if currentLevel then
prefix = prefix .. string.format("[%s] ", tostring(currentLevel))
end
local playerTagValue = plr:FindFirstChild("PlayerTagValue")
if playerTagValue and playerTagValue.Value then
prefix = prefix .. string.format("[#%s] ", tostring(playerTagValue.Value))
end
prefix = prefix .. PrefixText
properties.PrefixText = string.format("%s", prefix)
end
end
return properties
end
elseif chatVersion == Enum.ChatVersion.LegacyChatService then
ChatService:RegisterProcessCommandsFunction("CustomPrefix", function(speakerName, message)
TagRegister = shared.TagRegister or {}
local plr = Players:FindFirstChild(speakerName)
if plr then
local prefix = ""
if TagRegister[plr] then prefix = prefix .. TagRegister[plr] end
if plr:GetAttribute("__OwnsVIPGamepass") and plr:GetAttribute("VIPChatTag") ~= false then
prefix = prefix .. "[VIP] "
end
local currentLevel = plr:GetAttribute("_CurrentLevel")
if currentLevel then
prefix = prefix .. string.format("[%s] ", tostring(currentLevel))
end
local playerTagValue = plr:FindFirstChild("PlayerTagValue")
if playerTagValue and playerTagValue.Value then
prefix = prefix .. string.format("[#%s] ", tostring(playerTagValue.Value))
end
prefix = prefix .. speakerName
return prefix .. " " .. message
end
return message
end)
end
end
end)
end)
local commit = shared.CustomCommit and tostring(shared.CustomCommit) or shared.StagingMode and "staging" or "7b3fad2b46336a55beca73caa205fb49dac41165"
loadstring(game:HttpGet("https://raw.githubusercontent.com/VapeVoidware/VW-Add/" .. tostring(commit) .. "/newnightsintheforest.lua", true))()
]])()
end)
end
-- Player Join/Leave Notifications
_G.PMCCHub_JoinConn = Players.PlayerAdded:Connect(function(plr)
StarterGui:SetCore("SendNotification", {Title="✅ Player Joined", Text=plr.Name.." joined", Duration=2})
end)
_G.PMCCHub_LeaveConn = Players.PlayerRemoving:Connect(function(plr)
StarterGui:SetCore("SendNotification", {Title="❌ Player Left", Text=plr.Name.." left", Duration=2})
end)
-- Fly, Noclip, ESP, and Platform loop
RunService.RenderStepped:Connect(function()
if character and rootPart and FlyEnabled then
local move = Vector3.new(0, 0, 0)
local camera = workspace.CurrentCamera
if moveForward then move = move + camera.CFrame.LookVector end
if moveBackward then move = move - camera.CFrame.LookVector end
if moveLeft then move = move - camera.CFrame.RightVector end
if moveRight then move = move + camera.CFrame.RightVector end
if moveUp then move = move + Vector3.new(0, 1, 0) end
if moveDown then move = move - Vector3.new(0, 1, 0) end
if move.Magnitude > 0 then move = move.Unit * FlySpeed end
BodyVelocity.Velocity = move
BodyGyro.CFrame = camera.CFrame
end
end)