Advertisement
reefuuh

TAS

Dec 19th, 2024 (edited)
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.84 KB | None | 0 0
  1. local Running = false
  2. local Frames = {}
  3. local TimeStart = tick()
  4. local HttpService = game:GetService("HttpService")
  5. local RunService = game:GetService("RunService")
  6. local Player = game:GetService("Players").LocalPlayer
  7.  
  8. local WalkConnection
  9.  
  10. local getChar = function()
  11.     local Character = Player.Character
  12.     if Character then
  13.         return Character
  14.     else
  15.         Player.CharacterAdded:Wait()
  16.         return getChar()
  17.     end
  18. end
  19.  
  20. local function CreateFolder()
  21.     if not isfolder("Gravações") then
  22.         makefolder("Gravações")
  23.     end
  24. end
  25.  
  26. local function StartRecord()
  27.     Frames = {}
  28.     Running = true
  29.     TimeStart = tick()
  30.     while Running do
  31.         RunService.Heartbeat:Wait()
  32.         local Character = getChar()
  33.         local HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
  34.         local Humanoid = Character:FindFirstChild("Humanoid")
  35.         if HumanoidRootPart and Humanoid then
  36.             table.insert(Frames, {
  37.                 {HumanoidRootPart.CFrame:GetComponents()},
  38.                 Humanoid:GetState().Value,
  39.                 tick() - TimeStart
  40.             })
  41.         end
  42.     end
  43. end
  44.  
  45. local function StopRecord()
  46.     Running = false
  47. end
  48.  
  49. local function StartWalking()
  50.     WalkConnection = RunService.RenderStepped:Connect(function()
  51.         local Character = getChar()
  52.         if Character and Character:FindFirstChild("Humanoid") then
  53.             Character:FindFirstChild("Humanoid"):Move(Vector3.new(0, 0, -1), true)
  54.         end
  55.     end)
  56. end
  57.  
  58. local function StopWalking()
  59.     if WalkConnection then
  60.         WalkConnection:Disconnect()
  61.         WalkConnection = nil
  62.     end
  63. end
  64.  
  65. local function MoveToInitialPosition(initialCFrame, callback)
  66.     local Character = getChar()
  67.     if Character then
  68.         local HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
  69.         if HumanoidRootPart then
  70.             local targetPosition = initialCFrame.Position
  71.             local humanoid = Character:FindFirstChild("Humanoid")
  72.            
  73.             humanoid:MoveTo(targetPosition)
  74.             humanoid.MoveToFinished:Wait()
  75.  
  76.             local targetOrientation = initialCFrame.Position - HumanoidRootPart.Position
  77.             local initialOrientation = HumanoidRootPart.CFrame.LookVector
  78.             local elapsedTime = 0
  79.             local rotationDuration = 0.5  -- Duração da rotação suave
  80.  
  81.             RunService.RenderStepped:Connect(function(dt)
  82.                 elapsedTime = elapsedTime + dt
  83.                 if elapsedTime <= rotationDuration then
  84.                     local alpha = elapsedTime / rotationDuration
  85.                     local currentOrientation = initialOrientation:Lerp(targetOrientation, alpha)
  86.                     HumanoidRootPart.CFrame = CFrame.lookAt(HumanoidRootPart.Position, HumanoidRootPart.Position + currentOrientation)
  87.                 end
  88.             end)
  89.  
  90.             if callback then
  91.                 callback()
  92.             end
  93.         end
  94.     end
  95. end
  96.  
  97. local function PlayTAS()
  98.     local Character = getChar()
  99.     local initialCFrame = CFrame.new(unpack(Frames[1][1]))
  100.  
  101.     MoveToInitialPosition(initialCFrame, function()
  102.         StartWalking()
  103.         wait(0.1)
  104.         local TimePlay = tick()
  105.         local FrameCount = #Frames
  106.         local OldFrame = 1
  107.         local TASLoop
  108.  
  109.         TASLoop = RunService.Heartbeat:Connect(function()
  110.             local NewFrames = OldFrame + 60
  111.             local CurrentTime = tick()
  112.             if (CurrentTime - TimePlay) >= Frames[FrameCount][3] then
  113.                 TASLoop:Disconnect()
  114.                 StopWalking()
  115.             end
  116.             for i = OldFrame, NewFrames do
  117.                 local Frame = Frames[i]
  118.                 if Frame and Frame[1] and type(Frame[1]) == "table" and Frame[2] and Frame[3] then
  119.                     if Frame[3] <= CurrentTime - TimePlay then
  120.                         OldFrame = i
  121.                         local HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
  122.                         local Humanoid = Character:FindFirstChild("Humanoid")
  123.                         if HumanoidRootPart and Humanoid then
  124.                             HumanoidRootPart.CFrame = CFrame.new(unpack(Frame[1]))
  125.                             Humanoid:ChangeState(Frame[2])
  126.                         end
  127.                     end
  128.                 end
  129.             end
  130.         end)
  131.     end)
  132. end
  133.  
  134. local function LoadDrRay()
  135.     local DrRayLibrary = loadstring(game:HttpGet("https://raw.githubusercontent.com/AZYsGithub/DrRay-UI-Library/main/DrRay.lua"))()
  136.  
  137.     local window = DrRayLibrary:Load("Macroability", "Default")
  138.  
  139.     local tab1 = DrRayLibrary.newTab("Main", "18155304028")
  140.  
  141.     tab1.newLabel("Gravação")
  142.  
  143.     tab1.newButton("Iniciar gravação", "Inicia a gravação", function()
  144.         StartRecord()
  145.     end)
  146.  
  147.     tab1.newButton("Parar gravação", "Para a gravação", function()
  148.         StopRecord()
  149.     end)
  150.  
  151.     tab1.newButton("Reproduzir gravação", "Reproduz a gravação", function()
  152.         PlayTAS()
  153.     end)
  154.  
  155.     local ConfigName
  156.     tab1.newInput("Nome da gravação", "Insira o nome da gravação", function(text)
  157.         ConfigName = tostring(text)
  158.     end)
  159.  
  160.     tab1.newButton("Salvar gravação", "Salva a gravação com o nome especificado", function()
  161.         CreateFolder()
  162.         if ConfigName and ConfigName ~= "" then
  163.             local Json = HttpService:JSONEncode(Frames)
  164.             writefile("Gravações/"..ConfigName..".json", Json)
  165.             print("Configuração salva em Gravações/"..ConfigName..".json")
  166.         else
  167.             print("Dê um nome válido para a configuração.")
  168.         end
  169.     end)
  170.  
  171.     tab1.newButton("Carregar gravação", "Carrega a gravação com o nome especificado", function()
  172.         CreateFolder()
  173.         if ConfigName and ConfigName ~= "" then
  174.             local FilePath = "Gravações/"..ConfigName..".json"
  175.             if isfile(FilePath) then
  176.                 local FileContent = readfile(FilePath)
  177.                 local Success, Decoded = pcall(function()
  178.                     return HttpService:JSONDecode(FileContent)
  179.                 end)
  180.                 if Success and type(Decoded) == "table" then
  181.                     Frames = Decoded
  182.                     print("Configuração carregada:", Frames)
  183.                 else
  184.                     print("Falha ao decodificar o JSON ou estrutura inválida.")
  185.                 end
  186.             else
  187.                 print("O arquivo nomeado não foi encontrado na pasta de gravações.")
  188.             end
  189.         else
  190.             print("Dê um nome válido para a configuração.")
  191.         end
  192.     end)
  193.  
  194.     local tab2 = DrRayLibrary.newTab("Créditos", "13025876355")
  195.  
  196.     tab2.newLabel("Crédito: tomato.txt - Tasability")
  197.     tab2.newLabel("Crédito: Replayability")
  198.     tab2.newLabel("Reformulação por: sanctuaryangels")
  199. end
  200.  
  201. LoadDrRay()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement