I have been making this sandbox type building game which includes saving and loading a base. However i have been having a problem where the C0 and C1 CFrames don't save properly in the datastore
EDIT: it is saving the C0 and C1 values
Before: https://imgur.com/a/BqtzGJj
After: https://imgur.com/a/vxWzEkJ
my code is below:
Saving:
local mTable = {} -- snipet of code for i,v in pairs(t) do if workspace.Place:FindFirstChild(v.Name) then local Table = {} game:GetService("RunService").Heartbeat:Wait() Table.Name = v.Name Table.C0 = {v.PrimaryPart.PlotWeld.C0:components()} Table.C1 = {v.PrimaryPart.PlotWeld.C1:components()} print(unpack(Table.C1)) v:Destroy() table.insert(mTable, Table) else warn("Instance "..tostring(v).." Couldn't Be Found") end end mTable = game.HttpService:JSONEncode(mTable) save:SetAsync(plr.UserId, mTable) print("Save Success")
Loading:
print("Fetching Save") local mSave = save:GetAsync(plr.UserId) or nil if mSave then local sTable = game.HttpService:JSONDecode(mSave) print("Save Fetched: Estimated Size = "..math.floor(string.len(mSave)).."\nLoading") for i,v in pairs(sTable) do game:GetService("RunService").Heartbeat:Wait() if workspace.Place:FindFirstChild(v.Name) then print("Found "..v.Name.." Loading Object") local obj = workspace.Place[v.Name]:Clone() obj.Parent = plr.PlotOwned.Value.Drawing local weld = Instance.new("Motor6D", obj.PrimaryPart) weld.Name = "PlotWeld" weld.C0 = CFrame.new(unpack(v.C0)) weld.C1 = CFrame.new(unpack(v.C1)) weld.Part0 = obj.PrimaryPart weld.Part1 = plr.PlotOwned.Value.TP print("Made Welds And Placed Object Successfully!") end end else print("No Data Saved!")