Hey Guys so i have a placement datastore and stuff And R To rotate by 90 Degrees but. Whenever you rejoin it saves the placement but it does not save your rotation when you rejoin it rotates by 90 degrees and then you rejoin again it rotates by 180 degrees and keep on adding 90 degrees to it Here is the script.
local players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local DataStore = DataStoreService:GetDataStore("DatBaseV2")
local function GetPlot(plr)
for i, plt in pairs(workspace.Plots:GetChildren()) do
if plt then
if plt.Plot.Owner.Value == plr then
return workspace.Plots:FindFirstChild(plt.Name)
end
end
end
end
local function Save(plr)
local key = "plr-"..plr.UserId
wait(0.1)
local plot = GetPlot(plr)
local save = {}
for i, obj in pairs(plot.PlacedObjects:GetChildren()) do
if obj then
table.insert(save, {
["Name"] = obj.Name,
["CFS"] = {
["X"] = plot.Plot.CFrame:ToObjectSpace(CFrame.new(obj.PrimaryPart.CFrame.p)).X;
["Y"] = plot.Plot.CFrame:ToObjectSpace(CFrame.new(obj.PrimaryPart.CFrame.p)).Y;
["Z"] = plot.Plot.CFrame:ToObjectSpace(CFrame.new(obj.PrimaryPart.CFrame.p)).Z;
["R"] = obj.PrimaryPart.Orientation.Y
}
})
end
end
local success, err = pcall(function()
DataStore:SetAsync(key, save)
end)
if not success then
warn("Failed to over-write data( "..tostring(err))
return
end
end
local function Load(plr)
wait(1)
local plot = GetPlot(plr)
local key = "plr-"..plr.UserId
local savedData
local success, err = pcall(function()
savedData = DataStore:GetAsync(key)
end)
if not success then
warn("Failed to read data( "..tostring(err))
return
end
if savedData then
for i, data in pairs(savedData) do
if data then
local SaveModel = game.ReplicatedStorage.Models:FindFirstChild(data.Name):Clone()
if SaveModel then
SaveModel.PrimaryPart.Transparency = 1
SaveModel:SetPrimaryPartCFrame(plot.Plot.CFrame * CFrame.new(data.CFS.X,data.CFS.Y,data.CFS.Z) * CFrame.Angles(0,math.rad(data.CFS.R), 0) )
SaveModel.Parent = plot.PlacedObjects
end
end
end
else
Save(plr)
end
end
game.ReplicatedStorage.Events.Save.OnServerEvent:Connect(Save)
players.PlayerAdded:Connect(Load)
players.PlayerRemoving:Connect(Save)

11 comments
when you multiply by angles you're adding angles on top of the current angle
then you're saving the current angle, adding to that angle, every time you load etc.
How would i fix that? Cause my friend made the uhm datastore cause i am not good with Math scripting And Tables.
Like idk how to fix it that is why i am asking like how will i fix it as in a example? Or a link to a video or Something to teach me how to fix it.
Don't multiply it by angles unless you want to change the Cframe. just set the cframe to the previously saved cframe.
I have a lab I'll be back in an hour if you need more help
I Think i do i kinda know what you mean but i wanna be 100% Sure Cause i am still not 100% sure on what to do.
Yeah idk how i try'd XD!
What did you try
Try'd / and + - .. , and all of that.
i mean what code did you write and please comment in my answer I can't see your comments in my notifications otherwise