local function clean(value) return value:match('') or value end local function parseProperties(obj, block) for propName, value in block:gmatch('(.-)') do local val = clean(value) if val and val:find("rbxassetid://") then pcall(function() obj[propName] = val end) end end for propName, value in block:gmatch('(.-)') do local val = clean(value) if val and val:find("rbxassetid://") then pcall(function() obj[propName] = val end) end end local cframeMatch = block:match('(.-)') if cframeMatch and obj:IsA("Tool") then local x = tonumber(cframeMatch:match('(.-)')) local y = tonumber(cframeMatch:match('(.-)')) local z = tonumber(cframeMatch:match('(.-)')) local rx = tonumber(cframeMatch:match('(.-)')) local ry = tonumber(cframeMatch:match('(.-)')) local rz = tonumber(cframeMatch:match('(.-)')) local r10 = tonumber(cframeMatch:match('(.-)')) local r11 = tonumber(cframeMatch:match('(.-)')) local r12 = tonumber(cframeMatch:match('(.-)')) local r20 = tonumber(cframeMatch:match('(.-)')) local r21 = tonumber(cframeMatch:match('(.-)')) local r22 = tonumber(cframeMatch:match('(.-)')) if x and y and z then local cf = CFrame.new(x, y, z, r00, r01, r02, r10, r11, r12, r20, r21, r22 ) obj.Grip = cf end end end local function loadRBXMX(url) local body = request({Url = url, Method = "GET"}).Body body = body:gsub('', '') local model = Instance.new("Model") model.Name = "LoadedModel" for item in body:gmatch('.-') do local class = item:match('(.-)') obj.Name = rawName and clean(rawName) or class for propBlock in item:gmatch('(.-)') do parseProperties(obj, propBlock) end obj.Parent = model end end model.Parent = workspace return model end loadRBXMX("PUT_RBXMX_URL_HERE")