
Key Required VerifiedUniversal

local AssetService = game:GetService("AssetService")
local Selection = game:GetService("Selection")
local ScriptEditorService = game:GetService("ScriptEditorService")
local ServerStorage = game:GetService("ServerStorage")
local KeyframeSequenceProvider = game:GetService("KeyframeSequenceProvider")
local CoreGui = game:GetService("CoreGui")
local prup = {
"Size", "CFrame", "Color", "Material", "Transparency", "Reflectance",
"CanCollide", "CanTouch", "CanQuery", "Anchored", "Massless", "CastShadow",
"CollisionGroup", "TopSurface", "BottomSurface", "LeftSurface", "RightSurface",
"Friction", "Elasticity", "CustomPhysicalProperties", "RootPriority"
}
local x_prup = {
Part = {"Shape"},
MeshPart = {"MeshId", "TextureID", "RenderFidelity", "CollisionFidelity", "DoubleSided"},
SpecialMesh = {"MeshType", "MeshId", "TextureId", "Scale", "Offset", "VertexColors"},
Decal = {"Texture", "Transparency", "Color3", "Face", "ZIndex"},
Texture = {"Texture", "Transparency", "Color3", "Face", "ZIndex", "StudsPerTileU", "StudsPerTileV", "OffsetStudsU", "OffsetStudsV"},
SurfaceAppearance = {"ColorMap", "NormalMap", "MetalnessMap", "RoughnessMap", "AlphaMode"},
CharacterMesh = {"BodyPart", "MeshId", "BaseTextureId", "OverlayTextureId"},
Tool = {"Grip", "GripPos", "GripForward", "GripRight", "GripUp", "CanBeDropped", "ManualActivationOnly", "RequiresHandle", "ToolTip", "Enabled"},
Accessory = {"AttachmentPoint", "AccessoryType"},
Accoutrement = {"AttachmentPoint"},
Shirt = {"ShirtTemplate", "Color3"},
Pants = {"PantsTemplate", "Color3"},
ShirtGraphic = {"Graphic", "Color3"},
Humanoid = {
"RigType", "HipHeight", "WalkSpeed", "JumpPower", "JumpHeight",
"MaxHealth", "Health", "AutoRotate", "DisplayDistanceType",
"HealthDisplayType", "HealthDisplayDistance", "NameDisplayDistance",
"BreakJointsOnDeath", "RequiresNeck", "AutomaticScalingEnabled", "UseJumpPower"
},
Animation = {"AnimationId"},
Animator = {"EvaluationType"},
AnimationController = {},
Bone = {"CFrame", "Transform"},
BodyColors = {"HeadColor3", "TorsoColor3", "LeftArmColor3", "RightArmColor3", "LeftLegColor3", "RightLegColor3"},
KeyframeSequence = {"Loop", "Priority"},
Keyframe = {"Time"},
Pose = {"CFrame", "EasingDirection", "EasingStyle", "Weight"},
NumberPose = {"Value", "EasingDirection", "EasingStyle", "Weight"},
KeyframeMarker = {"Value"},
ProximityPrompt = {
"ActionText", "ObjectText", "HoldDuration", "MaxActivationDistance",
"RequiresLineOfSight", "KeyboardKeyCode", "GamepadKeyCode", "ClickablePrompt",
"Enabled", "Exclusivity", "UIOffset", "AutoLocalize", "Style"
},
ClickDetector = {"MaxActivationDistance", "CursorIcon"},
Dialog = {"InitialPrompt", "Purpose", "Tone", "GoodbyeDialog", "InUse"},
DialogChoice = {"UserDialog", "ResponseDialog", "GoodbyeDialog"},
Script = {"Source", "Enabled", "RunContext"},
LocalScript = {"Source", "Enabled"},
ModuleScript = {"Source"},
Motor6D = {"C0", "C1", "MaxVelocity", "DesiredAngle", "CurrentAngle", "Enabled"},
Weld = {"C0", "C1", "Enabled"},
ManualWeld = {"C0", "C1", "Enabled"},
WeldConstraint = {"Enabled"},
Snap = {"C0", "C1", "Enabled"},
Attachment = {"CFrame", "Visible"},
NoCollisionConstraint = {"Enabled"},
BallSocketConstraint = {"LimitsEnabled", "UpperAngle", "TwistLimitsEnabled", "TwistLowerAngle", "TwistUpperAngle", "Radius", "Restitution", "Enabled"},
HingeConstraint = {"LimitsEnabled", "LowerAngle", "UpperAngle", "ActuatorType", "MotorMaxTorque", "AngularVelocity", "ServoTargetAngle", "Radius", "Restitution", "AngularSpeed", "Enabled"},
PrismaticConstraint = {"LimitsEnabled", "LowerLimit", "UpperLimit", "Restitution", "ActuatorType", "MotorMaxAcceleration", "MotorMaxForce", "Velocity", "ServoMaxForce", "TargetPosition", "Speed", "Size", "Enabled"},
CylindricalConstraint = {"LimitsEnabled", "LowerLimit", "UpperLimit", "Restitution", "ActuatorType", "MotorMaxAcceleration", "MotorMaxForce", "Velocity", "ServoMaxForce", "TargetPosition", "Speed", "AngularLimitsEnabled", "LowerAngle", "UpperAngle", "AngularRestitution", "AngularActuatorType", "MotorMaxAngularAcceleration", "MotorMaxTorque", "AngularVelocity", "AngularServoMaxTorque", "TargetAngle", "AngularSpeed", "RotationAxisVisible", "Size", "Enabled"},
RodConstraint = {"Length", "Thickness", "Visible", "Enabled"},
RopeConstraint = {"Length", "Thickness", "Visible", "Restitution", "Enabled"},
SpringConstraint = {"Coils", "FreeLength", "Radius", "Stiffness", "Damping", "LimitsEnabled", "MaxLength", "MinLength", "Thickness", "Visible", "Enabled"},
AlignPosition = {"Mode", "MaxForce", "MaxVelocity", "Responsiveness", "RigidityEnabled", "ApplyAtCenterOfMass", "Position", "ReactionForceEnabled", "Enabled"},
AlignOrientation = {"Mode", "MaxTorque", "MaxAngularVelocity", "Responsiveness", "RigidityEnabled", "CFrame", "ReactionTorqueEnabled", "PrimaryAxisOnly", "AlignType", "Enabled"},
LinearVelocity = {"VectorVelocity", "MaxForce", "RelativeTo", "VelocityConstraintMode", "Enabled"},
AngularVelocity = {"AngularVelocity", "MaxTorque", "RelativeTo", "ReactionTorqueEnabled", "Enabled"},
VectorForce = {"Force", "RelativeTo", "ApplyAtCenterOfMass", "Enabled"},
Torque = {"Torque", "RelativeTo", "Enabled"},
PointLight = {"Color", "Brightness", "Range", "Shadows", "Enabled"},
SpotLight = {"Color", "Brightness", "Range", "Shadows", "Angle", "Face", "Enabled"},
SurfaceLight = {"Color", "Brightness", "Range", "Shadows", "Angle", "Face", "Enabled"},
Sound = {"SoundId", "Volume", "PlaybackSpeed", "Looped", "RollOffMode", "RollOffMinDistance", "RollOffMaxDistance", "Playing"},
ParticleEmitter = {
"Texture", "Color", "Transparency", "Size", "Lifetime", "Rate", "Speed", "Rotation",
"RotSpeed", "Acceleration", "SpreadAngle", "EmissionDirection", "LockedToPart",
"LightInfluence", "LightEmission", "ZOffset", "Drag", "TimeScale", "VelocityInheritance", "Enabled"
},
Beam = {
"Width0", "Width1", "Color", "Transparency", "Texture", "TextureMode", "TextureLength",
"TextureSpeed", "Segments", "CurveSize0", "CurveSize1", "FaceCamera", "LightEmission",
"LightInfluence", "ZOffset", "Enabled"
},
Trail = {
"Color", "Transparency", "Lifetime", "MinLength", "WidthScale", "Texture", "TextureMode",
"TextureLength", "LightEmission", "LightInfluence", "FaceCamera", "MaxLength", "Enabled"
},
Highlight = {"FillColor", "FillTransparency", "OutlineColor", "OutlineTransparency", "DepthMode", "Enabled"},
Fire = {"Color", "SecondaryColor", "Heat", "Size", "Enabled"},
Smoke = {"Color", "Opacity", "RiseVelocity", "Size", "Enabled"},
Sparkles = {"SparkleColor", "Enabled"},
BillboardGui = {
"AlwaysOnTop", "ExtentsOffset", "ExtentsOffsetWorldSpace", "LightInfluence",
"MaxDistance", "Size", "SizeOffset", "StudsOffset", "StudsOffsetWorldSpace",
"Enabled", "ResetOnSpawn", "ClipsDescendants", "Active", "DistanceLowerLimit", "DistanceUpperLimit"
},
SurfaceGui = {
"Face", "AlwaysOnTop", "LightInfluence", "MaxDistance", "CanvasSize",
"PixelsPerStud", "SizingMode", "ToolPunchThroughDistance", "Enabled", "ClipsDescendants", "Active"
},
ScreenGui = {"Enabled", "ResetOnSpawn", "DisplayOrder", "IgnoreGuiInset"},
Frame = {"BackgroundColor3", "BackgroundTransparency", "BorderColor3", "BorderSizePixel", "Size", "Position", "AnchorPoint", "Visible", "ZIndex", "Rotation", "ClipsDescendants", "LayoutOrder"},
TextLabel = {
"Text", "Font", "FontFace", "TextSize", "TextColor3", "TextStrokeColor3", "TextStrokeTransparency",
"TextTransparency", "TextScaled", "TextWrapped", "TextXAlignment", "TextYAlignment",
"RichText", "BackgroundColor3", "BackgroundTransparency", "BorderColor3", "BorderSizePixel",
"Size", "Position", "AnchorPoint", "Visible", "ZIndex", "Rotation", "LayoutOrder", "MaxVisibleGraphemes"
},
TextButton = {
"Text", "Font", "FontFace", "TextSize", "TextColor3", "TextStrokeColor3", "TextStrokeTransparency",
"TextTransparency", "TextScaled", "TextWrapped", "TextXAlignment", "TextYAlignment",
"RichText", "BackgroundColor3", "BackgroundTransparency", "BorderColor3", "BorderSizePixel",
"Size", "Position", "AnchorPoint", "Visible", "ZIndex", "Rotation", "AutoButtonColor", "Active", "LayoutOrder"
},
ImageLabel = {
"Image", "ImageColor3", "ImageTransparency", "ImageRectOffset", "ImageRectSize",
"ScaleType", "SliceCenter", "SliceScale", "BackgroundColor3", "BackgroundTransparency",
"BorderColor3", "BorderSizePixel", "Size", "Position", "AnchorPoint", "Visible", "ZIndex", "Rotation", "LayoutOrder"
},
ImageButton = {
"Image", "ImageColor3", "ImageTransparency", "ImageRectOffset", "ImageRectSize",
"ScaleType", "SliceCenter", "SliceScale", "BackgroundColor3", "BackgroundTransparency",
"BorderColor3", "BorderSizePixel", "Size", "Position", "AnchorPoint", "Visible", "ZIndex", "Rotation", "AutoButtonColor", "Active", "LayoutOrder"
},
UICorner = {"CornerRadius"},
UIStroke = {"Color", "Thickness", "Transparency", "ApplyStrokeMode", "LineJoinMode", "Enabled"},
UIGradient = {"Color", "Transparency", "Offset", "Rotation", "Enabled"},
UIAspectRatioConstraint = {"AspectRatio", "AspectType", "DominantAxis"},
UIScale = {"Scale"},
Model = {"PrimaryPart", "LevelOfDetail", "WorldPivot"},
IntValue = {"Value"}, NumberValue = {"Value"}, StringValue = {"Value"}, BoolValue = {"Value"},
Vector3Value = {"Value"}, CFrameValue = {"Value"}, Color3Value = {"Value"}, ObjectValue = {"Value"}
}
local ref_prup = {
PrimaryPart = true, Part0 = true, Part1 = true,
Attachment0 = true, Attachment1 = true, Adornee = true, Value = true
}
local CLASS_CONV = {TouchTransmitter = "ClickDetector", UnionOperation = "Part"}
local SKIP_CLASSES = {Terrain = true}
local PART_LIKE = {Part = true, MeshPart = true, TrussPart = true, CornerWedgePart = true, WedgePart = true, CylinderPart = true, UnionOperation = true}
local function num(v)
if v ~= v then return "(0/0)" end
if v == math.huge then return "math.huge" end
if v == -math.huge then return "-math.huge" end
return ("%.17g"):format(v)
end
local function emitVal(v)
local t = typeof(v)
if t == "number" then return num(v) end
if t == "boolean" then return tostring(v) end
if t == "string" then return ("%q"):format(v) end
if t == "EnumItem" then return tostring(v) end
if t == "BrickColor" then return ('BrickColor.new("%s")'):format(v.Name) end
if t == "Vector3" then return ("Vector3.new(%s,%s,%s)"):format(num(v.X), num(v.Y), num(v.Z)) end
if t == "Vector2" then return ("Vector2.new(%s,%s)"):format(num(v.X), num(v.Y)) end
if t == "Color3" then return ("Color3.new(%s,%s,%s)"):format(num(v.R), num(v.G), num(v.B)) end
if t == "UDim2" then return ("UDim2.new(%s,%s,%s,%s)"):format(num(v.X.Scale), num(v.X.Offset), num(v.Y.Scale), num(v.Y.Offset)) end
if t == "UDim" then return ("UDim.new(%s,%s)"):format(num(v.Scale), num(v.Offset)) end
if t == "CFrame" then
local x,y,z,r00,r01,r02,r10,r11,r12,r20,r21,r22 = v:GetComponents()
return ("CFrame.new(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"):format(num(x),num(y),num(z),num(r00),num(r01),num(r02),num(r10),num(r11),num(r12),num(r20),num(r21),num(r22))
end
if t == "NumberRange" then return ("NumberRange.new(%s,%s)"):format(num(v.Min), num(v.Max)) end
if t == "NumberSequence" then
local p = {}
for _, k in ipairs(v.Keypoints) do p[#p+1] = ("NumberSequenceKeypoint.new(%s,%s,%s)"):format(num(k.Time), num(k.Value), num(k.Envelope)) end
return "NumberSequence.new({" .. table.concat(p, ",") .. "})"
end
if t == "ColorSequence" then
local p = {}
for _, k in ipairs(v.Keypoints) do p[#p+1] = ("ColorSequenceKeypoint.new(%s,Color3.new(%s,%s,%s))"):format(num(k.Time), num(k.Value.R), num(k.Value.G), num(k.Value.B)) end
return "ColorSequence.new({" .. table.concat(p, ",") .. "})"
end
if t == "PhysicalProperties" then return ("PhysicalProperties.new(%s,%s,%s,%s,%s)"):format(num(v.Density), num(v.Friction), num(v.Elasticity), num(v.FrictionWeight), num(v.ElasticityWeight)) end
if t == "Rect" then return ("Rect.new(%s,%s,%s,%s)"):format(num(v.Min.X), num(v.Min.Y), num(v.Max.X), num(v.Max.Y)) end
if t == "Font" then return ('Font.new(%q,%s,%s)'):format(v.Family, tostring(v.Weight), tostring(v.Style)) end
return nil
end
local function isValidMeshId(id)
if type(id) ~= "string" then return false end
local t = id:match("^%s*(.-)%s*$")
if t == "" or t == "0" or t == "rbxassetid://0" or t == "rbxassetid://" or t == "rbxasset://" then return false end
local l = t:lower()
if l == "none" or l == "null" or l:find("meshpartfallback") then return false end
return true
end
local function readMeshId(o)
local ok, v = pcall(function() return o.MeshId end)
if ok and isValidMeshId(v) then return v end
local ok2, c = pcall(function() return o.MeshContent end)
if ok2 and c then
local ok3, uri = pcall(function() return c.Uri end)
if ok3 and isValidMeshId(uri) then return uri end
local s = tostring(c)
if (s:match("^rbxasset") or s:match("^http")) and isValidMeshId(s) then return s end
end
return nil
end
local function propListFor(c)
local l, seen = {}, {}
local function add(k) if not seen[k] then seen[k] = true; l[#l+1] = k end end
if PART_LIKE[c] or c == "Part" then for _, k in ipairs(prup) do add(k) end end
if x_prup[c] then for _, k in ipairs(x_prup[c]) do add(k) end end
for k in pairs(ref_prup) do add(k) end
return l
end
local function captureActiveAnimations(root)
local active = {}
local hum = root:FindFirstChildOfClass("Humanoid") or root:FindFirstChildOfClass("AnimationController")
if hum then
local animator = hum:FindFirstChildOfClass("Animator")
if animator then
local ok, tracks = pcall(function() return animator:GetPlayingAnimationTracks() end)
if ok and tracks and #tracks > 0 then
for _, trk in ipairs(tracks) do
if trk.IsPlaying and trk.Animation then
table.insert(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
})
end
end
end
end
end
if #active == 0 then
for _, d in ipairs(root:GetDescendants()) do
if d:IsA("Animation") and (d.Name:lower():find("idle") or (d.Parent and d.Parent.Name:lower():find("idle"))) then
table.insert(active, {
id = d.AnimationId,
name = d.Name,
speed = 1,
weight = 1,
timePos = 0,
looped = true,
priority = "Idle"
})
break
end
end
end
return active
end
local function serializeSelection(sel)
local set, roots = {}, {}
for _, o in ipairs(sel) do set[o] = true end
for _, o in ipairs(sel) do
local p, isRoot = o.Parent, true
while p do if set[p] then isRoot = false; break end; p = p.Parent end
if isRoot then roots[#roots+1] = o end
end
if #roots == 0 then return nil end
local root, records, index = roots[1], {}, {}
local activeAnims = captureActiveAnimations(root)
local function walk(o, pIdx)
local c = CLASS_CONV[o.ClassName] or o.ClassName
if SKIP_CLASSES[c] then return end
local isScript = (c == "Script" or c == "LocalScript" or c == "ModuleScript")
local isMP = (c == "MeshPart") or (pcall(function() return o:IsA("MeshPart") end) and o:IsA("MeshPart"))
local mId = nil
if isMP then
c = "MeshPart"
mId = readMeshId(o)
end
local rec = {c = c, n = o.Name, p = pIdx, props = {}, refs = {}}
records[#records+1] = rec
local myIdx = #records
index[o] = myIdx
if isMP and mId then rec.mesh = mId end
for _, k in ipairs(propListFor(c)) do
local ok, v = pcall(function() return o[k] end)
if ok and v ~= nil then
if typeof(v) == "Instance" then
if ref_prup[k] then rec.refs[k] = v end
else
local ev = emitVal(v)
if ev then rec.props[k] = ev end
end
end
end
if isScript then
local okS, src = pcall(function() return o.Source end)
if okS and src then rec.props["Source"] = ("%q"):format(src) end
end
local okA, attrs = pcall(function() return o:GetAttributes() end)
if okA and type(attrs) == "table" then
for k, v in pairs(attrs) do
local ev = emitVal(v)
if ev then rec.attrs = rec.attrs or {}; rec.attrs[k] = ev end
end
end
if c == "Animation" and o.AnimationId and o.AnimationId ~= "" then
pcall(function()
local kfs = KeyframeSequenceProvider:GetKeyframeSequenceAsync(o.AnimationId)
if kfs and kfs:IsA("KeyframeSequence") then
walk(kfs, myIdx)
end
end)
end
for _, child in ipairs(o:GetChildren()) do walk(child, myIdx) end
end
walk(root, 0)
for o, i in pairs(index) do
for k, target in pairs(records[i].refs) do records[i].refs[k] = index[target] end
end
for _, r in ipairs(records) do
for k in pairs(r.refs) do if type(r.refs[k]) ~= "number" then r.refs[k] = nil end end
if next(r.refs) == nil then r.refs = nil end
if next(r.props) == nil then r.props = nil end
end
return records, root.Name, #records, activeAnims
end
local RUNTIME = [===[
local AssetService = game:GetService("AssetService")
local Players = game:GetService("Players")
local KeyframeSequenceProvider = game:GetService("KeyframeSequenceProvider")
local function setProp(o, k, v)
o[k] = v
end
local function setRef(o, k, target)
o[k] = target
end
local mCache = {}
local function create(r)
if r.c == "MeshPart" then
if r.mesh then
local t = mCache[r.mesh]
if t == nil then
local ok, res = pcall(function()
return AssetService:CreateMeshPartAsync(Content.fromUri(r.mesh), {
CollisionFidelity = (r.props and r.props.CollisionFidelity) or Enum.CollisionFidelity.Box
})
end)
t = (ok and res) or false
mCache[r.mesh] = t
end
if t then return t:Clone() end
end
local part = Instance.new("Part")
if r.mesh then
local sm = Instance.new("SpecialMesh")
sm.MeshType = Enum.MeshType.FileMesh
sm.MeshId = r.mesh
if r.props and r.props.TextureID then sm.TextureId = r.props.TextureID end
sm.Parent = part
end
return part
end
return Instance.new(r.c)
end
local total = #DATA
local insts = table.create(total)
for i = 1, total do
local r = DATA[i]
local o = create(r)
if o then o.Name = r.n end
insts[i] = o
if i % 250 == 0 then task.wait() end
end
for i = 1, total do
local o = insts[i]
local r = DATA[i]
if o then
if r.props then
if r.c == "Humanoid" and r.props.MaxHealth then
pcall(setProp, o, "MaxHealth", r.props.MaxHealth)
end
for k, v in pairs(r.props) do
if not (r.c == "MeshPart" and (k == "CollisionFidelity" or k == "MeshId")) then
pcall(setProp, o, k, v)
end
end
end
if r.attrs then
for k, v in pairs(r.attrs) do pcall(o.SetAttribute, o, k, v) end
end
end
if i % 250 == 0 then task.wait() end
end
for i = 1, total do
local o = insts[i]
local r = DATA[i]
if o and r.refs then
for k, idx in pairs(r.refs) do
local target = insts[idx]
if target then pcall(setRef, o, k, target) end
end
end
if i % 250 == 0 then task.wait() end
end
for i = 1, total do
local o = insts[i]
local r = DATA[i]
if o and r.p ~= 0 and insts[r.p] then
o.Parent = insts[r.p]
end
end
local root = insts[1]
if not root then return end
for i = 1, total do
local o = insts[i]
if o and o:IsA("Animation") then
local kfs = o:FindFirstChildOfClass("KeyframeSequence")
if kfs then
local ok, newId = pcall(function()
return KeyframeSequenceProvider:RegisterKeyframeSequence(kfs)
end)
if ok and newId then o.AnimationId = newId end
end
end
end
local function getBaseCF()
local pl = Players.LocalPlayer or Players:FindFirstChildOfClass("Player")
local c = pl and (pl.Character or pl.CharacterAdded:Wait())
local hrp = c and c:WaitForChild("HumanoidRootPart", 5)
if hrp then return hrp.CFrame end
local sp = workspace:FindFirstChildOfClass("SpawnLocation", true)
return sp and (sp.CFrame * CFrame.new(0, 4, 0)) or CFrame.new(0, 6, 0)
end
if CONFIG.REPLACE then
for _, e in ipairs(workspace:GetChildren()) do
if e.Name == CONFIG.NAME then e:Destroy() end
end
end
if root:IsA("Model") then
if not root.PrimaryPart then
root.PrimaryPart = root:FindFirstChild("HumanoidRootPart") or root:FindFirstChildWhichIsA("BasePart")
end
pcall(function() root:PivotTo(getBaseCF() * CONFIG.OFFSET) end)
elseif root:IsA("BasePart") then
root.CFrame = getBaseCF() * CONFIG.OFFSET
end
if CONFIG.ANCHOR_MODE == "RootOnly" then
local hrp = root:FindFirstChild("HumanoidRootPart")
if hrp then
hrp.Anchored = true
for _, d in ipairs(root:GetDescendants()) do
if d:IsA("BasePart") and d ~= hrp then d.Anchored = false end
end
else
for _, d in ipairs(root:GetDescendants()) do if d:IsA("BasePart") then d.Anchored = true end end
end
elseif CONFIG.ANCHOR_MODE == "All" then
for _, d in ipairs(root:GetDescendants()) do if d:IsA("BasePart") then d.Anchored = true end end
if root:IsA("BasePart") then root.Anchored = true end
end
root.Parent = workspace
if CONFIG.PLAY_ANIMATIONS and #ACTIVE_ANIMS > 0 then
local hum = root:FindFirstChildOfClass("Humanoid") or root:FindFirstChildOfClass("AnimationController")
if hum then
local animator = hum:FindFirstChildOfClass("Animator") or Instance.new("Animator", hum)
for _, animData in ipairs(ACTIVE_ANIMS) do
local targetAnim = nil
for _, d in ipairs(root:GetDescendants()) do
if d:IsA("Animation") and (d.AnimationId == animData.id or d.Name == animData.name) then
targetAnim = d
break
end
end
if not targetAnim and animData.id and animData.id ~= "" then
targetAnim = Instance.new("Animation")
targetAnim.AnimationId = animData.id
targetAnim.Name = animData.name
targetAnim.Parent = hum
end
if targetAnim then
task.spawn(function()
local ok, track = pcall(function() return animator:LoadAnimation(targetAnim) end)
if ok and track then
pcall(function()
track.Priority = Enum.AnimationPriority[animData.priority] or Enum.AnimationPriority.Idle
track.Looped = (animData.looped ~= nil) and animData.looped or true
track:Play(0.1, animData.weight or 1, animData.speed or 1)
if animData.timePos and animData.timePos > 0 then
track.TimePosition = animData.timePos
end
end)
end
end)
end
end
end
end
]===]
local function generateCode(name, records, anchorMode, playAnims, activeAnims)
local animLines = {}
for _, a in ipairs(activeAnims) do
animLines[#animLines + 1] = ('\t{ id = %q, name = %q, speed = %s, weight = %s, timePos = %s, looped = %s, priority = %q },'):format(
a.id, a.name, num(a.speed), num(a.weight), num(a.timePos), tostring(a.looped), a.priority
)
end
local lines = {
"local CONFIG = {",
('\tNAME = %q,'):format(name),
"\tOFFSET = CFrame.new(0, 0, -6),",
('\tANCHOR_MODE = %q,'):format(anchorMode),
('\tPLAY_ANIMATIONS = %s,'):format(tostring(playAnims)),
"\tREPLACE = true,",
"}",
"",
"local ACTIVE_ANIMS = {",
table.concat(animLines, "\n"),
"}",
"",
"local DATA = {"
}
for _, r in ipairs(records) do
local p = {('c=%q'):format(r.c), ('n=%q'):format(r.n), ('p=%d'):format(r.p)}
if r.mesh then p[#p+1] = ('mesh=%q'):format(r.mesh) end
if r.props then
local pl = {}
for k, v in pairs(r.props) do pl[#pl+1] = ("%s=%s"):format(k, v) end
table.sort(pl)
p[#p+1] = "props={" .. table.concat(pl, ",") .. "}"
end
if r.refs then
local rl = {}
for k, idx in pairs(r.refs) do rl[#rl+1] = ("%s=%d"):format(k, idx) end
table.sort(rl)
p[#p+1] = "refs={" .. table.concat(rl, ",") .. "}"
end
if r.attrs then
local al = {}
for k, v in pairs(r.attrs) do al[#al+1] = ("[%q]=%s"):format(k, v) end
table.sort(al)
p[#p+1] = "attrs={" .. table.concat(al, ",") .. "}"
end
lines[#lines+1] = "\t{ " .. table.concat(p, ", ") .. " },"
end
lines[#lines+1] = "}\n"
return table.concat(lines, "\n") .. RUNTIME
end
local function el(class, props, parent)
local o = Instance.new(class)
for k, v in pairs(props) do o[k] = v end
if parent then o.Parent = parent end
return o
end
local function buildUI(parent)
local pnl = el("Frame", {
Name = "ModelSaverPanel", Size = UDim2.fromOffset(280, 240), Position = UDim2.new(0.5, -140, 0.5, -120),
BackgroundColor3 = Color3.fromRGB(18, 18, 18), BorderSizePixel = 0, Active = true
}, parent)
el("UICorner", {CornerRadius = UDim.new(0, 4)}, pnl)
el("UIStroke", {Color = Color3.fromRGB(60, 60, 60), Thickness = 1}, pnl)
local bar = el("Frame", {
Name = "TopBar", Size = UDim2.new(1, 0, 0, 26), BackgroundColor3 = Color3.fromRGB(28, 28, 28), BorderSizePixel = 0
}, pnl)
el("UICorner", {CornerRadius = UDim.new(0, 4)}, bar)
el("TextLabel", {
Size = UDim2.new(1, -30, 1, 0), Position = UDim2.fromOffset(8, 0), BackgroundTransparency = 1,
Font = Enum.Font.RobotoMono, TextSize = 11, TextColor3 = Color3.fromRGB(240, 240, 240),
TextXAlignment = Enum.TextXAlignment.Left, Text = "MODEL & NPC SAVER"
}, bar)
local cls = el("TextButton", {
Size = UDim2.fromOffset(20, 20), Position = UDim2.new(1, -23, 0, 3), BackgroundColor3 = Color3.fromRGB(45, 45, 45),
Text = "×", Font = Enum.Font.GothamBold, TextSize = 12, TextColor3 = Color3.fromRGB(255, 255, 255), BorderSizePixel = 0
}, bar)
el("UICorner", {CornerRadius = UDim.new(0, 3)}, cls)
cls.MouseButton1Click:Connect(function() pnl.Parent:Destroy() end)
local drag, dStart, sPos
bar.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
drag = true; dStart = inp.Position; sPos = pnl.Position
inp.Changed:Connect(function() if inp.UserInputState == Enum.UserInputState.End then drag = false end end)
end
end)
bar.InputChanged:Connect(function(inp)
if (inp.UserInputType == Enum.UserInputType.MouseMovement or inp.UserInputType == Enum.UserInputType.Touch) and drag then
local delta = inp.Position - dStart
pnl.Position = UDim2.new(sPos.X.Scale, sPos.X.Offset + delta.X, sPos.Y.Scale, sPos.Y.Offset + delta.Y)
end
end)
local selLbl = el("TextLabel", {
Size = UDim2.new(1, -16, 0, 18), Position = UDim2.fromOffset(8, 32), BackgroundColor3 = Color3.fromRGB(24, 24, 24),
Font = Enum.Font.RobotoMono, TextSize = 10, TextColor3 = Color3.fromRGB(180, 180, 180),
TextXAlignment = Enum.TextXAlignment.Left, Text = " SEL: NONE"
}, pnl)
el("UICorner", {CornerRadius = UDim.new(0, 3)}, selLbl)
local nameInp = el("TextBox", {
Size = UDim2.new(1, -16, 0, 22), Position = UDim2.fromOffset(8, 54), BackgroundColor3 = Color3.fromRGB(24, 24, 24),
Font = Enum.Font.RobotoMono, TextSize = 11, TextColor3 = Color3.fromRGB(255, 255, 255),
PlaceholderColor3 = Color3.fromRGB(110, 110, 110), PlaceholderText = "MODEL NAME", Text = "", ClearTextOnFocus = false
}, pnl)
el("UICorner", {CornerRadius = UDim.new(0, 3)}, nameInp)
local anchorMode = "RootOnly"
local anchorBtn = el("TextButton", {
Size = UDim2.new(1, -16, 0, 20), Position = UDim2.fromOffset(8, 80), BackgroundColor3 = Color3.fromRGB(30, 30, 30),
Font = Enum.Font.RobotoMono, TextSize = 10, TextColor3 = Color3.fromRGB(200, 200, 200),
Text = " ANCHOR: ROOT ONLY (NPC SAFE)"
}, pnl)
el("UICorner", {CornerRadius = UDim.new(0, 3)}, anchorBtn)
anchorBtn.MouseButton1Click:Connect(function()
if anchorMode == "RootOnly" then
anchorMode = "All"
anchorBtn.Text = " ANCHOR: ALL (MAP/PROP)"
elseif anchorMode == "All" then
anchorMode = "None"
anchorBtn.Text = " ANCHOR: NONE (ORIGINAL)"
else
anchorMode = "RootOnly"
anchorBtn.Text = " ANCHOR: ROOT ONLY (NPC SAFE)"
end
end)
local playAnims = true
local animBtn = el("TextButton", {
Size = UDim2.new(1, -16, 0, 20), Position = UDim2.fromOffset(8, 104), BackgroundColor3 = Color3.fromRGB(30, 30, 30),
Font = Enum.Font.RobotoMono, TextSize = 10, TextColor3 = Color3.fromRGB(120, 255, 120),
Text = " PLAY ACTIVE ANIM: ON"
}, pnl)
el("UICorner", {CornerRadius = UDim.new(0, 3)}, animBtn)
animBtn.MouseButton1Click:Connect(function()
playAnims = not playAnims
animBtn.Text = " PLAY ACTIVE ANIM: " .. (playAnims and "ON" or "OFF")
animBtn.TextColor3 = playAnims and Color3.fromRGB(120, 255, 120) or Color3.fromRGB(255, 120, 120)
end)
local expBtn = el("TextButton", {
Size = UDim2.new(1, -16, 0, 26), Position = UDim2.fromOffset(8, 130), BackgroundColor3 = Color3.fromRGB(240, 240, 240),
Font = Enum.Font.GothamBold, TextSize = 11, TextColor3 = Color3.fromRGB(0, 0, 0), Text = "SAVE MODEL"
}, pnl)
el("UICorner", {CornerRadius = UDim.new(0, 3)}, expBtn)
local statLbl = el("TextLabel", {
Size = UDim2.new(1, -16, 0, 68), Position = UDim2.fromOffset(8, 162), BackgroundColor3 = Color3.fromRGB(24, 24, 24),
Font = Enum.Font.RobotoMono, TextSize = 9, TextColor3 = Color3.fromRGB(150, 150, 150),
TextXAlignment = Enum.TextXAlignment.Left, TextYAlignment = Enum.TextYAlignment.Top,
Text = " READY"
}, pnl)
el("UICorner", {CornerRadius = UDim.new(0, 3)}, statLbl)
local lastSelName = ""
local function updateSel()
local sel = Selection:Get()
if #sel == 0 then
selLbl.Text = " SEL: NONE"
else
local f = sel[1]
selLbl.Text = (" SEL: %s [%s]"):format(f.Name, f.ClassName)
if nameInp.Text == "" or nameInp.Text == lastSelName then
lastSelName = f.Name
nameInp.Text = f.Name
end
end
end
Selection.SelectionChanged:Connect(updateSel)
updateSel()
expBtn.MouseButton1Click:Connect(function()
statLbl.Text = " PROCESSING..."
task.wait()
local sel = Selection:Get()
local recs, rootName, count, activeAnims = serializeSelection(sel)
if not recs or count == 0 then statLbl.Text = " ERR: NO VALID SELECTION"; return end
local expName = nameInp.Text ~= "" and nameInp.Text or rootName
expName = expName:gsub('[^%w%-_]', '')
local code = generateCode(expName, recs, anchorMode, playAnims, activeAnims)
local ms = Instance.new("ModuleScript")
ms.Name = "Saved_" .. expName
ms.Parent = ServerStorage
local updated = false
pcall(function()
ScriptEditorService:UpdateSourceAsync(ms, function()
return code
end)
updated = true
end)
if not updated then
pcall(function() ms.Source = code end)
end
local opened = false
pcall(function()
ScriptEditorService:OpenScriptDocumentAsync(ms)
opened = true
end)
statLbl.Text = (" OK: %s\n OBJECTS: %d\n ACTIVE ANIMS: %d\n DEST: %s"):format(
expName, count, #activeAnims, opened and "SCRIPT EDITOR" or "SERVERSTORAGE"
)
end)
return pnl
end
if plugin then
local bar = plugin:CreateToolbar("Model Saver")
local btn = bar:CreateButton("Save", "Save Model", "")
local gui = Instance.new("ScreenGui")
gui.Name = "ModelSaverGui"
gui.Parent = CoreGui
gui.Enabled = false
buildUI(gui)
btn.Click:Connect(function() gui.Enabled = not gui.Enabled end)
else
local gui = Instance.new("ScreenGui", CoreGui)
gui.Name = "ModelSaverGui"
buildUI(gui)
end


![[QUAIL] Best Universal Aimbot ESP 90+ Features](https://scriptblox.com/images/script/0-1774248169070.jpg)
u can use this for importing objects into ur scripts for tuff clientsidededness