-- GUI SavePos + Fly | LocalScript ejecutado por loadstring local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer -- ScreenGui local gui = Instance.new("ScreenGui") gui.Name = "SavePosGUI" gui.IgnoreGuiInset = true gui.ResetOnSpawn = false gui.ZIndexBehavior = Enum.ZIndexBehavior.Global gui.Parent = player:WaitForChild("PlayerGui") -- Main Frame local main = Instance.new("Frame", gui) main.Size = UDim2.new(0, 320, 0, 260) main.Position = UDim2.new(0.5, -160, 0.4, 0) main.BackgroundColor3 = Color3.fromRGB(30,30,30) main.Active = true main.Draggable = true main.ZIndex = 10 -- Top bar local top = Instance.new("Frame", main) top.Size = UDim2.new(1,0,0,30) top.BackgroundColor3 = Color3.fromRGB(20,20,20) top.ZIndex = 11 -- Close local close = Instance.new("TextButton", top) close.Size = UDim2.new(0,30,0,30) close.Position = UDim2.new(1,-30,0,0) close.Text = "X" close.BackgroundColor3 = Color3.fromRGB(170,50,50) close.ZIndex = 12 -- Minimize local mini = Instance.new("TextButton", top) mini.Size = UDim2.new(0,30,0,30) mini.Position = UDim2.new(1,-60,0,0) mini.Text = "-" mini.BackgroundColor3 = Color3.fromRGB(60,60,60) mini.ZIndex = 12 -- Floating Button local float = Instance.new("TextButton", gui) float.Size = UDim2.new(0,50,0,50) float.Position = UDim2.new(0.1,0,0.5,0) float.Text = "●" float.Visible = false float.BackgroundColor3 = Color3.fromRGB(40,40,40) float.Active = true float.Draggable = true float.ZIndex = 999 -- Save Positions local savedPos = {} for i = 1,3 do local save = Instance.new("TextButton", main) save.Size = UDim2.new(0,130,0,30) save.Position = UDim2.new(0,10,0,40 + (i-1)*45) save.Text = "Guardar "..i save.ZIndex = 11 local load = Instance.new("TextButton", main) load.Size = UDim2.new(0,130,0,30) load.Position = UDim2.new(0,180,0,40 + (i-1)*45) load.Text = "Ir "..i load.ZIndex = 11 save.MouseButton1Click:Connect(function() local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then savedPos[i] = char.HumanoidRootPart.CFrame end end) load.MouseButton1Click:Connect(function() if savedPos[i] then local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then char.HumanoidRootPart.CFrame = savedPos[i] end end end) end -- Fly Button local flyBtn = Instance.new("TextButton", main) flyBtn.Size = UDim2.new(0,300,0,30) flyBtn.Position = UDim2.new(0,10,1,-40) flyBtn.Text = "FLY: OFF" flyBtn.ZIndex = 11 -- Fly Logic (Infinite Yield style) local flying = false local bv, bg local function startFly() local char = player.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if not hrp then return end bv = Instance.new("BodyVelocity", hrp) bv.MaxForce = Vector3.new(1,1,1) * 1e9 bg = Instance.new("BodyGyro", hrp) bg.MaxTorque = Vector3.new(1,1,1) * 1e9 RunService:BindToRenderStep("Fly", 0, function() local cam = workspace.CurrentCamera local dir = Vector3.zero if UIS:IsKeyDown(Enum.KeyCode.W) then dir += cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.S) then dir -= cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.A) then dir -= cam.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.D) then dir += cam.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.Space) then dir += Vector3.new(0,1,0) end if UIS:IsKeyDown(Enum.KeyCode.LeftControl) then dir -= Vector3.new(0,1,0) end bv.Velocity = dir * 60 bg.CFrame = cam.CFrame end) end local function stopFly() RunService:UnbindFromRenderStep("Fly") if bv then bv:Destroy() end if bg then bg:Destroy() end end flyBtn.MouseButton1Click:Connect(function() flying = not flying flyBtn.Text = flying and "FLY: ON" or "FLY: OFF" if flying then startFly() else stopFly() end end) -- Minimize mini.MouseButton1Click:Connect(function() main.Visible = false float.Visible = true end) -- Restore float.MouseButton1Click:Connect(function() main.Visible = true float.Visible = false end) -- Close close.MouseButton1Click:Connect(function() gui:Destroy() end)