Which will pause a script until the character fully loads.
Or, you can do something like…
repeat wait() until gameloadrequirementsblablabla == true
Not sure if this one is the best way to do it though, but the “until gameloadrequirementsblablabla == true” is like an if statement. In this case, “if gameloadrequirementsblablabla == true”.
You will need multiple checks on the client, and you might be able to use a remote, attribute, or instance value to control things like the DataStore since that must be done on the server.
So, on the client, it could be something like:
local player = game:GetService("Players").LocalPlayer
local dataLoaded = player:WaitForChild("SomeBoolValueForData")
repeat task.wait(0.1) until game:IsLoaded()
player.CharacterAppearanceLoaded:Wait()
repeat task.wait(0.1) until dataLoaded.Value == true
-- can't use logic statement as it would just check whether the property exists