Nevzyn

NickzTP v2

Aug 17th, 2025 (edited)
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.22 KB | None | 0 0
  1. if not game or not game:IsLoaded() then game.Loaded:Wait() end
  2. local Players = game:GetService("Players")
  3. local HttpService = game:GetService("HttpService")
  4. local TweenService = game:GetService("TweenService")
  5. local plr = Players.LocalPlayer
  6. local chr = plr.Character or plr.CharacterAdded:Wait()
  7. local humanoidRoot = chr:WaitForChild("HumanoidRootPart")
  8.  
  9. local savedPositions = {}
  10. local maxSaves = 5
  11. local currentSaveSlot = 1
  12.  
  13. -- Persistência (sem alterações)
  14. local hasFS = (type(writefile)=="function" and type(readfile)=="function")
  15. local SAVE_DIR = "SkyTP"
  16. local BASE_NAME = string.format("Saves_%d_%d.json", game.PlaceId, plr.UserId)
  17. local SAVE_FILE = BASE_NAME
  18. if type(isfolder)=="function" and type(makefolder)=="function" then
  19. if not isfolder(SAVE_DIR) then pcall(makefolder, SAVE_DIR) end
  20. SAVE_FILE = SAVE_DIR .. "/" .. BASE_NAME
  21. end
  22. local function encodeCFrame(cf) local x,y,z,R00,R01,R02,R10,R11,R12,R20,R21,R22 = cf:GetComponents(); return {x=x,y=y,z=z,R00=R00,R01=R01,R02=R02,R10=R10,R11=R11,R12=R12,R20=R20,R21=R21,R22=R22} end
  23. local function decodeCFrame(t) if type(t)=="table" and t.x and t.R00 then return CFrame.new(t.x,t.y,t.z, t.R00,t.R01,t.R02, t.R10,t.R11,t.R12, t.R20,t.R21,t.R22) end; return nil end
  24. local function saveToDisk() if not hasFS then return end; local out={}; for slot,data in pairs(savedPositions) do if type(slot)=="number" and slot>=1 and slot<=maxSaves and typeof(data.position)=="CFrame" then out[tostring(slot)]={name=data.name or ("Slot "..slot),timestamp=data.timestamp or os.date("%Y-%m-%d %H:%M:%S"),position=encodeCFrame(data.position)} end end; local ok,encoded=pcall(function() return HttpService:JSONEncode(out) end); if ok then pcall(writefile,SAVE_FILE,encoded) end end
  25. local function loadFromDisk() if not hasFS then return end; local ok,content=pcall(readfile,SAVE_FILE); if not ok or type(content)~="string" or #content==0 then return end; local ok2,data=pcall(function() return HttpService:JSONDecode(content) end); if not ok2 or type(data)~="table" then return end; for k,v in pairs(data) do local slot=tonumber(k); if slot and slot>=1 and slot<=maxSaves and type(v)=="table" then local cf=decodeCFrame(v.position); if cf then savedPositions[slot]={position=cf,name=v.name or ("Slot "..slot),timestamp=v.timestamp or os.date("%Y-%m-%d %H:%M:%S")} end end end end
  26. local function teleportTo(cframe) if humanoidRoot and cframe then humanoidRoot.CFrame = cframe; return true end; return false end
  27.  
  28. --================================================================================
  29. -- [INÍCIO DA UI CORRIGIDA E REFINADA]
  30. --================================================================================
  31.  
  32. local function AnimateHover(button, a, b)
  33. button.MouseEnter:Connect(function() TweenService:Create(button, TweenInfo.new(0.2), {BackgroundColor3 = a}):Play() end)
  34. button.MouseLeave:Connect(function() TweenService:Create(button, TweenInfo.new(0.2), {BackgroundColor3 = b}):Play() end)
  35. end
  36.  
  37. local ScreenGui = Instance.new("ScreenGui")
  38. ScreenGui.Name = "SkyTPGui_Cyber_Fixed"
  39. ScreenGui.ResetOnSpawn = false
  40. ScreenGui.Parent = game.CoreGui
  41.  
  42. local MainFrame = Instance.new("Frame")
  43. MainFrame.Size = UDim2.new(0, 450, 0, 350)
  44. MainFrame.Position = UDim2.new(0.5, -225, 0.5, -175)
  45. MainFrame.BackgroundColor3 = Color3.fromRGB(20, 18, 28)
  46. MainFrame.BackgroundTransparency = 0.2
  47. MainFrame.BorderSizePixel = 0
  48. MainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
  49. MainFrame.Active = true
  50. MainFrame.Draggable = true
  51. MainFrame.ClipsDescendants = true
  52. MainFrame.Parent = ScreenGui
  53.  
  54. local UICorner = Instance.new("UICorner", MainFrame); UICorner.CornerRadius = UDim.new(0, 8)
  55. local UIStroke = Instance.new("UIStroke", MainFrame); UIStroke.Color = Color3.fromRGB(120, 90, 255); UIStroke.Thickness = 1.5
  56. local UIGradient_BG = Instance.new("UIGradient", MainFrame)
  57. UIGradient_BG.Color = ColorSequence.new({ColorSequenceKeypoint.new(0, Color3.fromRGB(25, 22, 38)), ColorSequenceKeypoint.new(1, Color3.fromRGB(45, 40, 65))}); UIGradient_BG.Rotation = 90
  58.  
  59. local TopBar = Instance.new("Frame", MainFrame)
  60. TopBar.Size = UDim2.new(1, 0, 0, 40)
  61. TopBar.BackgroundTransparency = 1
  62.  
  63. local TitleLabel = Instance.new("TextLabel", TopBar)
  64. TitleLabel.Size = UDim2.new(1, -45, 1, 0); TitleLabel.Position = UDim2.new(0, 15, 0, 0); TitleLabel.BackgroundTransparency = 1; TitleLabel.Text = "✧ SkyTP"; TitleLabel.TextColor3 = Color3.fromRGB(255, 255, 255); TitleLabel.Font = Enum.Font.GothamSemibold; TitleLabel.TextSize = 18; TitleLabel.TextXAlignment = Enum.TextXAlignment.Left
  65.  
  66. local CloseBtn = Instance.new("TextButton", TopBar)
  67. CloseBtn.Size = UDim2.new(0, 30, 0, 30); CloseBtn.Position = UDim2.new(1, -35, 0.5, -15); CloseBtn.BackgroundColor3 = Color3.fromRGB(45, 40, 65); CloseBtn.Text = "✕"; CloseBtn.Font = Enum.Font.GothamBold; CloseBtn.TextSize = 16; CloseBtn.TextColor3 = Color3.fromRGB(255, 120, 120)
  68. local C1 = Instance.new("UICorner", CloseBtn); C1.CornerRadius = UDim.new(0, 6); AnimateHover(CloseBtn, Color3.fromRGB(255, 100, 100), Color3.fromRGB(45, 40, 65))
  69. CloseBtn.MouseButton1Click:Connect(function() MainFrame.Visible = false end)
  70.  
  71. local OpenBtn = Instance.new("TextButton", ScreenGui)
  72. OpenBtn.Size = UDim2.new(0, 45, 0, 45); OpenBtn.Position = UDim2.new(0, 15, 0.5, -22.5); OpenBtn.BackgroundColor3 = Color3.fromRGB(20, 18, 28); OpenBtn.Text = "✧"; OpenBtn.Font = Enum.Font.GothamBold; OpenBtn.TextSize = 24; OpenBtn.TextColor3 = Color3.fromRGB(120, 90, 255); OpenBtn.Visible = false
  73. local C2 = Instance.new("UICorner", OpenBtn); C2.CornerRadius = UDim.new(0, 8)
  74. local S2 = Instance.new("UIStroke", OpenBtn); S2.Color = Color3.fromRGB(120, 90, 255); S2.Thickness = 1.5
  75. OpenBtn.MouseButton1Click:Connect(function() MainFrame.Visible = true end)
  76. MainFrame:GetPropertyChangedSignal("Visible"):Connect(function() OpenBtn.Visible = not MainFrame.Visible end)
  77.  
  78. local ControlsFrame = Instance.new("Frame", MainFrame)
  79. ControlsFrame.Size = UDim2.new(1, -20, 0, 90); ControlsFrame.Position = UDim2.new(0, 10, 0, 45); ControlsFrame.BackgroundTransparency = 1
  80.  
  81. local SaveButton = Instance.new("TextButton", ControlsFrame)
  82. SaveButton.Text = "Salvar Posição"; SaveButton.Size = UDim2.new(0.5, -5, 1, -50); SaveButton.Position = UDim2.new(0, 0, 0, 0); SaveButton.BackgroundColor3 = Color3.fromRGB(60, 180, 120); SaveButton.Font = Enum.Font.GothamSemibold; SaveButton.TextSize = 16; SaveButton.TextColor3 = Color3.new(1, 1, 1)
  83. local C3 = Instance.new("UICorner", SaveButton); C3.CornerRadius = UDim.new(0, 6); AnimateHover(SaveButton, Color3.fromRGB(80, 220, 140), Color3.fromRGB(60, 180, 120))
  84.  
  85. local NameField = Instance.new("TextBox", ControlsFrame)
  86. NameField.PlaceholderText = "Nome da Posição..."; NameField.Size = UDim2.new(1, 0, 0, 40); NameField.Position = UDim2.new(0, 0, 0, 50); NameField.BackgroundColor3 = Color3.fromRGB(30, 28, 42); NameField.TextColor3 = Color3.new(1, 1, 1); NameField.Font = Enum.Font.Gotham; NameField.TextSize = 14; NameField.PlaceholderColor3 = Color3.fromRGB(150,150,150)
  87. local C4 = Instance.new("UICorner", NameField); C4.CornerRadius = UDim.new(0, 6); local S4 = Instance.new("UIStroke", NameField); S4.Color = Color3.fromRGB(80, 70, 130); S4.Thickness = 1
  88.  
  89. local SaveSlotLabel = Instance.new("TextLabel", ControlsFrame)
  90. SaveSlotLabel.Size = UDim2.new(0.5, -5, 0, 20); SaveSlotLabel.Position = UDim2.new(0.5, 5, 0, 5); SaveSlotLabel.BackgroundTransparency = 1; SaveSlotLabel.TextColor3 = Color3.fromRGB(200, 200, 255); SaveSlotLabel.Font = Enum.Font.Gotham; SaveSlotLabel.TextSize = 14; SaveSlotLabel.Text = "Slot Atual: " .. currentSaveSlot; SaveSlotLabel.TextXAlignment = Enum.TextXAlignment.Left
  91.  
  92. local SlotPrev = Instance.new("TextButton", ControlsFrame)
  93. SlotPrev.Text = "<"; SlotPrev.Size = UDim2.new(0, 35, 0, 30); SlotPrev.Position = UDim2.new(0.5, 5, 0, 22); SlotPrev.BackgroundColor3 = Color3.fromRGB(80, 70, 130); SlotPrev.Font = Enum.Font.GothamBold; SlotPrev.TextSize = 16; SlotPrev.TextColor3 = Color3.new(1, 1, 1)
  94. local C5 = Instance.new("UICorner", SlotPrev); C5.CornerRadius = UDim.new(0, 6); AnimateHover(SlotPrev, Color3.fromRGB(100, 90, 150), Color3.fromRGB(80, 70, 130))
  95.  
  96. local SlotNext = Instance.new("TextButton", ControlsFrame)
  97. SlotNext.Text = ">"; SlotNext.Size = UDim2.new(0, 35, 0, 30); SlotNext.Position = UDim2.new(0.5, 45, 0, 22); SlotNext.BackgroundColor3 = Color3.fromRGB(80, 70, 130); SlotNext.Font = Enum.Font.GothamBold; SlotNext.TextSize = 16; SlotNext.TextColor3 = Color3.new(1, 1, 1)
  98. local C6 = Instance.new("UICorner", SlotNext); C6.CornerRadius = UDim.new(0, 6); AnimateHover(SlotNext, Color3.fromRGB(100, 90, 150), Color3.fromRGB(80, 70, 130))
  99.  
  100. SlotPrev.MouseButton1Click:Connect(function() currentSaveSlot=((currentSaveSlot-2+maxSaves)%maxSaves)+1; SaveSlotLabel.Text="Slot Atual: "..currentSaveSlot end)
  101. SlotNext.MouseButton1Click:Connect(function() currentSaveSlot=(currentSaveSlot%maxSaves)+1; SaveSlotLabel.Text="Slot Atual: "..currentSaveSlot end)
  102.  
  103. local SavedList = Instance.new("ScrollingFrame", MainFrame)
  104. SavedList.Size = UDim2.new(1, -20, 1, -155); SavedList.Position = UDim2.new(0, 10, 0, 145); SavedList.BackgroundTransparency = 1; SavedList.BorderSizePixel = 0; SavedList.ScrollBarThickness = 6; SavedList.ScrollBarImageColor3 = Color3.fromRGB(120, 90, 255); SavedList.CanvasSize = UDim2.new(0, 0, 0, 0)
  105. local ListLayout = Instance.new("UIListLayout", SavedList); ListLayout.Padding = UDim.new(0, 8); ListLayout.SortOrder = Enum.SortOrder.LayoutOrder
  106.  
  107. local function updateSavedList() end
  108. updateSavedList = function()
  109. for _, child in ipairs(SavedList:GetChildren()) do if child:IsA("Frame") or child:IsA("TextButton") then child:Destroy() end end
  110. local sortedSlots = {}; for slot, _ in pairs(savedPositions) do table.insert(sortedSlots, slot) end; table.sort(sortedSlots)
  111.  
  112. for _, slot in ipairs(sortedSlots) do
  113. local data = savedPositions[slot]
  114. local entryFrame = Instance.new("Frame"); entryFrame.Size = UDim2.new(1, 0, 0, 50); entryFrame.BackgroundColor3 = Color3.fromRGB(40, 38, 55); entryFrame.BackgroundTransparency = 0.5; entryFrame.BorderSizePixel = 0; entryFrame.LayoutOrder = slot; entryFrame.Parent = SavedList
  115. local C7 = Instance.new("UICorner", entryFrame); C7.CornerRadius = UDim.new(0, 6)
  116.  
  117. local deleteBtn = Instance.new("TextButton", entryFrame); deleteBtn.Text = "🗑️"; deleteBtn.Size = UDim2.new(0, 30, 0, 30); deleteBtn.Position = UDim2.new(0, 10, 0.5, -15); deleteBtn.BackgroundColor3 = Color3.fromRGB(60, 50, 80); deleteBtn.Font = Enum.Font.GothamBold; deleteBtn.TextSize = 16; deleteBtn.TextColor3 = Color3.fromRGB(255, 150, 150)
  118. local C8 = Instance.new("UICorner", deleteBtn); C8.CornerRadius = UDim.new(0, 6); AnimateHover(deleteBtn, Color3.fromRGB(200, 80, 80), Color3.fromRGB(60, 50, 80))
  119.  
  120. local nameLabel = Instance.new("TextLabel", entryFrame); nameLabel.Size = UDim2.new(1, -100, 0, 20); nameLabel.Position = UDim2.new(0, 50, 0, 5); nameLabel.BackgroundTransparency = 1; nameLabel.TextColor3 = Color3.fromRGB(220, 220, 255); nameLabel.Font = Enum.Font.Gotham; nameLabel.TextSize = 15; nameLabel.TextXAlignment = Enum.TextXAlignment.Left; nameLabel.Text = string.format("Slot %d: %s", slot, data.name)
  121. local timeLabel = Instance.new("TextLabel", entryFrame); timeLabel.Size = UDim2.new(1, -100, 0, 15); timeLabel.Position = UDim2.new(0, 50, 0, 25); timeLabel.BackgroundTransparency = 1; timeLabel.TextColor3 = Color3.fromRGB(150, 150, 180); timeLabel.Font = Enum.Font.Gotham; timeLabel.TextSize = 12; timeLabel.TextXAlignment = Enum.TextXAlignment.Left; timeLabel.Text = data.timestamp
  122.  
  123. local teleportBtn = Instance.new("TextButton", entryFrame)
  124. teleportBtn.Text = "TP 🚀" -- CORREÇÃO DO ERRO ESTAVA AQUI
  125. teleportBtn.Size = UDim2.new(0, 40, 0, 40)
  126. teleportBtn.Position = UDim2.new(1, -45, 0.5, -20)
  127. teleportBtn.BackgroundColor3 = Color3.fromRGB(120, 90, 255)
  128. teleportBtn.Font = Enum.Font.GothamBold
  129. teleportBtn.TextSize = 18
  130. teleportBtn.TextColor3 = Color3.new(1, 1, 1)
  131. local C9 = Instance.new("UICorner", teleportBtn); C9.CornerRadius = UDim.new(0, 6); AnimateHover(teleportBtn, Color3.fromRGB(140, 110, 255), Color3.fromRGB(120, 90, 255))
  132.  
  133. teleportBtn.MouseButton1Click:Connect(function()
  134. if teleportTo(data.position) then teleportBtn.Text = "✅"; TweenService:Create(teleportBtn,TweenInfo.new(0.2),{BackgroundColor3=Color3.fromRGB(80,200,120)}):Play(); task.wait(1); if teleportBtn.Parent then teleportBtn.Text = "TP 🚀"; TweenService:Create(teleportBtn,TweenInfo.new(0.2),{BackgroundColor3=Color3.fromRGB(120,90,255)}):Play() end
  135. else teleportBtn.Text = "❌"; TweenService:Create(teleportBtn,TweenInfo.new(0.2),{BackgroundColor3=Color3.fromRGB(200,80,80)}):Play(); task.wait(1); if teleportBtn.Parent then teleportBtn.Text = "TP 🚀"; TweenService:Create(teleportBtn,TweenInfo.new(0.2),{BackgroundColor3=Color3.fromRGB(120,90,255)}):Play() end end
  136. end)
  137. deleteBtn.MouseButton1Click:Connect(function() savedPositions[slot] = nil; saveToDisk(); updateSavedList() end)
  138. end
  139. ListLayout.Parent = nil; ListLayout.Parent = SavedList
  140. end
  141.  
  142. --================================================================================
  143. -- [FIM DA UI CORRIGIDA]
  144. --================================================================================
  145.  
  146. SaveButton.MouseButton1Click:Connect(function()
  147. if humanoidRoot then
  148. local name=NameField.Text; savedPositions[currentSaveSlot]={position=humanoidRoot.CFrame,name=(#name>0) and name or ("Slot "..currentSaveSlot),timestamp=os.date("%Y-%m-%d %H:%M:%S")}; saveToDisk(); updateSavedList(); SaveButton.Text="Salvo!"; TweenService:Create(SaveButton,TweenInfo.new(0.2),{BackgroundColor3=Color3.fromRGB(80,220,140)}):Play(); task.wait(1.5); SaveButton.Text="Salvar Posição"; TweenService:Create(SaveButton,TweenInfo.new(0.2),{BackgroundColor3=Color3.fromRGB(60,180,120)}):Play()
  149. else
  150. SaveButton.Text="Erro!"; TweenService:Create(SaveButton,TweenInfo.new(0.2),{BackgroundColor3=Color3.fromRGB(200,80,80)}):Play(); task.wait(1.5); SaveButton.Text="Salvar Posição"; TweenService:Create(SaveButton,TweenInfo.new(0.2),{BackgroundColor3=Color3.fromRGB(60,180,120)}):Play()
  151. end
  152. end)
  153.  
  154. loadFromDisk()
  155. updateSavedList()
  156.  
  157. Players.LocalPlayer.CharacterAdded:Connect(function(character)
  158. chr = character
  159. humanoidRoot = character:WaitForChild("HumanoidRootPart")
  160. end)
Advertisement
Add Comment
Please, Sign In to add comment