#data not saving parts

1 messages · Page 1 of 1 (latest)

crimson forum
#
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local InstanceSaveData = DataStoreService:GetDataStore("InstanceSave")


local KeyPrefix = "-Player"
local PartsFolder = workspace.Folder

local function Load(player: Player)
    local Key = KeyPrefix .. tostring(player.UserId)
    local Data = {}
    
    for i , obj: BasePart in ipairs(PartsFolder:GetChildren()) do
        table.insert(Data, {
            obj.Position.X,
            obj.Position.Y,
            obj.Position.Z,
            
            obj.Orientation.X,
            obj.Orientation.Y,
            obj.Orientation.Z,
                
            obj.Name,
            obj.Anchored,
            obj.CanCollide,
        })
    end
    
    local sucess, err
    
    repeat
        sucess, err = pcall(function()
            InstanceSaveData:UpdateAsync(Key, function()
                return Data
            end)
        end)
        
        task.wait()
    until sucess
    
    if not sucess then
        warn("Failed to load obj")
    end
    
end
#
local function Save(player: Player)
    local Key = KeyPrefix .. tostring(player.UserId)
    
    local data
    local sucess, err
    
    repeat
        sucess, err = pcall(function()
            data = InstanceSaveData:SetAsync(Key)
        end)
        task.wait()
    until sucess or not Players:FindFirstChild(player.Name)
    

    if not data then
        return
    end
    
    if sucess then
        for i, obj in ipairs(data) do
            local part = Instance.new("Part")
            part.Position = Vector3.new(obj[1], obj[2], obj[3])
            part.Name = obj[7]
            part.Orientation = Vector3.new(obj[4], obj[5], obj[6])
            
            part.Anchored = true
            part.TopSurface = Enum.SurfaceType.SmoothNoOutlines
            
            part.Parent = workspace.Folder
        end
    else
        warn("Did not save Obj data")
    end
end




Players.PlayerAdded:Connect(Load)
Players.PlayerRemoving:Connect(Save)
game:BindToClose(function()
    for _, players in pairs(Players:GetPlayers()) do
        Save(players)
    end
end)``
#

second one