Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Running = false
- local Frames = {}
- local TimeStart = tick()
- local HttpService = game:GetService("HttpService")
- local RunService = game:GetService("RunService")
- local Player = game:GetService("Players").LocalPlayer
- local WalkConnection
- local getChar = function()
- local Character = Player.Character
- if Character then
- return Character
- else
- Player.CharacterAdded:Wait()
- return getChar()
- end
- end
- local function CreateFolder()
- if not isfolder("Gravações") then
- makefolder("Gravações")
- end
- end
- local function StartRecord()
- Frames = {}
- Running = true
- TimeStart = tick()
- while Running do
- RunService.Heartbeat:Wait()
- local Character = getChar()
- local HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
- local Humanoid = Character:FindFirstChild("Humanoid")
- if HumanoidRootPart and Humanoid then
- table.insert(Frames, {
- {HumanoidRootPart.CFrame:GetComponents()},
- Humanoid:GetState().Value,
- tick() - TimeStart
- })
- end
- end
- end
- local function StopRecord()
- Running = false
- end
- local function StartWalking()
- WalkConnection = RunService.RenderStepped:Connect(function()
- local Character = getChar()
- if Character and Character:FindFirstChild("Humanoid") then
- Character:FindFirstChild("Humanoid"):Move(Vector3.new(0, 0, -1), true)
- end
- end)
- end
- local function StopWalking()
- if WalkConnection then
- WalkConnection:Disconnect()
- WalkConnection = nil
- end
- end
- local function MoveToInitialPosition(initialCFrame, callback)
- local Character = getChar()
- if Character then
- local HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
- if HumanoidRootPart then
- local targetPosition = initialCFrame.Position
- local humanoid = Character:FindFirstChild("Humanoid")
- humanoid:MoveTo(targetPosition)
- humanoid.MoveToFinished:Wait()
- local targetOrientation = initialCFrame.Position - HumanoidRootPart.Position
- local initialOrientation = HumanoidRootPart.CFrame.LookVector
- local elapsedTime = 0
- local rotationDuration = 0.5 -- Duração da rotação suave
- RunService.RenderStepped:Connect(function(dt)
- elapsedTime = elapsedTime + dt
- if elapsedTime <= rotationDuration then
- local alpha = elapsedTime / rotationDuration
- local currentOrientation = initialOrientation:Lerp(targetOrientation, alpha)
- HumanoidRootPart.CFrame = CFrame.lookAt(HumanoidRootPart.Position, HumanoidRootPart.Position + currentOrientation)
- end
- end)
- if callback then
- callback()
- end
- end
- end
- end
- local function PlayTAS()
- local Character = getChar()
- local initialCFrame = CFrame.new(unpack(Frames[1][1]))
- MoveToInitialPosition(initialCFrame, function()
- StartWalking()
- wait(0.1)
- local TimePlay = tick()
- local FrameCount = #Frames
- local OldFrame = 1
- local TASLoop
- TASLoop = RunService.Heartbeat:Connect(function()
- local NewFrames = OldFrame + 60
- local CurrentTime = tick()
- if (CurrentTime - TimePlay) >= Frames[FrameCount][3] then
- TASLoop:Disconnect()
- StopWalking()
- end
- for i = OldFrame, NewFrames do
- local Frame = Frames[i]
- if Frame and Frame[1] and type(Frame[1]) == "table" and Frame[2] and Frame[3] then
- if Frame[3] <= CurrentTime - TimePlay then
- OldFrame = i
- local HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
- local Humanoid = Character:FindFirstChild("Humanoid")
- if HumanoidRootPart and Humanoid then
- HumanoidRootPart.CFrame = CFrame.new(unpack(Frame[1]))
- Humanoid:ChangeState(Frame[2])
- end
- end
- end
- end
- end)
- end)
- end
- local function LoadDrRay()
- local DrRayLibrary = loadstring(game:HttpGet("https://raw.githubusercontent.com/AZYsGithub/DrRay-UI-Library/main/DrRay.lua"))()
- local window = DrRayLibrary:Load("Macroability", "Default")
- local tab1 = DrRayLibrary.newTab("Main", "18155304028")
- tab1.newLabel("Gravação")
- tab1.newButton("Iniciar gravação", "Inicia a gravação", function()
- StartRecord()
- end)
- tab1.newButton("Parar gravação", "Para a gravação", function()
- StopRecord()
- end)
- tab1.newButton("Reproduzir gravação", "Reproduz a gravação", function()
- PlayTAS()
- end)
- local ConfigName
- tab1.newInput("Nome da gravação", "Insira o nome da gravação", function(text)
- ConfigName = tostring(text)
- end)
- tab1.newButton("Salvar gravação", "Salva a gravação com o nome especificado", function()
- CreateFolder()
- if ConfigName and ConfigName ~= "" then
- local Json = HttpService:JSONEncode(Frames)
- writefile("Gravações/"..ConfigName..".json", Json)
- print("Configuração salva em Gravações/"..ConfigName..".json")
- else
- print("Dê um nome válido para a configuração.")
- end
- end)
- tab1.newButton("Carregar gravação", "Carrega a gravação com o nome especificado", function()
- CreateFolder()
- if ConfigName and ConfigName ~= "" then
- local FilePath = "Gravações/"..ConfigName..".json"
- if isfile(FilePath) then
- local FileContent = readfile(FilePath)
- local Success, Decoded = pcall(function()
- return HttpService:JSONDecode(FileContent)
- end)
- if Success and type(Decoded) == "table" then
- Frames = Decoded
- print("Configuração carregada:", Frames)
- else
- print("Falha ao decodificar o JSON ou estrutura inválida.")
- end
- else
- print("O arquivo nomeado não foi encontrado na pasta de gravações.")
- end
- else
- print("Dê um nome válido para a configuração.")
- end
- end)
- local tab2 = DrRayLibrary.newTab("Créditos", "13025876355")
- tab2.newLabel("Crédito: tomato.txt - Tasability")
- tab2.newLabel("Crédito: Replayability")
- tab2.newLabel("Reformulação por: sanctuaryangels")
- end
- LoadDrRay()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement