Top.Mail.Ru
Ответы

Что делать если в 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) 
По дате
По рейтингу
Аватар пользователя
Просветленный
4мес

вызываешь сохранение дважды с лишними wait(), и BindToClose перезаписывает правильное значение (12 превращается в 1), так что оставь только PlayerRemoving и тестируй в опубликованном режиме, а не в Studio.