
KeylessUniversal

--// SCRIPTSJUAN - TP por pasos suave
--// Colaboración: ChatGPT 🤝
--// Optimizado para Delta
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local function getChar()
return player.Character or player.CharacterAdded:Wait()
end
local function getRoot()
return getChar():WaitForChild("HumanoidRootPart")
end
-- limpiar GUI viejo
pcall(function()
if player.PlayerGui:FindFirstChild("SCRIPTSJUAN_GUI") then
player.PlayerGui:FindFirstChild("SCRIPTSJUAN_GUI"):Destroy()
end
end)
--================ GUI PRINCIPAL =================--
local gui = Instance.new("ScreenGui")
gui.Name = "SCRIPTSJUAN_GUI"
gui.ResetOnSpawn = false
gui.Parent = player.PlayerGui
local main = Instance.new("Frame", gui)
main.Size = UDim2.fromScale(0.42,0.38)
main.Position = UDim2.fromScale(0.29,0.3)
main.BackgroundColor3 = Color3.fromRGB(95,95,95)
main.BorderSizePixel = 0
main.Active = true
main.Draggable = true
Instance.new("UICorner", main).CornerRadius = UDim.new(0,16)
local title = Instance.new("TextLabel", main)
title.Size = UDim2.new(1,0,0.18,0)
title.BackgroundTransparency = 1
title.Text = "SCRIPTSJUAN"
title.TextScaled = true
title.Font = Enum.Font.GothamBlack
title.TextColor3 = Color3.fromRGB(255,230,90)
local credit = Instance.new("TextLabel", main)
credit.Size = UDim2.new(1,0,0.12,0)
credit.Position = UDim2.fromScale(0,0.88)
credit.BackgroundTransparency = 1
credit.Text = "Colaboración: ChatGPT 🤝"
credit.TextScaled = true
credit.Font = Enum.Font.Gotham
credit.TextColor3 = Color3.fromRGB(190,255,190)
--================ BOTONES =================--
local function makeBtn(text, y)
local b = Instance.new("TextButton", main)
b.Size = UDim2.fromScale(0.72,0.18)
b.Position = UDim2.fromScale(0.14,y)
b.BackgroundColor3 = Color3.fromRGB(40,40,40)
b.Text = text
b.TextScaled = true
b.Font = Enum.Font.GothamBold
b.TextColor3 = Color3.fromRGB(255,255,120)
b.BorderSizePixel = 0
Instance.new("UICorner", b).CornerRadius = UDim.new(0,12)
return b
end
local markBtn = makeBtn("📍 Marcar Punto", 0.28)
local tpBtn = makeBtn("🌀 TP por Pasos", 0.54)
--================ BURBUJA HJ MOVIBLE Y CIRCULAR (suave) =================--
local bubble = Instance.new("TextButton", gui)
bubble.Size = UDim2.fromScale(0.08,0.08)
bubble.Position = UDim2.fromScale(0.03,0.55)
bubble.BackgroundColor3 = Color3.fromRGB(40,40,40)
bubble.Text = "HJ"
bubble.TextScaled = true
bubble.Font = Enum.Font.GothamBlack
bubble.BorderSizePixel = 0
bubble.Visible = false
bubble.AutoButtonColor = false
Instance.new("UICorner", bubble).CornerRadius = UDim.new(1,0)
-- rainbow effect vibrante
local grad = Instance.new("UIGradient", bubble)
grad.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255,0,0)),
ColorSequenceKeypoint.new(0.2, Color3.fromRGB(255,127,0)),
ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255,255,0)),
ColorSequenceKeypoint.new(0.6, Color3.fromRGB(0,255,0)),
ColorSequenceKeypoint.new(0.8, Color3.fromRGB(0,0,255)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(139,0,255)),
}
task.spawn(function()
local r = 0
while bubble.Parent do
r += 2.5
grad.Rotation = r
RunService.RenderStepped:Wait()
end
end)
-- hacer movible suavemente siguiendo el dedo / mouse
do
local dragging = false
local dragStart = Vector2.new()
local startPos = UDim2.new()
local targetPos = bubble.Position
bubble.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = bubble.Position
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
targetPos = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
RunService.RenderStepped:Connect(function()
bubble.Position = bubble.Position:Lerp(targetPos, 0.25)
end)
end
bubble.MouseButton1Click:Connect(function()
main.Visible = true
bubble.Visible = false
end)
--================ MINIMIZAR / CERRAR =================--
local minimize = Instance.new("TextButton", main)
minimize.Size = UDim2.fromScale(0.12,0.18)
minimize.Position = UDim2.fromScale(0.02,0.02)
minimize.Text = "—"
minimize.TextScaled = true
minimize.Font = Enum.Font.GothamBlack
minimize.TextColor3 = Color3.fromRGB(255,255,0)
minimize.BackgroundColor3 = Color3.fromRGB(30,30,30)
minimize.BorderSizePixel = 0
Instance.new("UICorner", minimize)
minimize.MouseButton1Click:Connect(function()
main.Visible = false
bubble.Visible = true
end)
local close = Instance.new("TextButton", main)
close.Size = UDim2.fromScale(0.12,0.18)
close.Position = UDim2.fromScale(0.86,0.02)
close.Text = "X"
close.TextScaled = true
close.Font = Enum.Font.GothamBlack
close.TextColor3 = Color3.fromRGB(255,90,90)
close.BackgroundColor3 = Color3.fromRGB(30,30,30)
close.BorderSizePixel = 0
Instance.new("UICorner", close)
close.MouseButton1Click:Connect(function()
gui:Destroy()
end)
--================ SISTEMA DE PUNTOS =================--
local savedPoint = nil
markBtn.MouseButton1Click:Connect(function()
savedPoint = getRoot().Position
markBtn.Text = "✅ Punto Guardado"
task.delay(1,function()
markBtn.Text = "📍 Marcar Punto"
end)
end)
--================ TP POR PASOS =================--
local STEP_DISTANCE = 5 -- distancia más cercana
local STEP_DELAY = 0.25 -- velocidad más rápida
local function softTeleport(targetPos)
local root = getRoot()
local current = root.Position
local direction = (targetPos - current)
local distance = direction.Magnitude
if distance == 0 then return end
direction = direction.Unit
local steps = math.floor(distance / STEP_DISTANCE)
for i = 1, steps do
root.CFrame = CFrame.new(current + direction * (STEP_DISTANCE * i))
task.wait(STEP_DELAY)
end
root.CFrame = CFrame.new(targetPos)
end
tpBtn.MouseButton1Click:Connect(function()
if not savedPoint then
tpBtn.Text = "❌ No hay punto"
task.delay(1,function()
tpBtn.Text = "🌀 TP por Pasos"
end)
return
end
tpBtn.Text = "🌀 Moviéndose..."
softTeleport(savedPoint)
tpBtn.Text = "✅ Llegaste"
task.delay(1,function()
tpBtn.Text = "🌀 TP por Pasos"
end)
end)No comments yet for this script.



