--// Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
--// Create GUI
local gui = Instance.new("ScreenGui")
gui.Name = "PositionGui"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.Parent = player:WaitForChild("PlayerGui")
--// Main Frame
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 280, 0, 190)
frame.Position = UDim2.new(0.5, -140, 0.5, -95)
frame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
frame.BorderSizePixel = 0
frame.Parent = gui
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 16)
-- Gradient Background
local gradient = Instance.new("UIGradient", frame)
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(25,25,35)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(10,10,15))
}
gradient.Rotation = 90
-- Shadow effect
local stroke = Instance.new("UIStroke", frame)
stroke.Thickness = 1.5
stroke.Color = Color3.fromRGB(80, 80, 120)
stroke.Transparency = 0.5
-- Padding
local padding = Instance.new("UIPadding", frame)
padding.PaddingTop = UDim.new(0, 10)
padding.PaddingLeft = UDim.new(0, 10)
padding.PaddingRight = UDim.new(0, 10)
-- Smooth Drag (Mobile + PC)
local dragging, dragInput, dragStart, startPos
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = frame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
frame.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
local goal = {
Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
}
TweenService:Create(frame, TweenInfo.new(0.08, Enum.EasingStyle.Sine), goal):Play()
end
end)
--// Title
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 30)
title.Text = "π Phantom Teleport | Premium (Keyless) π"
title.Font = Enum.Font.GothamBold
title.TextSize = 14
title.TextColor3 = Color3.fromRGB(200, 200, 255)
title.BackgroundTransparency = 1
title.Parent = frame
-- Layout
local layout = Instance.new("UIListLayout", frame)
layout.Padding = UDim.new(0, 10)
layout.SortOrder = Enum.SortOrder.LayoutOrder
--// Button Creator (UPGRADED)
local function createButton(text, color)
local button = Instance.new("TextButton")
button.Size = UDim2.new(1, 0, 0, 55)
button.Text = text
button.Font = Enum.Font.GothamBold
button.TextSize = 16
button.TextColor3 = Color3.new(1,1,1)
button.BackgroundColor3 = color
button.AutoButtonColor = false
button.Parent = frame
Instance.new("UICorner", button).CornerRadius = UDim.new(0, 12)
-- Gradient inside button
local grad = Instance.new("UIGradient", button)
grad.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, color:Lerp(Color3.new(1,1,1), 0.1)),
ColorSequenceKeypoint.new(1, color:Lerp(Color3.new(0,0,0), 0.2))
}
grad.Rotation = 90
-- Stroke glow
local stroke = Instance.new("UIStroke", button)
stroke.Thickness = 1
stroke.Transparency = 0.4
-- Hover + Click Animations
button.MouseEnter:Connect(function()
TweenService:Create(button, TweenInfo.new(0.15), {
Size = UDim2.new(1, 0, 0, 60)
}):Play()
end)
button.MouseLeave:Connect(function()
TweenService:Create(button, TweenInfo.new(0.15), {
Size = UDim2.new(1, 0, 0, 55)
}):Play()
end)
button.MouseButton1Down:Connect(function()
TweenService:Create(button, TweenInfo.new(0.08), {
Size = UDim2.new(0.97, 0, 0, 50)
}):Play()
end)
button.MouseButton1Up:Connect(function()
TweenService:Create(button, TweenInfo.new(0.08), {
Size = UDim2.new(1, 0, 0, 55)
}):Play()
end)
return button
end
local setButton = createButton("Set Position", Color3.fromRGB(60,160,60))
local bringButton = createButton("Bring To Position", Color3.fromRGB(160,60,60))
--// Variables (UNCHANGED)
local savedCFrame = nil
local moving = false
local SPEED = 50000 -- studs per second
--// Set Position (UNCHANGED)
setButton.MouseButton1Click:Connect(function()
local character = player.Character
if character and character:FindFirstChild("HumanoidRootPart") then
savedCFrame = character.HumanoidRootPart.CFrame
print("Position Saved")
end
end)
--// Bring To Position (UNCHANGED)
bringButton.MouseButton1Click:Connect(function()
if moving then return end
if not savedCFrame then return end
local character = player.Character
if not character then return end
local hrp = character:FindFirstChild("HumanoidRootPart")
if not hrp then return end
moving = true
local connection
connection = RunService.RenderStepped:Connect(function(dt)
if not hrp or not savedCFrame then
connection:Disconnect()
moving = false
return
end
local currentPos = hrp.Position
local targetPos = savedCFrame.Position
local offset = targetPos - currentPos
local distance = offset.Magnitude
if distance <= 1 then
hrp.CFrame = savedCFrame
connection:Disconnect()
moving = false
return
end
local maxStep = SPEED * dt
local moveDistance = math.min(maxStep, distance)
local newPosition = currentPos + offset.Unit * moveDistance
hrp.CFrame = CFrame.new(newPosition) * CFrame.Angles(
math.rad(hrp.Orientation.X),
math.rad(hrp.Orientation.Y),
math.rad(hrp.Orientation.Z)
)
end)
end)
Comments
No comments yet
Be the first to share your thoughts!