Run it
Copy the script and paste it into your executor.
AssetService = :()
Selection = :()
ScriptEditorService = :()
ServerStorage = :()
KeyframeSequenceProvider = :()
CoreGui = :()
prup = {
, , , , , ,
, , , , , ,
, , , , ,
, , ,
}
x_prup = {
Part = {},
MeshPart = {, , , , },
SpecialMesh = {, , , , , },
Decal = {, , , , },
Texture = {, , , , , , , , },
SurfaceAppearance = {, , , , },
CharacterMesh = {, , , },
Tool = {, , , , , , , , , },
Accessory = {, },
Accoutrement = {},
Shirt = {, },
Pants = {, },
ShirtGraphic = {, },
Humanoid = {
, , , , ,
, , , ,
, , ,
, , ,
},
Animation = {},
Animator = {},
AnimationController = {},
Bone = {, },
BodyColors = {, , , , , },
KeyframeSequence = {, },
Keyframe = {},
Pose = {, , , },
NumberPose = {, , , },
KeyframeMarker = {},
ProximityPrompt = {
, , , ,
, , , ,
, , , ,
},
ClickDetector = {, },
Dialog = {, , , , },
DialogChoice = {, , },
Script = {, , },
LocalScript = {, },
ModuleScript = {},
Motor6D = {, , , , , },
Weld = {, , },
ManualWeld = {, , },
WeldConstraint = {},
Snap = {, , },
Attachment = {, },
NoCollisionConstraint = {},
BallSocketConstraint = {, , , , , , , },
HingeConstraint = {, , , , , , , , , , },
PrismaticConstraint = {, , , , , , , , , , , , },
CylindricalConstraint = {, , , , , , , , , , , , , , , , , , , , , , , , },
RodConstraint = {, , , },
RopeConstraint = {, , , , },
SpringConstraint = {, , , , , , , , , , },
AlignPosition = {, , , , , , , , },
AlignOrientation = {, , , , , , , , , },
LinearVelocity = {, , , , },
AngularVelocity = {, , , , },
VectorForce = {, , , },
Torque = {, , },
PointLight = {, , , , },
SpotLight = {, , , , , , },
SurfaceLight = {, , , , , , },
Sound = {, , , , , , , },
ParticleEmitter = {
, , , , , , , ,
, , , , ,
, , , , , ,
},
Beam = {
, , , , , , ,
, , , , , ,
, ,
},
Trail = {
, , , , , , ,
, , , , ,
},
Highlight = {, , , , , },
Fire = {, , , , },
Smoke = {, , , , },
Sparkles = {, },
BillboardGui = {
, , , ,
, , , , ,
, , , , ,
},
SurfaceGui = {
, , , , ,
, , , , ,
},
ScreenGui = {, , , },
Frame = {, , , , , , , , , , , },
TextLabel = {
, , , , , , ,
, , , , ,
, , , , ,
, , , , , , ,
},
TextButton = {
, , , , , , ,
, , , , ,
, , , , ,
, , , , , , , ,
},
ImageLabel = {
, , , , ,
, , , , ,
, , , , , , , ,
},
ImageButton = {
, , , , ,
, , , , ,
, , , , , , , , , ,
},
UICorner = {},
UIStroke = {, , , , , },
UIGradient = {, , , , },
UIAspectRatioConstraint = {, , },
UIScale = {},
Model = {, , },
IntValue = {}, NumberValue = {}, StringValue = {}, BoolValue = {},
Vector3Value = {}, CFrameValue = {}, Color3Value = {}, ObjectValue = {}
}
ref_prup = {
PrimaryPart = , Part0 = , Part1 = ,
Attachment0 = , Attachment1 = , Adornee = , Value =
}
CLASS_CONV = {TouchTransmitter = , UnionOperation = }
SKIP_CLASSES = {Terrain = }
PART_LIKE = {Part = , MeshPart = , TrussPart = , CornerWedgePart = , WedgePart = , CylinderPart = , UnionOperation = }
(v)
v ~= v
v == .huge
v == -.huge
():(v)
(v)
t = (v)
t == (v)
t == (v)
t == ():(v)
t == (v)
t == ():(v.Name)
t == ():((v.X), (v.Y), (v.Z))
t == ():((v.X), (v.Y))
t == ():((v.R), (v.G), (v.B))
t == ():((v.X.Scale), (v.X.Offset), (v.Y.Scale), (v.Y.Offset))
t == ():((v.Scale), (v.Offset))
t ==
x,y,z,r00,r01,r02,r10,r11,r12,r20,r21,r22 = v:()
():((x),(y),(z),(r00),(r01),(r02),(r10),(r11),(r12),(r20),(r21),(r22))
t == ():((v.Min), (v.Max))
t ==
p = {}
_, k (v.Keypoints) p[#p+] = ():((k.Time), (k.Value), (k.Envelope))
.. .(p, ) ..
t ==
p = {}
_, k (v.Keypoints) p[#p+] = ():((k.Time), (k.Value.R), (k.Value.G), (k.Value.B))
.. .(p, ) ..
t == ():((v.Density), (v.Friction), (v.Elasticity), (v.FrictionWeight), (v.ElasticityWeight))
t == ():((v.Min.X), (v.Min.Y), (v.Max.X), (v.Max.Y))
t == ():(v.Family, (v.Weight), (v.Style))
(id)
(id) ~=
t = id:()
t == t == t == t == t ==
l = t:()
l == l == l:()
(o)
ok, v = (() o.MeshId )
ok (v) v
ok2, c = (() o.MeshContent )
ok2 c
ok3, uri = (() c.Uri )
ok3 (uri) uri
s = (c)
(s:() s:()) (s) s
(c)
l, seen = {}, {}
(k) seen[k] seen[k] = ; l[#l+] = k
PART_LIKE[c] c == _, k (prup) (k)
x_prup[c] _, k (x_prup[c]) (k)
k (ref_prup) (k)
l
(root)
active = {}
hum = root:() root:()
hum
animator = hum:()
animator
ok, tracks = (() animator:() )
ok tracks #tracks >
_, trk (tracks)
trk.IsPlaying trk.Animation
.(active, {
id = trk.Animation.AnimationId,
name = trk.Animation.Name,
speed = trk.Speed,
weight = trk.WeightCurrent,
timePos = trk.TimePosition,
looped = trk.Looped,
priority = trk.Priority.Name
})
#active ==
_, d (root:())
d:() (d.Name:():() (d.Parent d.Parent.Name:():()))
.(active, {
id = d.AnimationId,
name = d.Name,
speed = ,
weight = ,
timePos = ,
looped = ,
priority =
})
active
(sel)
set, roots = {}, {}
_, o (sel) set[o] =
_, o (sel)
p, isRoot = o.Parent,
p set[p] isRoot = ; ; p = p.Parent
isRoot roots[#roots+] = o
#roots ==
root, records, index = roots[], {}, {}
activeAnims = (root)
(o, pIdx)
c = CLASS_CONV[o.ClassName] o.ClassName
SKIP_CLASSES[c]
isScript = (c == c == c == )
isMP = (c == ) ((() o:() ) o:())
mId =
isMP
c =
mId = (o)
rec = {c = c, n = o.Name, p = pIdx, props = {}, refs = {}}
records[#records+] = rec
myIdx = #records
index[o] = myIdx
isMP mId rec.mesh = mId
_, k ((c))
ok, v = (() o[k] )
ok v ~=
(v) ==
ref_prup[k] rec.refs[k] = v
ev = (v)
ev rec.props[k] = ev
isScript
okS, src = (() o.Source )
okS src rec.props[] = ():(src)
okA, attrs = (() o:() )
okA (attrs) ==
k, v (attrs)
ev = (v)
ev rec.attrs = rec.attrs {}; rec.attrs[k] = ev
c == o.AnimationId o.AnimationId ~=
(()
kfs = KeyframeSequenceProvider:(o.AnimationId)
kfs kfs:()
(kfs, myIdx)
)
_, child (o:()) (child, myIdx)
(root, )
o, i (index)
k, target (records[i].refs) records[i].refs[k] = index[target]
_, r (records)
k (r.refs) (r.refs[k]) ~= r.refs[k] =
(r.refs) == r.refs =
(r.props) == r.props =
records, root.Name, #records, activeAnims
RUNTIME =
(name, records, anchorMode, playAnims, activeAnims)
animLines = {}
_, a (activeAnims)
animLines[#animLines + ] = ():(
a.id, a.name, (a.speed), (a.weight), (a.timePos), (a.looped), a.priority
)
lines = {
,
():(name),
,
():(anchorMode),
():((playAnims)),
,
,
,
,
.(animLines, ),
,
,
}
_, r (records)
p = {():(r.c), ():(r.n), ():(r.p)}
r.mesh p[#p+] = ():(r.mesh)
r.props
pl = {}
k, v (r.props) pl[#pl+] = ():(k, v)
.(pl)
p[#p+] = .. .(pl, ) ..
r.refs
rl = {}
k, idx (r.refs) rl[#rl+] = ():(k, idx)
.(rl)
p[#p+] = .. .(rl, ) ..
r.attrs
al = {}
k, v (r.attrs) al[#al+] = ():(k, v)
.(al)
p[#p+] = .. .(al, ) ..
lines[#lines+] = .. .(p, ) ..
lines[#lines+] =
.(lines, ) .. RUNTIME
(class, props, parent)
o = .(class)
k, v (props) o[k] = v
parent o.Parent = parent
o
(parent)
pnl = (, {
Name = , Size = .(, ), Position = .(, -, , -),
BackgroundColor3 = .(, , ), BorderSizePixel = , Active =
}, parent)
(, {CornerRadius = .(, )}, pnl)
(, {Color = .(, , ), Thickness = }, pnl)
bar = (, {
Name = , Size = .(, , , ), BackgroundColor3 = .(, , ), BorderSizePixel =
}, pnl)
(, {CornerRadius = .(, )}, bar)
(, {
Size = .(, -, , ), Position = .(, ), BackgroundTransparency = ,
Font = .Font.RobotoMono, TextSize = , TextColor3 = .(, , ),
TextXAlignment = .TextXAlignment.Left, Text =
}, bar)
cls = (, {
Size = .(, ), Position = .(, -, , ), BackgroundColor3 = .(, , ),
Text = , Font = .Font.GothamBold, TextSize = , TextColor3 = .(, , ), BorderSizePixel =
}, bar)
(, {CornerRadius = .(, )}, cls)
cls.MouseButton1Click:(() pnl.Parent:() )
drag, dStart, sPos
bar.InputBegan:((inp)
inp.UserInputType == .UserInputType.MouseButton1 inp.UserInputType == .UserInputType.Touch
drag = ; dStart = inp.Position; sPos = pnl.Position
inp.Changed:(() inp.UserInputState == .UserInputState.End drag = )
)
bar.InputChanged:((inp)
(inp.UserInputType == .UserInputType.MouseMovement inp.UserInputType == .UserInputType.Touch) drag
delta = inp.Position - dStart
pnl.Position = .(sPos.X.Scale, sPos.X.Offset + delta.X, sPos.Y.Scale, sPos.Y.Offset + delta.Y)
)
selLbl = (, {
Size = .(, -, , ), Position = .(, ), BackgroundColor3 = .(, , ),
Font = .Font.RobotoMono, TextSize = , TextColor3 = .(, , ),
TextXAlignment = .TextXAlignment.Left, Text =
}, pnl)
(, {CornerRadius = .(, )}, selLbl)
nameInp = (, {
Size = .(, -, , ), Position = .(, ), BackgroundColor3 = .(, , ),
Font = .Font.RobotoMono, TextSize = , TextColor3 = .(, , ),
PlaceholderColor3 = .(, , ), PlaceholderText = , Text = , ClearTextOnFocus =
}, pnl)
(, {CornerRadius = .(, )}, nameInp)
anchorMode =
anchorBtn = (, {
Size = .(, -, , ), Position = .(, ), BackgroundColor3 = .(, , ),
Font = .Font.RobotoMono, TextSize = , TextColor3 = .(, , ),
Text =
}, pnl)
(, {CornerRadius = .(, )}, anchorBtn)
anchorBtn.MouseButton1Click:(()
anchorMode ==
anchorMode =
anchorBtn.Text =
anchorMode ==
anchorMode =
anchorBtn.Text =
anchorMode =
anchorBtn.Text =
)
playAnims =
animBtn = (, {
Size = .(, -, , ), Position = .(, ), BackgroundColor3 = .(, , ),
Font = .Font.RobotoMono, TextSize = , TextColor3 = .(, , ),
Text =
}, pnl)
(, {CornerRadius = .(, )}, animBtn)
animBtn.MouseButton1Click:(()
playAnims = playAnims
animBtn.Text = .. (playAnims )
animBtn.TextColor3 = playAnims .(, , ) .(, , )
)
expBtn = (, {
Size = .(, -, , ), Position = .(, ), BackgroundColor3 = .(, , ),
Font = .Font.GothamBold, TextSize = , TextColor3 = .(, , ), Text =
}, pnl)
(, {CornerRadius = .(, )}, expBtn)
statLbl = (, {
Size = .(, -, , ), Position = .(, ), BackgroundColor3 = .(, , ),
Font = .Font.RobotoMono, TextSize = , TextColor3 = .(, , ),
TextXAlignment = .TextXAlignment.Left, TextYAlignment = .TextYAlignment.Top,
Text =
}, pnl)
(, {CornerRadius = .(, )}, statLbl)
lastSelName =
()
sel = Selection:()
#sel ==
selLbl.Text =
f = sel[]
selLbl.Text = ():(f.Name, f.ClassName)
nameInp.Text == nameInp.Text == lastSelName
lastSelName = f.Name
nameInp.Text = f.Name
Selection.SelectionChanged:(updateSel)
()
expBtn.MouseButton1Click:(()
statLbl.Text =
.()
sel = Selection:()
recs, rootName, count, activeAnims = (sel)
recs count == statLbl.Text = ;
expName = nameInp.Text ~= nameInp.Text rootName
expName = expName:(, )
code = (expName, recs, anchorMode, playAnims, activeAnims)
ms = .()
ms.Name = .. expName
ms.Parent = ServerStorage
updated =
(()
ScriptEditorService:(ms, ()
code
)
updated =
)
updated
(() ms.Source = code )
opened =
(()
ScriptEditorService:(ms)
opened =
)
statLbl.Text = ():(
expName, count, #activeAnims, opened
)
)
pnl
plugin
bar = plugin:()
btn = bar:(, , )
gui = .()
gui.Name =
gui.Parent = CoreGui
gui.Enabled =
(gui)
btn.Click:(() gui.Enabled = gui.Enabled )
gui = .(, CoreGui)
gui.Name =
(gui)
so basically u can go into studio paste it execute click a model in the explorer and press convert button or wtvr its called then it will pop up a new script and that script converted the model into a localscript u can execute and spawn back into normal roblox client sidedly

Universal