
KeylessUniversal

-- ដាក់ក្នុង LocalScript នៅ StarterGui
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:WaitForChild("HumanoidRootPart")
local isTeleportEnabled = false
local isDragging = false
local dragInput, dragStart, startPos
-- [[ ផ្នែកបង្កើត GUI សំខាន់ ]]
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "TeleportControlGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")
-- Frame សំខាន់
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 200, 0, 100)
mainFrame.Position = UDim2.new(0.5, -100, 0.1, 0) -- លេចឡើងខាងលើបន្តិច
mainFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui
local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 10)
mainCorner.Parent = mainFrame
-- Title
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 30)
title.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
title.Text = "Teleport System"
title.TextColor3 = Color3.new(1, 1, 1)
title.Font = Enum.Font.GothamBold
title.TextSize = 14
title.Parent = mainFrame
local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 10)
titleCorner.Parent = title
local titleFix = Instance.new("Frame")
titleFix.Size = UDim2.new(1, 0, 0, 15)
titleFix.Position = UDim2.new(0, 0, 1, -15)
titleFix.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
titleFix.BorderSizePixel = 0
titleFix.Parent = title
-- ប៊ូតុង Toggle (បើក/បិទ)
local toggleButton = Instance.new("TextButton")
toggleButton.Name = "ToggleBtn"
toggleButton.Size = UDim2.new(0.8, 0, 0, 40)
toggleButton.Position = UDim2.new(0.1, 0, 0, 50)
toggleButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
toggleButton.Text = "OFF"
toggleButton.TextColor3 = Color3.new(1, 1, 1)
toggleButton.Font = Enum.Font.Gotham
toggleButton.TextSize = 16
toggleButton.Parent = mainFrame
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 8)
btnCorner.Parent = toggleButton
-- [[ ផ្នែកប៊ូតុងសម្រាប់ Teleport (សម្រាប់ Mobile/ដៃ) ]]
local teleportBtn = Instance.new("TextButton")
teleportBtn.Name = "TeleportButton"
teleportBtn.Size = UDim2.new(0, 60, 0, 60)
teleportBtn.Position = UDim2.new(1, -70, 1, -150) -- ស្ថិតនៅជ្រុងខាងស្តាំខាងក្រោម
teleportBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
teleportBtn.Text = "GO"
teleportBtn.TextColor3 = Color3.new(1, 1, 1)
teleportBtn.Font = Enum.Font.GothamBold
teleportBtn.TextSize = 20
teleportBtn.Visible = false -- លាក់វាសិន
teleportBtn.Parent = screenGui
local teleBtnCorner = Instance.new("UICorner")
teleBtnCorner.CornerRadius = UDim.new(1, 0) -- ធ្វើជារង្វង់
teleBtnCorner.Parent = teleportBtn
local teleBtnStroke = Instance.new("UIStroke")
teleBtnStroke.Color = Color3.new(1, 1, 1)
teleBtnStroke.Thickness = 2
teleBtnStroke.Parent = teleportBtn
-- [[ មុខងារ ]]
-- ការអូស GUI សំខាន់
mainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
isDragging = true
dragStart = input.Position
startPos = mainFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then isDragging = false end
end)
end
end)
mainFrame.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 isDragging and mainFrame then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
-- ការអូសប៊ូតុង Teleport (សម្រាប់ Mobile)
local isTeleBtnDragging = false
local teleBtnDragInput, teleBtnDragStart, teleBtnStartPos
teleportBtn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
-- បើអ្នកចុចយូរ វានឹងអូសបាន បើចុចធម្មតាវានឹង Teleport
local waitTime = 0.2
local startTime = tick()
local moved = false
local connection
connection = input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
connection:Disconnect()
if not moved then
-- គ្រាន់តែ Teleport
doTeleport()
end
end
end)
-- ត្រួតពិនិត្យមើលថាតែមានការអូសឬអត់
spawn(function()
while input.UserInputState == Enum.UserInputState.Begin do
wait()
if (input.Position - teleBtnDragStart).Magnitude > 8 then
moved = true
break
end
end
end)
teleBtnDragStart = input.Position
teleBtnStartPos = teleportBtn.Position
end
end)
teleportBtn.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
teleBtnDragInput = input
end
end)
-- ធ្វើការអូសប៊ូតុង Teleport
UserInputService.InputChanged:Connect(function(input)
if input == teleBtnDragInput and teleportBtn.Visible then
local delta = input.Position - teleBtnDragStart
teleportBtn.Position = UDim2.new(teleBtnStartPos.X.Scale, teleBtnStartPos.X.Offset + delta.X, teleBtnStartPos.Y.Scale, teleBtnStartPos.Y.Offset + delta.Y)
end
end)
-- មុខងារ Teleport
local function doTeleport()
if isTeleportEnabled then
-- ទាញយកទីតាំង Mouse/Touch
-- យើងប្រើ UserInputService ដើម្បីទាញយកទីតាំងចុចក្រោយគេ
local position = UserInputService:GetMouseLocation() -- នេះគឺជា Mouse Position
local ray = workspace.CurrentCamera:ViewportPointToRay(position.X, position.Y)
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
raycastParams.FilterDescendantsInstances = {character}
local raycastResult = workspace:Raycast(ray.Origin, ray.Direction * 1000, raycastParams)
if raycastResult then
if rootPart and rootPart.Parent then
rootPart.CFrame = CFrame.new(raycastResult.Position + Vector3.new(0, 3, 0))
end
else
-- ប្រសិនបើ Raycast ទទេ ហោះទៅមុខកាមេរ៉ា
if rootPart and rootPart.Parent then
rootPart.CFrame = CFrame.new(ray.Origin + ray.Direction * 50)
end
end
end
end
-- ការចុច Mouse Button ខាងស្តាំ (សម្រាប់ PC)
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.MouseButton2 then
doTeleport()
end
end)
-- ប៊ូតុង Toggle
toggleButton.MouseButton1Click:Connect(function()
isTeleportEnabled = not isTeleportEnabled
if isTeleportEnabled then
toggleButton.Text = "ON"
toggleButton.BackgroundColor3 = Color3.fromRGB(50, 200, 50)
teleportBtn.Visible = true -- បង្ហាញប៊ូតុងសំរាប់ដៃ
else
toggleButton.Text = "OFF"
toggleButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
teleportBtn.Visible = false -- លាក់ប៊ូតុងសំរាប់ដៃ
end
end)
-- Character Respawn handling
player.CharacterAdded:Connect(function(newCharacter)
character = newCharacter
humanoid = newCharacter:WaitForChild("Humanoid")
rootPart = newCharacter:WaitForChild("HumanoidRootPart")
end)No comments yet for this script.



