Teleport | Fly | Esp tools
Key RequiredUniversal

Teleport | Fly | Esp tools

Universal ScriptToastmanToastman 418 views 5.9K executesUpdated Oct 8, 2026
Unrated
00
Lua Script•667 lines (15071 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")

local player = Players.LocalPlayer
local mouse = player:GetMouse()
local camera = workspace.CurrentCamera

local function getRootPart()
	local character = player.Character
	return character and character:FindFirstChild("HumanoidRootPart")
end

local function createTool(name)
	local tool = Instance.new("Tool")
	tool.Name = name
	tool.RequiresHandle = false
	tool.CanBeDropped = false
	tool.ManualActivationOnly = false
	tool.Parent = player:WaitForChild("Backpack")
	return tool
end

local teleportTool = createTool("Teleport")
local teleportConnection

teleportTool.Equipped:Connect(function()
	teleportConnection = mouse.Button1Down:Connect(function()
		local root = getRootPart()
		if not root then
			return
		end

		local target = mouse.Hit
		if target then
			root.CFrame = CFrame.new(target.Position + Vector3.new(0, 3, 0))
		end
	end)
end)

teleportTool.Unequipped:Connect(function()
	if teleportConnection then
		teleportConnection:Disconnect()
		teleportConnection = nil
	end
end)

local flyTool = createTool("Fly")
local flying = false
local flySpeed = 60
local flyVelocity
local flyGyro
local flyConnection
local flyGui
local flyButton

local function stopFlying()
	flying = false

	if flyConnection then
		flyConnection:Disconnect()
		flyConnection = nil
	end

	if flyVelocity then
		flyVelocity:Destroy()
		flyVelocity = nil
	end

	if flyGyro then
		flyGyro:Destroy()
		flyGyro = nil
	end

	local character = player.Character
	local humanoid = character and character:FindFirstChildOfClass("Humanoid")

	if humanoid then
		humanoid.PlatformStand = false
	end

	if flyButton then
		flyButton.Text = "FLY: OFF"
		flyButton.BackgroundColor3 = Color3.fromRGB(50, 70, 50)
	end
end

local function startFlying()
	local root = getRootPart()
	local character = player.Character
	local humanoid = character and character:FindFirstChildOfClass("Humanoid")

	if not root or not humanoid then
		return
	end

	stopFlying()

	flying = true
	humanoid.PlatformStand = true

	flyVelocity = Instance.new("BodyVelocity")
	flyVelocity.MaxForce = Vector3.new(9e9, 9e9, 9e9)
	flyVelocity.Velocity = Vector3.zero
	flyVelocity.Parent = root

	flyGyro = Instance.new("BodyGyro")
	flyGyro.MaxTorque = Vector3.new(9e9, 9e9, 9e9)
	flyGyro.P = 9e4
	flyGyro.Parent = root

	flyConnection = RunService.RenderStepped:Connect(function()
		if not flying or not root.Parent then
			stopFlying()
			return
		end

		local cameraCFrame = camera.CFrame
		local direction = Vector3.zero

		if UserInputService:IsKeyDown(Enum.KeyCode.W) then
			direction += cameraCFrame.LookVector
		end

		if UserInputService:IsKeyDown(Enum.KeyCode.S) then
			direction -= cameraCFrame.LookVector
		end

		if UserInputService:IsKeyDown(Enum.KeyCode.A) then
			direction -= cameraCFrame.RightVector
		end

		if UserInputService:IsKeyDown(Enum.KeyCode.D) then
			direction += cameraCFrame.RightVector
		end

		if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
			direction += Vector3.new(0, 1, 0)
		end

		if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
			direction -= Vector3.new(0, 1, 0)
		end

		if direction.Magnitude > 0 then
			direction = direction.Unit * flySpeed
		end

		flyVelocity.Velocity = direction
		flyGyro.CFrame = cameraCFrame
	end)

	if flyButton then
		flyButton.Text = "FLY: ON"
		flyButton.BackgroundColor3 = Color3.fromRGB(50, 160, 70)
	end
end

local function createFlyUI()
	if flyGui then
		flyGui:Destroy()
	end

	flyGui = Instance.new("ScreenGui")
	flyGui.Name = "FlyUI"
	flyGui.ResetOnSpawn = false

	pcall(function()
		flyGui.Parent = CoreGui
	end)

	if not flyGui.Parent then
		flyGui.Parent = player:WaitForChild("PlayerGui")
	end

	local frame = Instance.new("Frame")
	frame.Size = UDim2.new(0, 140, 0, 70)
	frame.Position = UDim2.new(0.5, -70, 0.15, 0)
	frame.BackgroundColor3 = Color3.fromRGB(20, 26, 20)
	frame.BorderSizePixel = 0
	frame.Active = true
	frame.Draggable = true
	frame.Parent = flyGui

	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 8)
	corner.Parent = frame

	local outline = Instance.new("UIStroke")
	outline.Color = Color3.fromRGB(50, 90, 50)
	outline.Thickness = 1.5
	outline.Parent = frame

	local title = Instance.new("TextLabel")
	title.Size = UDim2.new(1, 0, 0, 22)
	title.BackgroundTransparency = 1
	title.Text = "Fly Control"
	title.TextColor3 = Color3.fromRGB(200, 230, 200)
	title.Font = Enum.Font.GothamBold
	title.TextSize = 13
	title.Parent = frame

	flyButton = Instance.new("TextButton")
	flyButton.Size = UDim2.new(0.85, 0, 0, 28)
	flyButton.Position = UDim2.new(0.075, 0, 0, 30)
	flyButton.BackgroundColor3 = Color3.fromRGB(50, 70, 50)
	flyButton.Text = "FLY: OFF"
	flyButton.TextColor3 = Color3.new(1, 1, 1)
	flyButton.Font = Enum.Font.GothamBold
	flyButton.TextSize = 13
	flyButton.Parent = frame

	local buttonCorner = Instance.new("UICorner")
	buttonCorner.CornerRadius = UDim.new(0, 6)
	buttonCorner.Parent = flyButton

	flyButton.MouseButton1Click:Connect(function()
		if flying then
			stopFlying()
		else
			startFlying()
		end
	end)
end

flyTool.Equipped:Connect(createFlyUI)

flyTool.Unequipped:Connect(function()
	stopFlying()

	if flyGui then
		flyGui:Destroy()
		flyGui = nil
	end
end)

player.CharacterAdded:Connect(function()
	task.wait(0.5)

	if flying then
		stopFlying()
	end
end)

local espTool = createTool("ESP")
local espEnabled = false

local espSettings = {
	Boxes = true,
	Names = true,
	Tracers = false,
	Distance = true,
	Health = true,
	Chams = true,
	TeamCheck = false,
	MaxDist = 2000
}

local espObjects = {}
local espGui
local espConnection

local function hideESP(objects)
	for name, object in pairs(objects) do
		if name == "highlight" then
			object.Enabled = false
		else
			object.Visible = false
		end
	end
end

local function removeESP(targetPlayer)
	local objects = espObjects[targetPlayer]

	if not objects then
		return
	end

	for _, object in pairs(objects) do
		if typeof(object) == "Instance" then
			pcall(function()
				object:Destroy()
			end)
		else
			pcall(function()
				object:Remove()
			end)
		end
	end

	espObjects[targetPlayer] = nil
end

local function clearESP()
	for targetPlayer in pairs(espObjects) do
		removeESP(targetPlayer)
	end
end

local function createESP(targetPlayer)
	if targetPlayer == player or espObjects[targetPlayer] then
		return
	end

	local success, box = pcall(function()
		return Drawing.new("Square")
	end)

	if not success or not box then
		return
	end

	box.Thickness = 1.5
	box.Filled = false
	box.Color = Color3.fromRGB(60, 200, 90)
	box.Visible = false
	box.ZIndex = 2

	local name = Drawing.new("Text")
	name.Size = 14
	name.Center = true
	name.Outline = true
	name.Color = Color3.fromRGB(220, 240, 220)
	name.Visible = false
	name.ZIndex = 3

	local tracer = Drawing.new("Line")
	tracer.Thickness = 1.2
	tracer.Color = Color3.fromRGB(60, 200, 90)
	tracer.Visible = false
	tracer.ZIndex = 1

	local health = Drawing.new("Line")
	health.Thickness = 2.5
	health.Color = Color3.fromRGB(50, 200, 80)
	health.Visible = false
	health.ZIndex = 2

	local distance = Drawing.new("Text")
	distance.Size = 12
	distance.Center = true
	distance.Outline = true
	distance.Color = Color3.fromRGB(180, 200, 180)
	distance.Visible = false
	distance.ZIndex = 3

	local highlight = Instance.new("Highlight")
	highlight.FillColor = Color3.fromRGB(60, 200, 90)
	highlight.OutlineColor = Color3.fromRGB(30, 120, 50)
	highlight.FillTransparency = 0.55
	highlight.OutlineTransparency = 0
	highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
	highlight.Enabled = false

	if targetPlayer.Character then
		highlight.Parent = targetPlayer.Character
		highlight.Adornee = targetPlayer.Character
	end

	espObjects[targetPlayer] = {
		box = box,
		name = name,
		tracer = tracer,
		health = health,
		distance = distance,
		highlight = highlight
	}
end

local function isEnemy(targetPlayer)
	if not espSettings.TeamCheck then
		return true
	end

	if not player.Team or not targetPlayer.Team then
		return true
	end

	return player.Team ~= targetPlayer.Team
end

local function updateESP()
	if not espEnabled then
		for _, objects in pairs(espObjects) do
			hideESP(objects)
		end

		return
	end

	for targetPlayer, objects in pairs(espObjects) do
		if not targetPlayer.Parent or not targetPlayer.Character or not isEnemy(targetPlayer) then
			hideESP(objects)
			continue
		end

		local character = targetPlayer.Character
		local root = character:FindFirstChild("HumanoidRootPart")
		local humanoid = character:FindFirstChildOfClass("Humanoid")
		local head = character:FindFirstChild("Head")

		if not root or not humanoid or humanoid.Health <= 0 then
			hideESP(objects)
			continue
		end

		if objects.highlight and objects.highlight.Parent ~= character then
			objects.highlight.Parent = character
			objects.highlight.Adornee = character
		end

		local screenPosition, onScreen = camera:WorldToViewportPoint(root.Position)
		local distanceFromCamera = (root.Position - camera.CFrame.Position).Magnitude

		if not onScreen or distanceFromCamera > espSettings.MaxDist then
			hideESP(objects)
			continue
		end

		local headPosition = head
			and camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.6, 0))
			or screenPosition

		local footPosition = camera:WorldToViewportPoint(
			root.Position - Vector3.new(0, 3, 0)
		)

		local height = math.abs(headPosition.Y - footPosition.Y)
		local width = height * 0.55
		local x = screenPosition.X - width / 2
		local y = headPosition.Y

		if espSettings.Boxes then
			objects.box.Size = Vector2.new(width, height)
			objects.box.Position = Vector2.new(x, y)
			objects.box.Visible = true
		else
			objects.box.Visible = false
		end

		if espSettings.Names then
			objects.name.Text = targetPlayer.Name
			objects.name.Position = Vector2.new(screenPosition.X, y - 16)
			objects.name.Visible = true
		else
			objects.name.Visible = false
		end

		if espSettings.Distance then
			objects.distance.Text = math.floor(distanceFromCamera) .. "m"
			objects.distance.Position = Vector2.new(
				screenPosition.X,
				footPosition.Y + 4
			)
			objects.distance.Visible = true
		else
			objects.distance.Visible = false
		end

		if espSettings.Health then
			local healthPercent = math.clamp(
				humanoid.Health / math.max(humanoid.MaxHealth, 1),
				0,
				1
			)

			objects.health.From = Vector2.new(x - 5, y + height)
			objects.health.To = Vector2.new(
				x - 5,
				y + height - height * healthPercent
			)

			objects.health.Color = Color3.fromRGB(
				255 * (1 - healthPercent),
				220 * healthPercent,
				40
			)

			objects.health.Visible = true
		else
			objects.health.Visible = false
		end

		if espSettings.Tracers then
			objects.tracer.From = Vector2.new(
				camera.ViewportSize.X / 2,
				camera.ViewportSize.Y
			)

			objects.tracer.To = Vector2.new(
				screenPosition.X,
				footPosition.Y
			)

			objects.tracer.Visible = true
		else
			objects.tracer.Visible = false
		end

		if objects.highlight then
			objects.highlight.Enabled = espSettings.Chams
		end
	end
end

local function startESP()
	if espConnection then
		espConnection:Disconnect()
	end

	espConnection = RunService.RenderStepped:Connect(updateESP)
end

local function stopESP()
	if espConnection then
		espConnection:Disconnect()
		espConnection = nil
	end

	clearESP()
end

Players.PlayerAdded:Connect(function(newPlayer)
	newPlayer.CharacterAdded:Connect(function()
		task.wait(0.5)

		if espEnabled then
			createESP(newPlayer)
		end
	end)
end)

Players.PlayerRemoving:Connect(removeESP)

local function createESPUI()
	if espGui then
		espGui:Destroy()
	end

	espGui = Instance.new("ScreenGui")
	espGui.Name = "ESPUI"
	espGui.ResetOnSpawn = false

	pcall(function()
		espGui.Parent = CoreGui
	end)

	if not espGui.Parent then
		espGui.Parent = player:WaitForChild("PlayerGui")
	end

	local frame = Instance.new("Frame")
	frame.Size = UDim2.new(0, 180, 0, 256)
	frame.Position = UDim2.new(0.02, 0, 0.25, 0)
	frame.BackgroundColor3 = Color3.fromRGB(18, 24, 18)
	frame.BorderSizePixel = 0
	frame.Active = true
	frame.Draggable = true
	frame.Parent = espGui

	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 8)
	corner.Parent = frame

	local outline = Instance.new("UIStroke")
	outline.Color = Color3.fromRGB(50, 100, 50)
	outline.Thickness = 1.5
	outline.Parent = frame

	local title = Instance.new("TextLabel")
	title.Size = UDim2.new(1, 0, 0, 26)
	title.BackgroundTransparency = 1
	title.Text = "ESP Settings"
	title.TextColor3 = Color3.fromRGB(200, 230, 200)
	title.Font = Enum.Font.GothamBold
	title.TextSize = 14
	title.Parent = frame

	local toggles = {
		{label = "ESP Enabled", key = "Enabled"},
		{label = "Boxes", key = "Boxes"},
		{label = "Names", key = "Names"},
		{label = "Tracers", key = "Tracers"},
		{label = "Distance", key = "Distance"},
		{label = "Health Bar", key = "Health"},
		{label = "Chams", key = "Chams"},
		{label = "Team Check", key = "TeamCheck"}
	}

	for index, setting in ipairs(toggles) do
		local y = 32 + (index - 1) * 26

		local label = Instance.new("TextLabel")
		label.Size = UDim2.new(0.58, 0, 0, 22)
		label.Position = UDim2.new(0, 10, 0, y)
		label.BackgroundTransparency = 1
		label.Text = setting.label
		label.TextColor3 = Color3.fromRGB(200, 220, 200)
		label.Font = Enum.Font.Gotham
		label.TextSize = 12
		label.TextXAlignment = Enum.TextXAlignment.Left
		label.Parent = frame

		local enabled = setting.key == "Enabled"
			and espEnabled
			or espSettings[setting.key]

		local button = Instance.new("TextButton")
		button.Size = UDim2.new(0, 44, 0, 20)
		button.Position = UDim2.new(1, -54, 0, y + 1)
		button.BackgroundColor3 = enabled
			and Color3.fromRGB(50, 150, 70)
			or Color3.fromRGB(50, 60, 50)
		button.Text = enabled and "ON" or "OFF"
		button.TextColor3 = Color3.new(1, 1, 1)
		button.Font = Enum.Font.GothamBold
		button.TextSize = 11
		button.Parent = frame

		local buttonCorner = Instance.new("UICorner")
		buttonCorner.CornerRadius = UDim.new(0, 5)
		buttonCorner.Parent = button

		button.MouseButton1Click:Connect(function()
			if setting.key == "Enabled" then
				espEnabled = not espEnabled

				button.Text = espEnabled and "ON" or "OFF"
				button.BackgroundColor3 = espEnabled
					and Color3.fromRGB(50, 150, 70)
					or Color3.fromRGB(50, 60, 50)

				if espEnabled then
					startESP()

					for _, targetPlayer in ipairs(Players:GetPlayers()) do
						if targetPlayer ~= player then
							createESP(targetPlayer)
						end
					end
				else
					stopESP()
				end
			else
				espSettings[setting.key] = not espSettings[setting.key]

				local isOn = espSettings[setting.key]

				button.Text = isOn and "ON" or "OFF"
				button.BackgroundColor3 = isOn
					and Color3.fromRGB(50, 150, 70)
					or Color3.fromRGB(50, 60, 50)
			end
		end)
	end
end

espTool.Equipped:Connect(createESPUI)

espTool.Unequipped:Connect(function()
	if espGui then
		espGui:Destroy()
		espGui = nil
	end
end)

Features & Information

This comes with 3 tools • Teleport tool - just a simple teleport tool • Fly tool - a ui to turn off and on • Esp tool - with settings also open source
#teleport#fly#esp#toast#universal

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts