Save your player data with ProfileService! (DataStore Module)

sorry for bumping, but yes how would i go on about saving things other than players, like cars? honestly this is a good dataservice. and have been using for alot of my games but. one thing i have not figured out yet is things other than leaderstats.

I don’t think it’s recommended to use it for non-players, due to datastore limits. Make sure to keep track of datastore ‘queue’ warnings in the output.

You can create a new ProfileStore. Then use it to store profiles for your cars. Every profile needs to have a unique key (UUID probably). Then use the profile as you would normally.

This is assuming the cars have the same behavior as players: they are created/destroyed during server runtime.

Perhaps using regular datastores would be best depending on your usecase.

@TheFastest10001

1 Like

i was thinking of using StringValues instead, so pretty much save string values with profile service, have their values be as the names of the cars, store that in a folder in replicatedstorage called “Cars” , have profileservice make a new folder called “Car Lists” inside the player, and when a player buys a car, it would find the stringvalue inside the Cars Folder and just put it inside Cars List. and then just have profile service save that. would that work? i havent tested it yet at all.

If you want to save cars of a specific player then yes.

But if cars aren’t linked to a player, you shouldn’t have it be in a player’s data.

You can always go without StringValue instances, giving you more control over replication.

got it to work, but hey appreciate for helping though.

Hi to be honest I won’t use ProfileService to make a guild system I would make my own system with UpdateAsync()

1 Like

is it needed to kick the player when the profile is released? this functionality makes ListenToHopReady unusuable unless I’m missing something, if I am please guide me in the right direction

I don’t think it is necessary to kick the player when the profile is released, but I do believe it is good practice to “tie” the player with their profile. From my understanding, I believe ProfileService is very good as an abstract management for PlayerData, so I would generally kick the player if we are not keeping their profile in said server. I think there are particular niche cases, where to be on the safe side, you could kick them while releasing their profile.

Hi! I really want to try this module and just started working with Rojo in VS Code, and I was wondering if there was a way to install this in my packages with Rojo and Wally?

Thanks a bunch!

Hi,

Sorry for this stupid question, this is my first time handling Datastore.
Does the data save if we edit the values manually on the server? I am currently figuring out how to make a custom keybinding system.

How can I change the name of the datastore this modulescript creates?

You need to install Aftman (A tool chain manager), to install the Wally package tool.

Edit: But I believe ProfileService is not supported by Wally yet, so you would still need to add the package manually into your game.

You can use the port of profile service by @grilme99

1 Like

Does anyone know how I can save button positions?
I’m making a system to change the button positions and I want to save the positions when the player leaves, I have no idea how to save udim2.

Convert it to a vector2 and then save it after that apply the same vector2 to the udim2
Convert Udim2 → Vector2: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwir-qb4qKuEAxWdWEEAHeU7AGEQFnoECBwQAQ&url=https%3A%2F%2Fdevforum.roblox.com%2Ft%2Fconverting-udim2-to-vector2%2F1198982&usg=AOvVaw2bLU5yRfrQI9AaYM2SUAet&opi=89978449

1 Like

how would i use profile service to save which tools a player has obtained that is in a folder inside the player?

are profiles properly released if Deferred Signal Behavior is enabled?

I’ve been getting some reports that they load for 30-45 seconds (session is locked). This is only after I’ve enabled the mode

Personally how I do it is, right before they leave I create an empty table and run a for loop on their backpack on all the children, then I check if it’s a tool and has a certain tag which indicates it’s allowed to be saved. Then if the tool is allowed to be saved I just run table.insert(newBackpack, {name = "toolName", Data1 = "data1", Data2 = "Data2", Data3 = "Data3"}). All the data entries represent what I would need to save, i.e. Magazine count, Durability, Gas, Colors, etc.

Then I override their existing “Backpack” datastore with this new table.

Had to change the signal behavior on a game because players data were not saving somehow with Deferred.

1 Like

I literally just finished my datastore module today and I came across this. Wow I do not have the time nor the patience to make something as involved as this! Might use it for future projects… kinda sucks that I will throw my newly created module.

Great work man :clap: