You can make a folder in the player object called data and save the stuff there. That way it won’t show on the top right.
Just save the stuff in the data folder and load it back there when they join.
You most likely will not exceed that limit with the write practices, basically, don’t be saving time their values change, or even every minute, it is unneeded; in most cases you can just save when the player leaves.
Datastores have a limit in terms of data size (I believe 4MB), so your data is only limited if it’s huge.
There are multiple ways to do this. You can store the data anywhere other than leaderstats and it shouldn’t show. I’d recommend either putting a folder inside leaderstats or putting a folder inside the player and storing your data there.
Datastores can save most privative data types, so yeah.
Quoting the dev hub:
Since keys, names, and scopes are strings, their length can be checked with string.len() . Data is also saved as a string in data stores, regardless of its initial type. The size of data can be checked with the JSONEncode() function that converts Lua data into a serialized JSON table.
Basically, if it can be encoded by JSONEncode it can be stored.
I made a script that should help you out. It saves and loads the leaderstats folder for each player.
Edit:
The read/write limits are rate limits (you can only call the funciton X times per Y unit of time). There are some functions that let you see how many requests you have left.
It’s not really based on the number of values. For reference, 4 MB is about 4,000,000 characters according to this converter (pretty sure that’s ASCII though. Generally the data size is huge and you won’t run into it. People save entire maps, models, and games inside datastores).
You can see how much data can be stored by using JSONEcode then converting the string length to # of bytes.
You’d just need to save it like a normal piece of data. For example, in the script I wrote I saved the data as a table. DataStore2 also saves the data as a table (to store some meta data, information about the information).
You’d just get the string (from the TextBox) then use GlobalDataStore:SetAsync and set a key (specific to the player) to the string.
Here is the API for SetAsync:
I’d recommend the automatic datastore I posted above if you don’t know very much about datastores. If you use that you basically just have to create a StringValue, set its value, then add it to leaderstats.