This seemed to work:
game.ReplicatedStorage.refreshingDatabase.Value = true
repeat wait() until game.ServerStorage.finishedSavingLoading.Value == true
local module = require(game.ServerScriptService.ModuleScripts.placeStats.ModuleScript)
local HTTP = game:GetService('HttpService')
local database = game.ServerStorage.Database
local refreshingData = game.ReplicatedStorage.refreshingDatabase
local genres = {"All", "Building", "Horror", "Town and City", "Military", "Comedy", "Medieval", "Adventure", "Sci-Fi", "Naval", "FPS", "RPG", "Sports", "Fighting", "Western", "Skatepark"}
local usedGenres = {}
local finishedGames = {}
local genreTables = {
All = {},
Building = {},
Horror = {},
TownAndCity = {},
Military = {},
Comedy = {},
Medieval = {},
Adventure = {},
SciFi = {},
Naval = {},
FPS = {},
RPG = {},
Sports = {},
Fighting = {},
Western = {},
Skatepark = {}
}
local function removeSymbols(str, symbol)
return str:gsub(symbol,"")
end
local function makeGameData(sort, gameSerial)
local gameFolder = Instance.new("Folder", database:FindFirstChild(sort.Name))
gameFolder.Name = tostring(gameSerial)
local clicks = Instance.new("IntValue", gameFolder)
clicks.Name = "Clicks"
local description = Instance.new("StringValue", gameFolder)
description.Name = "Description"
local online = Instance.new("IntValue", gameFolder)
online.Name = "Online"
local gameID = Instance.new("IntValue", gameFolder)
gameID.Name = "GameID"
local likes = Instance.new("IntValue", gameFolder)
likes.Name = "Likes"
local gameName = Instance.new("StringValue", gameFolder)
gameName.Name = "GameName"
local dislikes = Instance.new("IntValue", gameFolder)
dislikes.Name = "Dislikes"
local maxClicks = Instance.new("IntValue", gameFolder)
maxClicks.Name = "MaxClicks"
local visits = Instance.new("IntValue", gameFolder)
visits.Name = "Visits"
local favourites = Instance.new("IntValue", gameFolder)
favourites.Name = "Favorites"
local devsChoice = Instance.new("BoolValue", gameFolder)
devsChoice.Name = "devsChoice"
end
local function getData(placeId)
local stats = {}
local success, err = pcall(function()
local API = HTTP:JSONDecode(HTTP:GetAsync('https://www.rprxy.xyz/places/api-get-details?assetId=' .. placeId, true))
stats = {
OnlineCount = API.OnlineCount;
VisitedCount = API.VisitedCount;
Name = API.Name;
Created = API.Created;
Updated = API.Updated;
Description = API.Description;
FavoritedCount = API.FavoritedCount;
TotalUpVotes = API.TotalUpVotes;
TotalDownVotes = API.TotalDownVotes;
AssetGenre = API.AssetGenre
}
end)
return (err and warn(err)) or stats
end
local function makeGius(player, genre)
wait(1)
local playerGui = player.PlayerGui
local base = playerGui.Base
local baseBoard = playerGui.BaseBoard
local newBase = base:Clone()
local newBaseBoard = baseBoard:Clone()
newBase.Parent = playerGui
newBaseBoard.Parent = playerGui
newBaseBoard.Script.Disabled = false
newBase.MainFrame.Handler.Disabled = false
newBase.Name = genre
newBase.Info.Type.Value = genre
newBaseBoard.TypeText.Text = genre
newBaseBoard.Name = genre.."Board"
if baseBoard:FindFirstChild("Script") then
baseBoard.Script.Disabled = true
end
if base.MainFrame:FindFirstChild("Handler") then
base.MainFrame.Handler.Disabled = true
end
end
local function makeSorts()
local counter = 0
print("EEEEE")
for i, GameID in pairs(script:GetChildren()) do
local gameId = GameID.Value
for i, genre in pairs(genres) do
print(getData(gameId).AssetGenre)
if getData(gameId).AssetGenre == genre and not table.find(usedGenres, genre) then
print("A")
counter = 1
table.insert(usedGenres, counter, getData(gameId).AssetGenre)
local newFolder = Instance.new("Folder", database)
newFolder.Name = genre
print("B")
for i, player in pairs(game.Players:GetPlayers()) do
for i, genre in pairs(usedGenres) do
makeGius(player, genre)
end
end
print("CC")
for i, player in pairs(game.Players:GetPlayers()) do
local playerGui =player.PlayerGui
local base = playerGui.Base
local baseBoard = playerGui.BaseBoard
end
counter = 0
local modifiedGenre = ""
if genre:match(" ") then
modifiedGenre = removeSymbols(genre, " ")
elseif genre:match("-") then
modifiedGenre = removeSymbols(genre, "-")
end
local genreTable = genreTables[genre]
table.insert(genreTable, counter, modifiedGenre)
counter += 1
end
end
end
end
local function sortGames()
local counter = 0
for i, genre in pairs(database:GetChildren()) do
local counter = 0
for e, genreInTable in pairs(genreTables) do
for i, gameFolder in pairs(genreInTable) do
counter += 1
makeGameData(database:FindFirstChild(genre.Name), counter)
end
end
end
end
local newData = database:Clone()
newData.Parent = game.ReplicatedStorage
local function totalSortage()
print("Started total sortage")
database :ClearAllChildren()
game.ReplicatedStorage:WaitForChild("Database"):ClearAllChildren()
refreshingData.Value = true
print(1)
makeSorts()
print(2)
sortGames()
local sorts = database:GetChildren()
local games = script:GetChildren()
print(3)
for i, gameID in pairs(script:GetChildren()) do
local data = getData(gameID.Value)
for e, folder in pairs(database[data.AssetGenre]:GetChildren()) do
folder.Description.Value = data.Description
folder.Online.Value = data.OnlineCount
folder.GameID.Value = gameID.Value
folder.Likes.Value = data.TotalUpVotes
folder.GameName.Value = data.Name
folder.Dislikes.Value = data.TotalDownVotes
folder.Visits.Value = data.VisitedCount
folder.Favorites.Value = data.FavoritedCount
folder.Clicks.Value = gameID.currClicks.Value
folder.MaxClicks.Value = gameID.maxClicks.Value
folder.devsChoice.Value = gameID.devsChoice.Value
end
end
refreshingData.Value = false
game.ReplicatedStorage:WaitForChild("Database"):Destroy()
local newData2 = database:Clone()
newData2.Parent = game.ReplicatedStorage
print("Ended total sortage")
end
game.Players.PlayerAdded:Connect(function(player)
for i, genre in pairs(usedGenres) do
makeGius(player, genre)
end
end)
totalSortage()
print(genreTables)
while wait(30*60) do
totalSortage()
end