--// 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)