Что делать если в DataStore сохраняются не правильные данные? (Roblox Studio)
Проблема такая что в режиме когда набираю например 12 очков, при выходе сохраняется значение "1". В итоге при следующем заходе в игру, получается что у меня только 1 очко.
Вот скрипт который сохраняет данные:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
game:BindToClose(function()
wait(0.5)
for _, Player in pairs(game:GetService("Players"):GetPlayers()) do
for i, v in pairs(CONFIG) do
if v.OtherFolder == true then
for a, b in pairs(Player:GetChildren()) do
if b.Name == v.FolderName then
for c, d in pairs(v.ValuesTable) do
local Storage = DataStore:GetDataStore(v.FolderName.."_"..c)
local success, errorMessage = pcall(function()
Storage:SetAsync(Player.UserId, Player:WaitForChild(v.FolderName):WaitForChild(c).Value)
end)
if not success then
warn(errorMessage)
end
wait()
end
end
end
elseif v.OtherFolder == false then
local Storage = DataStore:GetDataStore(MainFolder_Name.."_"..v.ValueName)
local success, errorMessage = pcall(function()
Storage:SetAsync(Player.UserId, Player:WaitForChild(MainFolder_Name):WaitForChild(v.ValueName).Value)
end)
if not success then
warn(errorMessage)
end
end
wait()
end
end
end)
game:GetService("Players").PlayerRemoving:Connect(function(Player)
wait(0.5)
for i, v in pairs(CONFIG) do
if v.OtherFolder == true then
for a, b in pairs(Player:GetChildren()) do
if b.Name == v.FolderName then
for c, d in pairs(v.ValuesTable) do
local Storage = DataStore:GetDataStore(v.FolderName.."_"..c)
local success, errorMessage = pcall(function()
Storage:SetAsync(Player.UserId, Player:WaitForChild(v.FolderName):WaitForChild(c).Value)
print(Storage:GetAsync(Player.UserId))
end)
if not success then
warn(errorMessage)
end
wait()
end
end
end
elseif v.OtherFolder == false then
local Storage = DataStore:GetDataStore(MainFolder_Name.."_"..v.ValueName)
local success, errorMessage = pcall(function()
Storage:SetAsync(Player.UserId, Player:WaitForChild(MainFolder_Name):WaitForChild(v.ValueName).Value)
print(Storage:GetAsync(Player.UserId))
end)
if not success then
warn(errorMessage)
end
end
wait()
end
end)
По дате
По рейтингу
вызываешь сохранение дважды с лишними wait(), и BindToClose перезаписывает правильное значение (12 превращается в 1), так что оставь только PlayerRemoving и тестируй в опубликованном режиме, а не в Studio.
Больше по теме