Back to Scripts
ANTICHEAT BYP*ER

ANTICHEAT BYP*ER

ScriptBlox
Free

Game: Tower of Hell

1,243 Views
3 Likes
0 Dislikes
ultisyrox9

ultisyrox9

offline

Features

New Features Added: โœ… Resizable GUI Drag the bottom-right corner (โคก) to resize the window Minimum size: 300x300 pixels Smooth resizing with mouse โœ… Close Button (โœ•) Red close button in top-right corner Click to hide the GUI GUI remains in memory, just hidden โœ… Vertical Speed Slider (Fixed) Horizontal slider for fly speed control Range: 10-100 speed units Smooth dragging without GUI movement Real-time speed updates โœ… Settings Tab Customizable Fly Keybind (default: F) Customizable GUI Toggle Keybind (default: RightShift) Stop Animations on Fly toggle (default: ON) Real-time keybind display โœ… Animation Control "Stop Animations on Fly" toggle in Settings ON: Animations stop while flying OFF: Animations continue while flying Smooth character appearance control โœ… Keybind System Click "Change" button to rebind keys Press any key to set new keybind Yellow text shows "Waiting..." while binding Automatic keybind validation โœ… English UI Entire interface in English All comments removed Clean code structure Professional appearance โœ… Improved Player Display Shows Display Names instead of Usernames Works in both Troll and Spectate tabs Better user identification โœ… ESP System Red box adorns around players 0.3 transparency ON/OFF toggle in Misc tab Updates every frame โœ… Spectate System Watch other players in real-time Camera follows spectated player Selectable from player list Stop button to exit โœ… 6 Organized Tabs Main: Fly, Noclip, Rejoin, Speed Troll: Player list with Loop TP Waypoint: Save/Load locations Misc: ESP and Spectate Settings: Keybinds and Animation control Credits: Developer info โœ… Pathfinding System Automatic obstacle avoidance Tests 4 alternative directions Raycast-based collision detection Smooth target following โœ… Waypoint Management Save current location Display coordinates Click waypoint to teleport ScrollingFrame for multiple waypoints โœ… Drag & Drop GUI Main frame is draggable by title bar Dragging disabled while using slider Smooth movement โœ… Dynamic Player List Auto-refreshes when players join/leave Scroll support for many players UIListLayout for clean organization CanvasSize auto-adjustment

Tags

tower of hell tower of hell

Script Code

local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TeleportService = game:GetService("TeleportService")

local player = Players.LocalPlayer
local flying = false
local noclip = false
local speed = 35
local targetPos = nil
local targetPlayer = nil
local loopTP = false
local spectating = false
local spectatePlayer = nil
local espEnabled = false
local stopAnimOnFly = true

local lastStuckPos = nil
local stuckTimer = 0
local espBoxes = {}

game:GetService("Chat"):Chat(player.Character.Head, "Script made by Arouwa", Enum.ChatColor.Blue)

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ExploitGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")

local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 400, 0, 500)
mainFrame.Position = UDim2.new(0.5, -200, 0.5, -250)
mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui

local resizeHandle = Instance.new("Frame")
resizeHandle.Name = "ResizeHandle"
resizeHandle.Size = UDim2.new(0, 15, 0, 15)
resizeHandle.Position = UDim2.new(1, -15, 1, -15)
resizeHandle.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
resizeHandle.BorderSizePixel = 0
resizeHandle.Parent = mainFrame

local resizeIcon = Instance.new("TextLabel")
resizeIcon.Size = UDim2.new(1, 0, 1, 0)
resizeIcon.BackgroundTransparency = 1
resizeIcon.TextColor3 = Color3.fromRGB(150, 150, 150)
resizeIcon.TextScaled = true
resizeIcon.Text = "โคก"
resizeIcon.Parent = resizeHandle

local resizing = false
local startSize = mainFrame.Size
local startPos = resizeHandle.AbsolutePosition

local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -40, 0, 40)
titleLabel.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
titleLabel.TextColor3 = Color3.new(1, 1, 1)
titleLabel.TextScaled = true
titleLabel.Text = "EXPLOIT SCRIPT"
titleLabel.BorderSizePixel = 0
titleLabel.Parent = mainFrame

local closeBtn = Instance.new("TextButton")
closeBtn.Name = "CloseBtn"
closeBtn.Size = UDim2.new(0, 40, 0, 40)
closeBtn.Position = UDim2.new(1, -40, 0, 0)
closeBtn.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
closeBtn.TextColor3 = Color3.new(1, 1, 1)
closeBtn.TextScaled = true
closeBtn.Text = "โœ•"
closeBtn.BorderSizePixel = 0
closeBtn.Parent = mainFrame

closeBtn.MouseButton1Click:Connect(function()
	mainFrame.Visible = false
end)

local tabButtons = Instance.new("Frame")
tabButtons.Name = "TabButtons"
tabButtons.Size = UDim2.new(1, 0, 0, 40)
tabButtons.Position = UDim2.new(0, 0, 0, 40)
tabButtons.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
tabButtons.BorderSizePixel = 0
tabButtons.Parent = mainFrame

local mainBtn = Instance.new("TextButton")
mainBtn.Name = "MainBtn"
mainBtn.Size = UDim2.new(0.2, -1, 1, 0)
mainBtn.Position = UDim2.new(0, 0, 0, 0)
mainBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
mainBtn.TextColor3 = Color3.new(1, 1, 1)
mainBtn.TextScaled = true
mainBtn.Text = "Main"
mainBtn.BorderSizePixel = 0
mainBtn.Parent = tabButtons

local trollBtn = Instance.new("TextButton")
trollBtn.Name = "TrollBtn"
trollBtn.Size = UDim2.new(0.2, -1, 1, 0)
trollBtn.Position = UDim2.new(0.2, 1, 0, 0)
trollBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
trollBtn.TextColor3 = Color3.new(1, 1, 1)
trollBtn.TextScaled = true
trollBtn.Text = "Troll"
trollBtn.BorderSizePixel = 0
trollBtn.Parent = tabButtons

local waypointBtn = Instance.new("TextButton")
waypointBtn.Name = "WaypointBtn"
waypointBtn.Size = UDim2.new(0.2, -1, 1, 0)
waypointBtn.Position = UDim2.new(0.4, 2, 0, 0)
waypointBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
waypointBtn.TextColor3 = Color3.new(1, 1, 1)
waypointBtn.TextScaled = true
waypointBtn.Text = "Waypoint"
waypointBtn.BorderSizePixel = 0
waypointBtn.Parent = tabButtons

local miscBtn = Instance.new("TextButton")
miscBtn.Name = "MiscBtn"
miscBtn.Size = UDim2.new(0.15, -1, 1, 0)
miscBtn.Position = UDim2.new(0.6, 3, 0, 0)
miscBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
miscBtn.TextColor3 = Color3.new(1, 1, 1)
miscBtn.TextScaled = true
miscBtn.Text = "Misc"
miscBtn.BorderSizePixel = 0
miscBtn.Parent = tabButtons

local settingsBtn = Instance.new("TextButton")
settingsBtn.Name = "SettingsBtn"
settingsBtn.Size = UDim2.new(0.15, -1, 1, 0)
settingsBtn.Position = UDim2.new(0.75, 4, 0, 0)
settingsBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
settingsBtn.TextColor3 = Color3.new(1, 1, 1)
settingsBtn.TextScaled = true
settingsBtn.Text = "Settings"
settingsBtn.BorderSizePixel = 0
settingsBtn.Parent = tabButtons

local creditsBtn = Instance.new("TextButton")
creditsBtn.Name = "CreditsBtn"
creditsBtn.Size = UDim2.new(0.1, -1, 1, 0)
creditsBtn.Position = UDim2.new(0.9, 5, 0, 0)
creditsBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
creditsBtn.TextColor3 = Color3.new(1, 1, 1)
creditsBtn.TextScaled = true
creditsBtn.Text = "Credits"
creditsBtn.BorderSizePixel = 0
creditsBtn.Parent = tabButtons

local pageContainer = Instance.new("Frame")
pageContainer.Name = "PageContainer"
pageContainer.Size = UDim2.new(1, 0, 1, -80)
pageContainer.Position = UDim2.new(0, 0, 0, 80)
pageContainer.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
pageContainer.BorderSizePixel = 0
pageContainer.Parent = mainFrame

local mainPage = Instance.new("Frame")
mainPage.Name = "MainPage"
mainPage.Size = UDim2.new(1, 0, 1, 0)
mainPage.BackgroundTransparency = 1
mainPage.Parent = pageContainer

local flyLabel = Instance.new("TextLabel")
flyLabel.Size = UDim2.new(1, -20, 0, 30)
flyLabel.Position = UDim2.new(0, 10, 0, 10)
flyLabel.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
flyLabel.TextColor3 = Color3.new(1, 1, 1)
flyLabel.TextScaled = true
flyLabel.Text = "FLY: OFF"
flyLabel.BorderSizePixel = 0
flyLabel.Parent = mainPage

local flyToggle = Instance.new("TextButton")
flyToggle.Size = UDim2.new(0, 80, 0, 30)
flyToggle.Position = UDim2.new(1, -100, 0, 10)
flyToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
flyToggle.TextColor3 = Color3.new(1, 1, 1)
flyToggle.TextScaled = true
flyToggle.Text = "OFF"
flyToggle.BorderSizePixel = 0
flyToggle.Parent = mainPage

local noclipLabel = Instance.new("TextLabel")
noclipLabel.Size = UDim2.new(1, -20, 0, 30)
noclipLabel.Position = UDim2.new(0, 10, 0, 50)
noclipLabel.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
noclipLabel.TextColor3 = Color3.new(1, 1, 1)
noclipLabel.TextScaled = true
noclipLabel.Text = "NOCLIP: OFF"
noclipLabel.BorderSizePixel = 0
noclipLabel.Parent = mainPage

local noclipToggle = Instance.new("TextButton")
noclipToggle.Size = UDim2.new(0, 80, 0, 30)
noclipToggle.Position = UDim2.new(1, -100, 0, 50)
noclipToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
noclipToggle.TextColor3 = Color3.new(1, 1, 1)
noclipToggle.TextScaled = true
noclipToggle.Text = "OFF"
noclipToggle.BorderSizePixel = 0
noclipToggle.Parent = mainPage

local rejoinBtn = Instance.new("TextButton")
rejoinBtn.Size = UDim2.new(1, -20, 0, 30)
rejoinBtn.Position = UDim2.new(0, 10, 0, 90)
rejoinBtn.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
rejoinBtn.TextColor3 = Color3.new(1, 1, 1)
rejoinBtn.TextScaled = true
rejoinBtn.Text = "REJOIN"
rejoinBtn.BorderSizePixel = 0
rejoinBtn.Parent = mainPage

local stopBtn = Instance.new("TextButton")
stopBtn.Size = UDim2.new(1, -20, 0, 30)
stopBtn.Position = UDim2.new(0, 10, 0, 130)
stopBtn.BackgroundColor3 = Color3.fromRGB(170, 170, 0)
stopBtn.TextColor3 = Color3.new(0, 0, 0)
stopBtn.TextScaled = true
stopBtn.Text = "STOP GOING"
stopBtn.BorderSizePixel = 0
stopBtn.Parent = mainPage

local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(1, -20, 0, 20)
speedLabel.Position = UDim2.new(0, 10, 0, 170)
speedLabel.BackgroundTransparency = 1
speedLabel.TextColor3 = Color3.new(1, 1, 1)
speedLabel.TextScaled = true
speedLabel.Text = "Speed: 35"
speedLabel.BorderSizePixel = 0
speedLabel.Parent = mainPage

local speedBar = Instance.new("Frame")
speedBar.Size = UDim2.new(1, -20, 0, 10)
speedBar.Position = UDim2.new(0, 10, 0, 195)
speedBar.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
speedBar.BorderSizePixel = 0
speedBar.Parent = mainPage

local speedFill = Instance.new("Frame")
speedFill.Size = UDim2.new(0.3, 0, 1, 0)
speedFill.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
speedFill.BorderSizePixel = 0
speedFill.Parent = speedBar

local speedKnob = Instance.new("Frame")
speedKnob.Size = UDim2.new(0, 14, 0, 18)
speedKnob.Position = UDim2.new(0.3, -7, -0.4, 0)
speedKnob.BackgroundColor3 = Color3.new(1, 1, 1)
speedKnob.BorderSizePixel = 0
speedKnob.AnchorPoint = Vector2.new(0.5, 0.5)
speedKnob.Parent = speedBar

local draggingSpeed = false

local trollPage = Instance.new("Frame")
trollPage.Name = "TrollPage"
trollPage.Size = UDim2.new(1, 0, 1, 0)
trollPage.BackgroundTransparency = 1
trollPage.Visible = false
trollPage.Parent = pageContainer

local playerListFrame = Instance.new("ScrollingFrame")
playerListFrame.Size = UDim2.new(1, -20, 1, -60)
playerListFrame.Position = UDim2.new(0, 10, 0, 10)
playerListFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
playerListFrame.BorderSizePixel = 0
playerListFrame.ScrollBarThickness = 8
playerListFrame.CanvasSize = UDim2.new(1, 0, 0, 0)
playerListFrame.Parent = trollPage

local playerListScroll = Instance.new("UIListLayout")
playerListScroll.Parent = playerListFrame
playerListScroll.Padding = UDim.new(0, 5)

playerListScroll.ChildAdded:Connect(function()
	playerListFrame.CanvasSize = UDim2.new(0, 0, 0, playerListScroll.AbsoluteContentSize.Y)
end)

playerListScroll.ChildRemoved:Connect(function()
	playerListFrame.CanvasSize = UDim2.new(0, 0, 0, playerListScroll.AbsoluteContentSize.Y)
end)

local loopTPLabel = Instance.new("TextLabel")
loopTPLabel.Size = UDim2.new(1, -20, 0, 30)
loopTPLabel.Position = UDim2.new(0, 10, 1, -40)
loopTPLabel.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
loopTPLabel.TextColor3 = Color3.new(1, 1, 1)
loopTPLabel.TextScaled = true
loopTPLabel.Text = "LOOP TP: OFF"
loopTPLabel.BorderSizePixel = 0
loopTPLabel.Parent = trollPage

local loopTPToggle = Instance.new("TextButton")
loopTPToggle.Size = UDim2.new(0, 80, 0, 30)
loopTPToggle.Position = UDim2.new(1, -100, 1, -40)
loopTPToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
loopTPToggle.TextColor3 = Color3.new(1, 1, 1)
loopTPToggle.TextScaled = true
loopTPToggle.Text = "OFF"
loopTPToggle.BorderSizePixel = 0
loopTPToggle.Parent = trollPage

local waypointPage = Instance.new("Frame")
waypointPage.Name = "WaypointPage"
waypointPage.Size = UDim2.new(1, 0, 1, 0)
waypointPage.BackgroundTransparency = 1
waypointPage.Visible = false
waypointPage.Parent = pageContainer

local waypointListFrame = Instance.new("Frame")
waypointListFrame.Size = UDim2.new(1, -20, 1, -60)
waypointListFrame.Position = UDim2.new(0, 10, 0, 10)
waypointListFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
waypointListFrame.BorderSizePixel = 0
waypointListFrame.ClipsDescendants = true
waypointListFrame.Parent = waypointPage

local waypointLayout = Instance.new("UIListLayout")
waypointLayout.Padding = UDim.new(0, 5)
waypointLayout.Parent = waypointListFrame

local addWaypointBtn = Instance.new("TextButton")
addWaypointBtn.Size = UDim2.new(1, -20, 0, 40)
addWaypointBtn.Position = UDim2.new(0, 10, 1, -50)
addWaypointBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
addWaypointBtn.TextColor3 = Color3.new(1, 1, 1)
addWaypointBtn.TextScaled = true
addWaypointBtn.Text = "ADD LOCATION"
addWaypointBtn.BorderSizePixel = 0
addWaypointBtn.Parent = waypointPage

local miscPage = Instance.new("Frame")
miscPage.Name = "MiscPage"
miscPage.Size = UDim2.new(1, 0, 1, 0)
miscPage.BackgroundTransparency = 1
miscPage.Visible = false
miscPage.Parent = pageContainer

local espLabel = Instance.new("TextLabel")
espLabel.Size = UDim2.new(1, -20, 0, 30)
espLabel.Position = UDim2.new(0, 10, 0, 10)
espLabel.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
espLabel.TextColor3 = Color3.new(1, 1, 1)
espLabel.TextScaled = true
espLabel.Text = "ESP: OFF"
espLabel.BorderSizePixel = 0
espLabel.Parent = miscPage

local espToggle = Instance.new("TextButton")
espToggle.Size = UDim2.new(0, 80, 0, 30)
espToggle.Position = UDim2.new(1, -100, 0, 10)
espToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
espToggle.TextColor3 = Color3.new(1, 1, 1)
espToggle.TextScaled = true
espToggle.Text = "OFF"
espToggle.BorderSizePixel = 0
espToggle.Parent = miscPage

local spectateLabel = Instance.new("TextLabel")
spectateLabel.Size = UDim2.new(1, -20, 0, 30)
spectateLabel.Position = UDim2.new(0, 10, 0, 50)
spectateLabel.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
spectateLabel.TextColor3 = Color3.new(1, 1, 1)
spectateLabel.TextScaled = true
spectateLabel.Text = "SPECTATE: None"
spectateLabel.BorderSizePixel = 0
spectateLabel.Parent = miscPage

local spectateBtn = Instance.new("TextButton")
spectateBtn.Size = UDim2.new(1, -20, 0, 30)
spectateBtn.Position = UDim2.new(0, 10, 0, 90)
spectateBtn.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
spectateBtn.TextColor3 = Color3.new(1, 1, 1)
spectateBtn.TextScaled = true
spectateBtn.Text = "STOP SPECTATING"
spectateBtn.BorderSizePixel = 0
spectateBtn.Parent = miscPage

local spectateListFrame = Instance.new("Frame")
spectateListFrame.Size = UDim2.new(1, -20, 1, -160)
spectateListFrame.Position = UDim2.new(0, 10, 0, 130)
spectateListFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
spectateListFrame.BorderSizePixel = 0
spectateListFrame.ClipsDescendants = true
spectateListFrame.Parent = miscPage

local spectateLayout = Instance.new("UIListLayout")
spectateLayout.Padding = UDim.new(0, 5)
spectateLayout.Parent = spectateListFrame

local settingsPage = Instance.new("Frame")
settingsPage.Name = "SettingsPage"
settingsPage.Size = UDim2.new(1, 0, 1, 0)
settingsPage.BackgroundTransparency = 1
settingsPage.Visible = false
settingsPage.Parent = pageContainer

local flyKeyLabel = Instance.new("TextLabel")
flyKeyLabel.Size = UDim2.new(1, -20, 0, 25)
flyKeyLabel.Position = UDim2.new(0, 10, 0, 10)
flyKeyLabel.BackgroundTransparency = 1
flyKeyLabel.TextColor3 = Color3.new(1, 1, 1)
flyKeyLabel.TextScaled = true
flyKeyLabel.Text = "Fly Keybind:"
flyKeyLabel.BorderSizePixel = 0
flyKeyLabel.Parent = settingsPage

local flyKeyDisplay = Instance.new("TextLabel")
flyKeyDisplay.Size = UDim2.new(1, -20, 0, 30)
flyKeyDisplay.Position = UDim2.new(0, 10, 0, 35)
flyKeyDisplay.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
flyKeyDisplay.TextColor3 = Color3.new(1, 1, 1)
flyKeyDisplay.TextScaled = true
flyKeyDisplay.Text = "F"
flyKeyDisplay.BorderSizePixel = 0
flyKeyDisplay.Parent = settingsPage

local flyKeyBtn = Instance.new("TextButton")
flyKeyBtn.Size = UDim2.new(1, -20, 0, 30)
flyKeyBtn.Position = UDim2.new(0, 10, 0, 70)
flyKeyBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
flyKeyBtn.TextColor3 = Color3.new(1, 1, 1)
flyKeyBtn.TextScaled = true
flyKeyBtn.Text = "Change"
flyKeyBtn.BorderSizePixel = 0
flyKeyBtn.Parent = settingsPage

local guiToggleKeyLabel = Instance.new("TextLabel")
guiToggleKeyLabel.Size = UDim2.new(1, -20, 0, 25)
guiToggleKeyLabel.Position = UDim2.new(0, 10, 0, 110)
guiToggleKeyLabel.BackgroundTransparency = 1
guiToggleKeyLabel.TextColor3 = Color3.new(1, 1, 1)
guiToggleKeyLabel.TextScaled = true
guiToggleKeyLabel.Text = "GUI Toggle Keybind:"
guiToggleKeyLabel.BorderSizePixel = 0
guiToggleKeyLabel.Parent = settingsPage

local guiToggleKeyDisplay = Instance.new("TextLabel")
guiToggleKeyDisplay.Size = UDim2.new(1, -20, 0, 30)
guiToggleKeyDisplay.Position = UDim2.new(0, 10, 0, 135)
guiToggleKeyDisplay.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
guiToggleKeyDisplay.TextColor3 = Color3.new(1, 1, 1)
guiToggleKeyDisplay.TextScaled = true
guiToggleKeyDisplay.Text = "RightShift"
guiToggleKeyDisplay.BorderSizePixel = 0
guiToggleKeyDisplay.Parent = settingsPage

local guiToggleKeyBtn = Instance.new("TextButton")
guiToggleKeyBtn.Size = UDim2.new(1, -20, 0, 30)
guiToggleKeyBtn.Position = UDim2.new(0, 10, 0, 170)
guiToggleKeyBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
guiToggleKeyBtn.TextColor3 = Color3.new(1, 1, 1)
guiToggleKeyBtn.TextScaled = true
guiToggleKeyBtn.Text = "Change"
guiToggleKeyBtn.BorderSizePixel = 0
guiToggleKeyBtn.Parent = settingsPage

local stopAnimLabel = Instance.new("TextLabel")
stopAnimLabel.Size = UDim2.new(1, -20, 0, 25)
stopAnimLabel.Position = UDim2.new(0, 10, 0, 210)
stopAnimLabel.BackgroundTransparency = 1
stopAnimLabel.TextColor3 = Color3.new(1, 1, 1)
stopAnimLabel.TextScaled = true
stopAnimLabel.Text = "Stop Animations on Fly:"
stopAnimLabel.BorderSizePixel = 0
stopAnimLabel.Parent = settingsPage

local stopAnimToggle = Instance.new("TextButton")
stopAnimToggle.Size = UDim2.new(0, 80, 0, 30)
stopAnimToggle.Position = UDim2.new(1, -100, 0, 210)
stopAnimToggle.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
stopAnimToggle.TextColor3 = Color3.new(1, 1, 1)
stopAnimToggle.TextScaled = true
stopAnimToggle.Text = "ON"
stopAnimToggle.BorderSizePixel = 0
stopAnimToggle.Parent = settingsPage

stopAnimToggle.MouseButton1Click:Connect(function()
	stopAnimOnFly = not stopAnimOnFly
	if stopAnimOnFly then
		stopAnimToggle.Text = "ON"
		stopAnimToggle.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
	else
		stopAnimToggle.Text = "OFF"
		stopAnimToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
	end
end)

local creditsPage = Instance.new("Frame")
creditsPage.Name = "CreditsPage"
creditsPage.Size = UDim2.new(1, 0, 1, 0)
creditsPage.BackgroundTransparency = 1
creditsPage.Visible = false
creditsPage.Parent = pageContainer

local creditLabel = Instance.new("TextLabel")
creditLabel.Size = UDim2.new(0.8, 0, 0.6, 0)
creditLabel.Position = UDim2.new(0.1, 0, 0.2, 0)
creditLabel.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
creditLabel.TextColor3 = Color3.new(1, 1, 1)
creditLabel.TextScaled = true
creditLabel.TextWrapped = true
creditLabel.Text = "Made by Arouwa\n\nRoblox: youtubeamahhh\n\nDiscord: discord.gg/Tqph6drF9c"
creditLabel.BorderSizePixel = 0
creditLabel.Parent = creditsPage

local function switchTab(page, button)
	mainPage.Visible = false
	trollPage.Visible = false
	waypointPage.Visible = false
	miscPage.Visible = false
	settingsPage.Visible = false
	creditsPage.Visible = false
	page.Visible = true
	
	mainBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
	trollBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
	waypointBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
	miscBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
	settingsBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
	creditsBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
	button.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
end

mainBtn.MouseButton1Click:Connect(function()
	switchTab(mainPage, mainBtn)
end)

trollBtn.MouseButton1Click:Connect(function()
	switchTab(trollPage, trollBtn)
end)

waypointBtn.MouseButton1Click:Connect(function()
	switchTab(waypointPage, waypointBtn)
end)

miscBtn.MouseButton1Click:Connect(function()
	switchTab(miscPage, miscBtn)
end)

settingsBtn.MouseButton1Click:Connect(function()
	switchTab(settingsPage, settingsBtn)
end)

creditsBtn.MouseButton1Click:Connect(function()
	switchTab(creditsPage, creditsBtn)
end)

local waypoints = {}
local waypointCount = 0

local function addWaypoint()
	local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
	if not hrp then return end
	
	waypointCount = waypointCount + 1
	waypoints[waypointCount] = hrp.Position
	local id = waypointCount
	
	local wpBtn = Instance.new("TextButton")
	wpBtn.Size = UDim2.new(1, -10, 0, 30)
	wpBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
	wpBtn.TextColor3 = Color3.new(1, 1, 1)
	wpBtn.TextScaled = true
	wpBtn.Text = "WP " .. id .. " - (" .. math.floor(hrp.Position.X) .. ", " .. math.floor(hrp.Position.Y) .. ", " .. math.floor(hrp.Position.Z) .. ")"
	wpBtn.BorderSizePixel = 0
	wpBtn.Parent = waypointListFrame
	
	wpBtn.MouseButton1Click:Connect(function()
		targetPos = waypoints[id]
		targetPlayer = nil
		flying = true
		lastStuckPos = nil
		stuckTimer = 0
	end)
end

addWaypointBtn.MouseButton1Click:Connect(addWaypoint)

local function createESP(plr)
	if plr == player or espBoxes[plr] then return end
	
	local box = Instance.new("BoxHandleAdornment")
	box.Name = "ESPBox"
	box.Adornee = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart")
	box.Size = Vector3.new(4, 6, 4)
	box.Color3 = Color3.fromRGB(255, 0, 0)
	box.Transparency = 0.3
	box.Parent = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") or nil
	
	espBoxes[plr] = box
end

local function removeESP(plr)
	if espBoxes[plr] then
		espBoxes[plr]:Destroy()
		espBoxes[plr] = nil
	end
end

local function updateESP()
	if not espEnabled then return end
	
	for _, plr in pairs(Players:GetPlayers()) do
		if plr ~= player and plr.Character then
			createESP(plr)
		end
	end
end

flyToggle.MouseButton1Click:Connect(function()
	flying = not flying
	if flying then
		flyLabel.Text = "FLY: ON"
		flyToggle.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
		flyToggle.Text = "ON"
		lastStuckPos = nil
		stuckTimer = 0
	else
		flyLabel.Text = "FLY: OFF"
		flyToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
		flyToggle.Text = "OFF"
	end
end)

noclipToggle.MouseButton1Click:Connect(function()
	noclip = not noclip
	if noclip then
		noclipLabel.Text = "NOCLIP: ON"
		noclipToggle.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
		noclipToggle.Text = "ON"
	else
		noclipLabel.Text = "NOCLIP: OFF"
		noclipToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
		noclipToggle.Text = "OFF"
	end
end)

rejoinBtn.MouseButton1Click:Connect(function()
	TeleportService:Teleport(game.PlaceId, player)
end)

stopBtn.MouseButton1Click:Connect(function()
	targetPos = nil
	targetPlayer = nil
	lastStuckPos = nil
	stuckTimer = 0
end)

loopTPToggle.MouseButton1Click:Connect(function()
	loopTP = not loopTP
	if loopTP then
		loopTPLabel.Text = "LOOP TP: ON"
		loopTPToggle.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
		loopTPToggle.Text = "ON"
	else
		loopTPLabel.Text = "LOOP TP: OFF"
		loopTPToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
		loopTPToggle.Text = "OFF"
	end
end)

espToggle.MouseButton1Click:Connect(function()
	espEnabled = not espEnabled
	if espEnabled then
		espLabel.Text = "ESP: ON"
		espToggle.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
		espToggle.Text = "ON"
		updateESP()
	else
		espLabel.Text = "ESP: OFF"
		espToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
		espToggle.Text = "OFF"
		for _, plr in pairs(Players:GetPlayers()) do
			removeESP(plr)
		end
	end
end)

spectateBtn.MouseButton1Click:Connect(function()
	spectating = false
	spectatePlayer = nil
	spectateLabel.Text = "SPECTATE: None"
	local cam = workspace.CurrentCamera
	cam.CFrame = player.Character and player.Character:FindFirstChild("HumanoidRootPart") and CFrame.new(player.Character.HumanoidRootPart.Position + Vector3.new(0, 5, 0)) or CFrame.new(0, 0, 0)
end)

speedKnob.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		draggingSpeed = true
		mainFrame.Draggable = false
	end
end)

UIS.InputEnded:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		draggingSpeed = false
		mainFrame.Draggable = true
	end
end)

UIS.InputChanged:Connect(function(input)
	if draggingSpeed and input.UserInputType == Enum.UserInputType.MouseMovement then
		local x = math.clamp((input.Position.X - speedBar.AbsolutePosition.X) / speedBar.AbsoluteSize.X, 0, 1)
		speedFill.Size = UDim2.new(x, 0, 1, 0)
		speedKnob.Position = UDim2.new(x, -7, -0.4, 0)
		speed = math.floor(10 + (100 - 10) * x)
		speedLabel.Text = "Speed: " .. speed
	end
end)

local function getDisplayName(plr)
	local displayName = plr.Name
	pcall(function()
		displayName = plr.DisplayName or plr.Name
	end)
	return displayName
end

local function refreshPlayers()
	for _, btn in pairs(playerListFrame:GetChildren()) do
		if btn:IsA("TextButton") then
			btn:Destroy()
		end
	end
	
	for _, plr in pairs(Players:GetPlayers()) do
		if plr ~= player then
			local btn = Instance.new("TextButton")
			btn.Size = UDim2.new(1, -10, 0, 30)
			btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
			btn.TextColor3 = Color3.new(1, 1, 1)
			btn.TextScaled = true
			btn.Text = getDisplayName(plr)
			btn.BorderSizePixel = 0
			btn.Parent = playerListFrame
			
			btn.MouseButton1Click:Connect(function()
				targetPlayer = plr
				targetPos = nil
				flying = true
				lastStuckPos = nil
				stuckTimer = 0
			end)
		end
	end
end

local function refreshSpectateList()
	for _, btn in pairs(spectateListFrame:GetChildren()) do
		if btn:IsA("TextButton") then
			btn:Destroy()
		end
	end
	
	for _, plr in pairs(Players:GetPlayers()) do
		if plr ~= player then
			local btn = Instance.new("TextButton")
			btn.Size = UDim2.new(1, -10, 0, 30)
			btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
			btn.TextColor3 = Color3.new(1, 1, 1)
			btn.TextScaled = true
			btn.Text = getDisplayName(plr)
			btn.BorderSizePixel = 0
			btn.Parent = spectateListFrame
			
			btn.MouseButton1Click:Connect(function()
				spectating = true
				spectatePlayer = plr
				spectateLabel.Text = "SPECTATE: " .. getDisplayName(plr)
			end)
		end
	end
end

refreshPlayers()
refreshSpectateList()
Players.PlayerAdded:Connect(function()
	refreshPlayers()
	refreshSpectateList()
	if espEnabled then
		updateESP()
	end
end)
Players.PlayerRemoving:Connect(function(plr)
	refreshPlayers()
	refreshSpectateList()
	removeESP(plr)
end)

local function isPathClear(startPos, endPos)
	if not startPos or not endPos then return true end
	
	local direction = (endPos - startPos)
	local distance = direction.Magnitude
	
	if distance < 1 then return true end
	
	local raycastParams = RaycastParams.new()
	raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
	
	if player.Character then
		raycastParams.FilterDescendantsInstances = {player.Character}
	end
	
	pcall(function()
		local result = workspace:Raycast(startPos, direction.Unit * math.min(distance, 50), raycastParams)
		return result == nil
	end)
	
	return true
end

local function findBestDirection(hrp, targetDir, cam)
	if targetDir.Magnitude < 0.1 then return targetDir end
	
	if isPathClear(hrp.Position, hrp.Position + targetDir.Unit * 30) then
		return targetDir
	end
	
	local alternatives = {
		cam.CFrame.RightVector,
		-cam.CFrame.RightVector,
		Vector3.new(0, 1, 0),
		Vector3.new(0, -1, 0),
	}
	
	for _, dir in ipairs(alternatives) do
		if isPathClear(hrp.Position, hrp.Position + dir * 30) then
			return dir
		end
	end
	
	return targetDir
end

local function stopAnimations(char)
	if not char then return end
	local humanoid = char:FindFirstChild("Humanoid")
	if not humanoid then return end
	
	for _, track in pairs(humanoid:GetPlayingAnimationTracks()) do
		track:Stop()
	end
end

local flyKey = Enum.KeyCode.F
local guiToggleKey = Enum.KeyCode.RightShift
local bindingFlyKey = false
local bindingGuiToggle = false

local function keyCodeToString(keyCode)
	local keyString = tostring(keyCode):split(".")[3]
	return keyString or "Unknown"
end

flyKeyBtn.MouseButton1Click:Connect(function()
	bindingFlyKey = true
	flyKeyDisplay.Text = "Waiting..."
	flyKeyDisplay.TextColor3 = Color3.fromRGB(255, 255, 0)
end)

guiToggleKeyBtn.MouseButton1Click:Connect(function()
	bindingGuiToggle = true
	guiToggleKeyDisplay.Text = "Waiting..."
	guiToggleKeyDisplay.TextColor3 = Color3.fromRGB(255, 255, 0)
end)

UIS.InputBegan:Connect(function(input, gp)
	if gp then return end
	
	if bindingFlyKey then
		flyKey = input.KeyCode
		flyKeyDisplay.Text = keyCodeToString(flyKey)
		flyKeyDisplay.TextColor3 = Color3.new(1, 1, 1)
		bindingFlyKey = false
		return
	end
	
	if bindingGuiToggle then
		guiToggleKey = input.KeyCode
		guiToggleKeyDisplay.Text = keyCodeToString(guiToggleKey)
		guiToggleKeyDisplay.TextColor3 = Color3.new(1, 1, 1)
		bindingGuiToggle = false
		return
	end
	
	if input.KeyCode == flyKey then
		flying = not flying
		if flying then
			flyLabel.Text = "FLY: ON"
			flyToggle.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
			flyToggle.Text = "ON"
			lastStuckPos = nil
			stuckTimer = 0
		else
			flyLabel.Text = "FLY: OFF"
			flyToggle.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
			flyToggle.Text = "OFF"
		end
	end
	
	if input.KeyCode == guiToggleKey then
		mainFrame.Visible = not mainFrame.Visible
	end
end)

resizeHandle.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		resizing = true
		startSize = mainFrame.Size
		startPos = resizeHandle.AbsolutePosition
		mainFrame.Draggable = false
	end
end)

UIS.InputChanged:Connect(function(input)
	if resizing and input.UserInputType == Enum.UserInputType.MouseMovement then
		local delta = input.Position - startPos
		local newWidth = math.max(300, startSize.X.Offset + delta.X)
		local newHeight = math.max(300, startSize.Y.Offset + delta.Y)
		mainFrame.Size = UDim2.new(0, newWidth, 0, newHeight)
	end
end)

RunService.RenderStepped:Connect(function()
	if espEnabled then
		updateESP()
	end
	
	if spectating and spectatePlayer and spectatePlayer.Character then
		local cam = workspace.CurrentCamera
		local th = spectatePlayer.Character:FindFirstChild("HumanoidRootPart")
		if th then
			cam.CFrame = CFrame.new(th.Position + Vector3.new(0, 5, 10), th.Position)
		end
	end
	
	if not flying then return end
	
	local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
	if not hrp then return end
	
	if stopAnimOnFly then
		stopAnimations(player.Character)
	end
	
	local cam = workspace.CurrentCamera
	local dir = Vector3.zero
	
	if targetPlayer and targetPlayer.Character then
		local th = targetPlayer.Character:FindFirstChild("HumanoidRootPart")
		if th then
			dir = th.Position - hrp.Position
			if not isPathClear(hrp.Position, th.Position) then
				dir = findBestDirection(hrp, dir, cam)
			end
		end
	elseif targetPos then
		dir = targetPos - hrp.Position
		if not isPathClear(hrp.Position, targetPos) then
			dir = findBestDirection(hrp, dir, cam)
		end
	else
		if UIS:IsKeyDown(Enum.KeyCode.W) then dir = dir + cam.CFrame.LookVector end
		if UIS:IsKeyDown(Enum.KeyCode.S) then dir = dir - cam.CFrame.LookVector end
		if UIS:IsKeyDown(Enum.KeyCode.A) then dir = dir - cam.CFrame.RightVector end
		if UIS:IsKeyDown(Enum.KeyCode.D) then dir = dir + cam.CFrame.RightVector end
		if UIS:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end
		if UIS:IsKeyDown(Enum.KeyCode.LeftControl) then dir = dir - Vector3.new(0, 1, 0) end
	end
	
	if dir.Magnitude > 0.5 then
		hrp.Velocity = dir.Unit * speed
	else
		if not loopTP then
			targetPlayer = nil
			targetPos = nil
		end
		hrp.Velocity = Vector3.zero
	end
end)

RunService.Stepped:Connect(function()
	if not noclip then return end
	if not player.Character then return end
	
	for _, v in pairs(player.Character:GetDescendants()) do
		if v:IsA("BasePart") then
			v.CanCollide = false
		end
	end
end)

Ratings & Reviews

No reviews yet. Be the first to review this script!

Comments (0)

Please login to comment

Login with Discord

Loading comments...