CCCPaste

f466d4ab93ee1

-- HUB COMPLETO (LocalScript dentro del Frame)

local player = game.Players.LocalPlayer
local userInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")

local frame = script.Parent
local guardarBtn = frame:WaitForChild("BtnGuardar")
local tpBtn = frame:WaitForChild("BtnTP")

-- =========================
-- 1) HUB MÓVIL
-- =========================
local dragging, dragInput, dragStart, startPos

local function update(input)
    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

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
        update(input)
    end
end)

-- =========================
-- 2) GUARDAR Y TELEPORTAR POSICIÓN
-- =========================
local savedPos = nil

guardarBtn.MouseButton1Click:Connect(function()
    if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
        savedPos = player.Character.HumanoidRootPart.CFrame
        warn("Posición guardada: " .. tostring(savedPos))
    end
end)

tpBtn.MouseButton1Click:Connect(function()
    if savedPos and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
        player.Character.HumanoidRootPart.CFrame = savedPos
    end
end)

-- =========================
-- 3) ESP DE JUGADORES (VER NOMBRES)
-- =========================
local function createESP(character)
    if character:FindFirstChild("Head") and not character.Head:FindFirstChild("ESPBillboard") then
        local billboard = Instance.new("BillboardGui")
        billboard.Name = "ESPBillboard"
        billboard.Adornee = character.Head
        billboard.Size = UDim2.new(0, 200, 0, 50)
        billboard.StudsOffset = Vector3.new(0, 2, 0)
        billboard.AlwaysOnTop = true

        local nameLabel = Instance.new("TextLabel", billboard)
        nameLabel.Size = UDim2.new(1, 0, 1, 0)
        nameLabel.BackgroundTransparency = 1
        nameLabel.Text = character.Name
        nameLabel.TextColor3 = Color3.fromRGB(255, 0, 0) -- rojo
        nameLabel.TextStrokeTransparency = 0.5
        nameLabel.Font = Enum.Font.SourceSansBold
        nameLabel.TextScaled = true

        billboard.Parent = character.Head
    end
end

local function onPlayerAdded(p)
    p.CharacterAdded:Connect(function(char)
        task.wait(1) -- esperar a que cargue
        createESP(char)
    end)
end

for _, p in pairs(Players:GetPlayers()) do
    if p ~= player then
        onPlayerAdded(p)
        if p.Character then
            createESP(p.Character)
        end
    end
end

Players.PlayerAdded:Connect(onPlayerAdded)