Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- repeat wait() until _G.DataStoreName2 ~= nil
- local RatingDataCache = {}
- local Connections = {}
- local RemoteEvent = script.Parent.Parent:WaitForChild("UpdatedCache")
- local DataStore = game:GetService('DataStoreService'):GetOrderedDataStore(_G.DataStoreName2)
- function ParseKey(key,value)
- local itemid = key:match("Rating_(.+)")
- local index
- if itemid then
- index = "Rating"
- else
- itemid = key:match("Raters_(.+)")
- if itemid then
- index = "Raters"
- end
- end
- RatingDataCache[itemid] = RatingDataCache[itemid] or {}
- print(key,value)
- RatingDataCache[itemid][index] = value
- end
- function SendUpdateToClients()
- RemoteEvent:FireAllClients(false, true)
- end
- function GetRatingDataForCache()
- local pages = DataStore:GetSortedAsync(true, 100)
- while wait() do
- for i, item in ipairs(pages:GetCurrentPage()) do
- ParseKey(item.key,item.value)
- if not Connections[item.key] then
- Connections[item.key] = DataStore:OnUpdate(item.key,function(value)
- ParseKey(item.key,value)
- SendUpdateToClients()
- end)
- end
- end
- if pages.IsFinished then
- break
- end
- pages:AdvanceToNextPageAsync()
- end
- SendUpdateToClients()
- end
- spawn(function()
- while wait(15) do
- GetRatingDataForCache()
- end
- end)
- return function()
- return RatingDataCache
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement