Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
HttpService = :()
TweenService = :()
Workspace = :()
StarterGui = :()
Selection = :()
player = Players.LocalPlayer
character = player.Character player.CharacterAdded:()
humanoidRootPart = character:()
CLONE_DISTANCE =
FOLDER_NAME =
myClone, isRecording, recordingType = , ,
recordedFrames, recordedFramesBoth_Player, recordedFramesBoth_Model = {}, {}, {}
recordConnection, replayConnection, isReplaying = , ,
playerBodyParts, modelBodyParts = {}, {}
dragging, dragInput, dragStart, startPos = , , ,
selectedModel, originalMotorStates = , {}
sourceAnimType =
bodyPartNames = {
, , , , , , ,
, , , , ,
, , , , ,
, , ,
}
r6PartNames = {, , , , , , }
r15ToR6LimbMap = {
[] = {, , },
[] = {, , },
[] = {, , },
[] = {, , },
[] = {, },
[] = {},
[] = {}
}
(model)
model
model:(, )
model:(, )
(r15Frame)
r6Frame = {}
r6PartName, r15Parts (r15ToR6LimbMap)
validCFrames = {}
_, r15PartName (r15Parts)
r15Frame[r15PartName]
.(validCFrames, r15Frame[r15PartName].CFrame)
#validCFrames >
#validCFrames ==
r6Frame[r6PartName] = { = validCFrames[]}
totalPos = .(, , )
i, cframe (validCFrames)
totalPos = totalPos + cframe.Position * ( / #validCFrames)
_, _, _, r00, r01, r02, r10, r11, r12, r20, r21, r22 = validCFrames[]:()
r6Frame[r6PartName] = { = .(, , , r00, r01, r02, r10, r11, r12, r20, r21, r22) + totalPos}
r6Frame
(frames, sourceType)
sourceType == sourceType == frames
converted = {}
i, frame (frames)
converted[i] = (frame)
converted
HasFileSystem = ( (writefile ().writefile)) ~=
IS_STUDIO = HasFileSystem
FileSystem = {}
IS_STUDIO
OutputFolder = Workspace:()
OutputFolder
OutputFolder = .()
OutputFolder.Name =
OutputFolder.Parent = Workspace
FileSystem.Enabled =
FileSystem.IsFolder = ()
FileSystem.MakeFolder = ()
FileSystem.List = ()
files = {}
_, child (OutputFolder:())
child:()
.(files, FOLDER_NAME .. .. child.Name .. )
files
FileSystem.Write = (path, data)
filename = path:()
mod = OutputFolder:(filename) .()
mod.Name = filename
mod.Parent = OutputFolder
mod.Source = .. data:(, ):(, ) ..
FileSystem.Read = (path)
mod = OutputFolder:(path:())
mod
func = (mod.Source)
func ()
FileSystem = {
Enabled = ,
Write = writefile ().writefile,
Read = readfile ().readfile,
List = listfiles ().listfiles,
IsFolder = isfolder ().isfolder,
MakeFolder = makefolder ().makefolder
}
FileSystem.(FOLDER_NAME)
FileSystem.(FOLDER_NAME)
(model, highlight)
model
_, part (model:())
part:()
highlight
part:()
h = .()
h.Name =
h.Adornee = part
h.LineThickness =
h.Color3 = .(, , )
h.Parent = part
h = part:()
h h:()
(model)
model
selectedModel (selectedModel, )
selectedModel = model
(selectedModel, )
modelType = (selectedModel)
StarterGui:(, {
Title = .. modelType .. ;
Text = selectedModel.Name;
Duration = ;
})
originalMotorStates = {}
_, child (selectedModel:())
child:()
originalMotorStates[child] = {
Part0 = child.Part0, Part1 = child.Part1,
C0 = child.C0, C1 = child.C1, Parent = child.Parent
}
modelBodyParts = {}
_, child (selectedModel:())
child:()
.(modelBodyParts, child)
()
success, selection = (() Selection:() )
success selection #selection >
target = selection[]
model = target:() target target:()
model model ~= player.Character
(model)
(clone)
clone
cloneHumanoid = clone:()
cloneHumanoid
success, desc = (()
Players:(player.UserId)
)
success desc
(()
cloneHumanoid:(desc)
)
()
dummy = .()
dummy.Name =
hrp = .()
hrp.Name =
hrp.Size = .(, , )
hrp.Transparency =
hrp.CanCollide =
hrp.Parent = dummy
humanoid = .()
humanoid.DisplayDistanceType = .HumanoidDisplayDistanceType.None
humanoid.Parent = dummy
(name, size)
part = .()
part.Name = name
part.Size = size
part.TopSurface = .SurfaceType.Smooth
part.BottomSurface = .SurfaceType.Smooth
part.CanCollide =
part.Parent = dummy
part
(name, part0, part1, c0, c1)
motor = .()
motor.Name = name
motor.Part0 = part0
motor.Part1 = part1
motor.C0 = c0
motor.C1 = c1
motor.Parent = part0
motor
head = (, .(, , ))
headMesh = .()
headMesh.MeshType = .MeshType.Head
headMesh.Scale = .(, , )
headMesh.Parent = head
torso = (, .(, , ))
leftArm = (, .(, , ))
rightArm = (, .(, , ))
leftLeg = (, .(, , ))
rightLeg = (, .(, , ))
(, torso, head, .(, , ), .(, -, ))
(, torso, leftArm, .(-, , ), .(, , ))
(, torso, rightArm, .(, , ), .(-, , ))
(, torso, leftLeg, .(-, -, ), .(, , ))
(, torso, rightLeg, .(, -, ), .(, , ))
(, hrp, torso, .(, , ), .(, , ))
dummy.PrimaryPart = hrp
dummy
()
myClone myClone:()
player.Character
character = player.Character
humanoidRootPart = character:()
humanoidRootPart
myClone = ()
cloneRoot = myClone:()
cloneRoot
cloneRoot.CFrame = humanoidRootPart.CFrame * .(, , -CLONE_DISTANCE)
cloneRoot.CFrame = .(cloneRoot.Position, humanoidRootPart.Position)
myClone.Parent =
.()
(myClone)
(frames, animType)
data = {animType = animType, frames = {}}
i, frame (frames)
data.frames[i] = {}
partName, partData (frame)
data.frames[i][partName] = {partData.CFrame:()}
HttpService:(data)
(jsonString)
rawData = HttpService:(jsonString)
rawData.animType rawData.frames
frames = {}
i, rawFrame (rawData.frames)
frames[i] = {}
partName, components (rawFrame)
frames[i][partName] = { = .((components))}
frames, rawData.animType
frames = {}
frameData = rawData.frames rawData
i, rawFrame (frameData)
frames[i] = {}
partName, components (rawFrame)
frames[i][partName] = { = .((components))}
frames,
()
screenGui = .()
screenGui.Name =
screenGui.ResetOnSpawn =
screenGui.Parent = player:()
mainFrame = .()
mainFrame.Size = .(, , , )
mainFrame.Position = .(, -, , -)
mainFrame.BackgroundColor3 = .(, , )
mainFrame.BorderSizePixel =
mainFrame.BorderColor3 = .(, , )
mainFrame.Parent = screenGui
titleBar = .()
titleBar.Size = .(, , , )
titleBar.BackgroundColor3 = .(, , )
titleBar.BorderSizePixel =
titleBar.Parent = mainFrame
titleLabel = .()
titleLabel.Size = .(, -, , )
titleLabel.Position = .(, , , )
titleLabel.BackgroundTransparency =
titleLabel.Text =
titleLabel.TextColor3 = .(, , )
titleLabel.TextSize =
titleLabel.Font = .Font.SourceSans
titleLabel.TextXAlignment = .TextXAlignment.Left
titleLabel.Parent = titleBar
titleBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
dragging =
dragStart = input.Position
startPos = mainFrame.Position
input.Changed:(()
input.UserInputState == .UserInputState.End
dragging =
)
)
titleBar.InputChanged:((input)
input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch
dragInput = input
)
UserInputService.InputChanged:((input)
input == dragInput dragging
delta = input.Position - dragStart
mainFrame.Position = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
)
statusLabel = .()
statusLabel.Size = .(, -, , )
statusLabel.Position = .(, , , )
statusLabel.BackgroundColor3 = .(, , )
statusLabel.BorderSizePixel =
statusLabel.BorderColor3 = .(, , )
statusLabel.Text =
statusLabel.TextColor3 = .(, , )
statusLabel.TextSize =
statusLabel.Font = .Font.Code
statusLabel.TextXAlignment = .TextXAlignment.Left
statusLabel.Parent = mainFrame
(text, pos, color)
btn = .()
btn.Size = .(, -, , )
btn.Position = pos
btn.BackgroundColor3 = color
btn.BorderSizePixel =
btn.BorderColor3 = .(
.(, color.R * - ),
.(, color.G * - ),
.(, color.B * - )
)
btn.Text = text
btn.TextColor3 = .(, , )
btn.TextSize =
btn.Font = .Font.SourceSansBold
btn.Parent = mainFrame
btn.MouseButton1Down:(()
btn.BackgroundColor3 = .(
.(, color.R * - ),
.(, color.G * - ),
.(, color.B * - )
)
)
btn.MouseButton1Up:(()
btn.BackgroundColor3 = color
)
btn.MouseLeave:(()
btn.BackgroundColor3 = color
)
btn
btnPlayer = (, .(, , , ), .(, , ))
btnModel = (, .(, , , ), .(, , ))
btnBoth = (, .(, , , ), .(, , ))
separator1 = .()
separator1.Size = .(, -, , )
separator1.Position = .(, , , )
separator1.BackgroundColor3 = .(, , )
separator1.BorderSizePixel =
separator1.Parent = mainFrame
btnStop = (, .(, , , ), .(, , ))
btnRefresh = (, .(, , , ), .(, , ))
separator2 = .()
separator2.Size = .(, -, , )
separator2.Position = .(, , , )
separator2.BackgroundColor3 = .(, , )
separator2.BorderSizePixel =
separator2.Parent = mainFrame
inputName = .()
inputName.Size = .(, -, , )
inputName.Position = .(, , , )
inputName.Text =
inputName.PlaceholderText =
inputName.BackgroundColor3 = .(, , )
inputName.BorderSizePixel =
inputName.BorderColor3 = .(, , )
inputName.TextColor3 = .(, , )
inputName.PlaceholderColor3 = .(, , )
inputName.TextSize =
inputName.Font = .Font.Code
inputName.Parent = mainFrame
.(, inputName).PaddingLeft = .(, )
btnSave = (, .(, , , ), .(, , ))
btnLoad = (, .(, , , ), .(, , ))
listFrame = .()
listFrame.Size = .(, -, , )
listFrame.Position = .(, , , )
listFrame.BackgroundColor3 = .(, , )
listFrame.BorderSizePixel =
listFrame.BorderColor3 = .(, , )
listFrame.ScrollBarThickness =
listFrame.ScrollBarImageColor3 = .(, , )
listFrame.CanvasSize = .(, , , )
listFrame.AutomaticCanvasSize = .AutomaticSize.Y
listFrame.Parent = mainFrame
listLayout = .()
listLayout.Padding = .(, )
listLayout.Parent = listFrame
listPadding = .()
listPadding.PaddingTop = .(, )
listPadding.PaddingBottom = .(, )
listPadding.PaddingLeft = .(, )
listPadding.PaddingRight = .(, )
listPadding.Parent = listFrame
mainFrame, statusLabel, btnPlayer, btnModel, btnBoth, btnStop, btnSave, inputName, btnLoad, listFrame, btnRefresh
mainGUI, statusLabel, btnPlayer, btnModel, btnBoth, btnStop, btnSave, inputName, btnLoad, listFrame, btnRefresh = ()
(text, color)
statusLabel.Text = .. text
color statusLabel.TextColor3 = color
(model)
model
_, desc (model:())
desc:() desc.Part1 =
(model)
model
_, desc (model:())
desc:() originalMotorStates[desc]
state = originalMotorStates[desc]
desc.Part0, desc.Part1, desc.C0, desc.C1, desc.Parent = state.Part0, state.Part1, state.C0, state.C1, state.Parent
(mode)
isRecording
isRecording =
recordingType = mode
recordedFrames, recordedFramesBoth_Player, recordedFramesBoth_Model = {}, {}, {}
mode ==
sourceAnimType = (player.Character)
mode == selectedModel
sourceAnimType = (selectedModel)
sourceAnimType =
playerBodyParts = {}
player.Character
_, n (bodyPartNames)
p = player.Character:(n)
p .(playerBodyParts, p)
modelBodyParts = {}
selectedModel
_, child (selectedModel:())
child:() .(modelBodyParts, child)
(selectedModel)
( .. sourceAnimType .. , .(, , ))
recordConnection = RunService.RenderStepped:(()
mode == mode ==
f = {}
_, p (playerBodyParts)
p p.Parent f[p.Name] = { = p.CFrame}
mode == .(recordedFrames, f)
mode == .(recordedFramesBoth_Player, f)
mode == mode ==
selectedModel
f = {}
_, p (modelBodyParts)
p p.Parent f[p.Name] = { = p.CFrame}
mode == .(recordedFrames, f)
mode == .(recordedFramesBoth_Model, f)
)
()
isRecording
isRecording =
recordConnection recordConnection:()
selectedModel (selectedModel)
(, .(, , ))
(data)
isRecording isReplaying data #data ==
myClone (); ()
isReplaying =
framesToPlay = (data, sourceAnimType)
conversionMsg = sourceAnimType ==
( .. conversionMsg, .(, , ))
cloneRoot = myClone:()
cloneRoot cloneRoot.Anchored =
_, partName (r6PartNames)
p = myClone:(partName)
p
_, d (myClone:())
d:() d.Part1 == p d:()
recStart = framesToPlay[][] framesToPlay[][].CFrame .()
offsetMatrix = cloneRoot.CFrame * recStart:()
frameIndex =
replayConnection = RunService.RenderStepped:(()
frameIndex <= #framesToPlay myClone myClone.Parent
frameData = framesToPlay[frameIndex]
_, partName (r6PartNames)
p = myClone:(partName)
p frameData[partName]
p.CFrame = offsetMatrix * frameData[partName].CFrame
frameIndex = frameIndex +
replayConnection replayConnection:()
isReplaying =
()
(, .(, , ))
)
()
() selectedModel ~=
btnRefresh.MouseButton1Click:(()
()
(, .(, , ))
(, .(, , ))
)
btnPlayer.MouseButton1Click:(() () )
btnModel.MouseButton1Click:(()
()
(, .(, , ))
()
)
btnBoth.MouseButton1Click:(()
()
(, .(, , ))
()
)
btnStop.MouseButton1Click:(stopRecording)
btnSave.MouseButton1Click:(()
isRecording ()
name = inputName.Text ~= inputName.Text .. .()
recordingType == recordingType ==
#recordedFrames >
FileSystem.(FOLDER_NAME .. .. name .. , (recordedFrames, sourceAnimType))
( .. name, .(, , ))
recordingType ==
playerType = (player.Character)
#recordedFramesBoth_Player >
FileSystem.(FOLDER_NAME .. .. name .. , (recordedFramesBoth_Player, playerType))
#recordedFramesBoth_Model >
FileSystem.(FOLDER_NAME .. .. name .. , (recordedFramesBoth_Model, sourceAnimType))
(, .(, , ))
()
)
()
_, v (listFrame:())
v:() v:()
files = FileSystem.(FOLDER_NAME)
files
_, path (files)
fileName = path:()
fileName
btn = .()
btn.Size = .(, -, , )
btn.BackgroundColor3 = .(, , )
btn.BorderSizePixel =
btn.Text = .. fileName
btn.TextColor3 = .(, , )
btn.TextSize =
btn.Font = .Font.Code
btn.TextXAlignment = .TextXAlignment.Left
btn.Parent = listFrame
btn.MouseEnter:(()
btn.BackgroundColor3 = .(, , )
)
btn.MouseLeave:(()
btn.BackgroundColor3 = .(, , )
)
btn.MouseButton1Click:(()
recordedFrames, sourceAnimType = (FileSystem.(path))
( .. fileName, .(, , ))
)
btnLoad.MouseButton1Click:(() (recordedFrames) )
UserInputService.InputBegan:((input, processed)
processed
input.KeyCode == .KeyCode.T ()
)
()
()
StarterGui:(, {
Title = ;
Text = ;
Duration = ;
})lets u steal any games animation by recording it and it will save all of the keyframes and stuff and let u save it and even test it on a r6 rig and converts r15 animations to r6 for testing on the model

Universal