
Key RequiredUniversal

local UIS = game:GetService("UserInputService")
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local Debris = game:GetService("Debris")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local teleportEnabled = false
local MAX_HEIGHT = 300
local MIN_HEIGHT = -20
--------------------------------------------------
-- UI
--------------------------------------------------
local gui = Instance.new("ScreenGui")
gui.Name = "TeleportUI"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0,300,0,120)
frame.Position = UDim2.new(0.5,-150,0.1,0)
frame.BackgroundColor3 = Color3.fromRGB(20,20,25)
frame.BackgroundTransparency = 0.15
frame.BorderSizePixel = 0
frame.Parent = gui
Instance.new("UICorner",frame).CornerRadius = UDim.new(0,14)
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(90,90,120)
stroke.Thickness = 2
stroke.Parent = frame
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1,0,0,40)
title.BackgroundTransparency = 1
title.Text = "Teleport System"
title.Font = Enum.Font.GothamBold
title.TextSize = 22
title.TextColor3 = Color3.new(1,1,1)
title.Parent = frame
local toggle = Instance.new("TextButton")
toggle.Size = UDim2.new(0.8,0,0,40)
toggle.Position = UDim2.new(0.1,0,0.5,-10)
toggle.BackgroundColor3 = Color3.fromRGB(60,60,70)
toggle.Text = "Enable Teleport"
toggle.Font = Enum.Font.GothamBold
toggle.TextColor3 = Color3.new(1,1,1)
toggle.TextSize = 18
toggle.Parent = frame
Instance.new("UICorner",toggle).CornerRadius = UDim.new(0,10)
local indicator = Instance.new("Frame")
indicator.Size = UDim2.new(0,14,0,14)
indicator.Position = UDim2.new(1,-24,0,13)
indicator.BackgroundColor3 = Color3.fromRGB(255,80,80)
indicator.Parent = frame
Instance.new("UICorner",indicator).CornerRadius = UDim.new(1,0)
--------------------------------------------------
-- MOBILE BUTTON
--------------------------------------------------
local mobileButton = Instance.new("TextButton")
mobileButton.Size = UDim2.new(0,120,0,50)
mobileButton.Position = UDim2.new(1,-140,1,-70)
mobileButton.BackgroundColor3 = Color3.fromRGB(40,40,50)
mobileButton.Text = "Teleport"
mobileButton.TextColor3 = Color3.new(1,1,1)
mobileButton.TextScaled = true
mobileButton.Font = Enum.Font.GothamBold
mobileButton.Parent = gui
Instance.new("UICorner",mobileButton).CornerRadius = UDim.new(0,12)
--------------------------------------------------
-- DRAGGABLE UI
--------------------------------------------------
local dragging = false
local dragStart
local startPos
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = frame.Position
end
end)
frame.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - dragStart
frame.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
--------------------------------------------------
-- UI UPDATE
--------------------------------------------------
local function updateUI()
if teleportEnabled then
toggle.Text = "Disable Teleport"
TweenService:Create(toggle,TweenInfo.new(.25),{
BackgroundColor3 = Color3.fromRGB(70,170,120)
}):Play()
indicator.BackgroundColor3 = Color3.fromRGB(70,255,120)
else
toggle.Text = "Enable Teleport"
TweenService:Create(toggle,TweenInfo.new(.25),{
BackgroundColor3 = Color3.fromRGB(60,60,70)
}):Play()
indicator.BackgroundColor3 = Color3.fromRGB(255,80,80)
end
end
--------------------------------------------------
-- TELEPORT EFFECT
--------------------------------------------------
local function teleportEffect(position)
local anchor = Instance.new("Part")
anchor.Anchored = true
anchor.CanCollide = false
anchor.Transparency = 1
anchor.Size = Vector3.new(1,1,1)
anchor.Position = position
anchor.Parent = workspace
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://5066021887"
sound.Volume = 1
sound.Parent = anchor
sound:Play()
local ripple = Instance.new("Part")
ripple.Anchored = true
ripple.CanCollide = false
ripple.Shape = Enum.PartType.Cylinder
ripple.Material = Enum.Material.Neon
ripple.Color = Color3.fromRGB(0,170,255)
ripple.Transparency = 0.3
ripple.Size = Vector3.new(1,0.2,1)
ripple.CFrame = CFrame.new(position) * CFrame.Angles(math.rad(90),0,0)
ripple.Parent = workspace
TweenService:Create(
ripple,
TweenInfo.new(.6),
{Size = Vector3.new(20,0.2,20),Transparency = 1}
):Play()
Debris:AddItem(ripple,1)
Debris:AddItem(anchor,1)
end
--------------------------------------------------
-- SAFE TELEPORT
--------------------------------------------------
local function getSafePosition(hitPosition)
if hitPosition.Y > MAX_HEIGHT then return nil end
if hitPosition.Y < MIN_HEIGHT then return nil end
local rayOrigin = hitPosition + Vector3.new(0,50,0)
local rayDirection = Vector3.new(0,-200,0)
local params = RaycastParams.new()
params.FilterDescendantsInstances = {player.Character}
params.FilterType = Enum.RaycastFilterType.Blacklist
local result = workspace:Raycast(rayOrigin,rayDirection,params)
if result then
return result.Position
end
return nil
end
--------------------------------------------------
-- TOGGLE INPUTS
--------------------------------------------------
toggle.MouseButton1Click:Connect(function()
teleportEnabled = not teleportEnabled
updateUI()
end)
mobileButton.MouseButton1Click:Connect(function()
teleportEnabled = not teleportEnabled
updateUI()
end)
UIS.InputBegan:Connect(function(input,gp)
if gp then return end
if input.KeyCode == Enum.KeyCode.P then
teleportEnabled = not teleportEnabled
updateUI()
end
end)
--------------------------------------------------
-- CLICK / TAP TELEPORT
--------------------------------------------------
mouse.Button1Down:Connect(function()
if not teleportEnabled then return end
local char = player.Character
if not char then return end
local hrp = char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local hit = mouse.Hit.Position
local safePos = getSafePosition(hit)
if safePos then
teleportEffect(hrp.Position)
hrp.CFrame = CFrame.new(safePos + Vector3.new(0,3,0))
teleportEffect(safePos)
end
end)



That's cool and halirous of sound after tp. Update it next time by input that could freely move the enable button to edge by the will from other players