The GitHub page apparently got deleted? Is that gonna be fixed?
Working on an updated version, sorry about that
When will the documentation/github be fixed?
Thanks for reminding me, probably right now
Do you know when it’ll be updated?
Yeah soon just making a few code changes. I will notify you upon finish.
Everything looks great and very easy to understand but I have a quick question, is there a way to easily check if the players data has been changed? I see that there is __index but not __newindex so I’m not entirely sure. Another question is how do I override the data if they’re offline? Like how do I change it? I saw it in the documentation and it didn’t mention anything about how to do it.
There’s no way to check if it has been changed; to change it when they are offline use the function returned from :GetProfileAsync()
(in a tuple #2) which when run will override it with the edited table from tuple #1
Also if you ever want to add it to yours, this is how you can detect value change (does not detect tables)
local function PlayerAdded(player : Player)
ServerDataStore:LoadProfileAsync(player, true):After(function(success, playerProfile)
if not success then
player:Kick(DataErrorMessage)
return
end
--/ Create Leaderstats
playerProfile:CreateProfileLeaderstats(player, {"Coins"})
local profile = playerProfile.Profile
local dummy = {
Data = {}
}
local callbacks = {}
--/ Value Changing
dummy.Data.__index = function(_,index)
return profile.Data[index]
end
dummy.__index = function(_,index)
if (index ~= "Data") then
return profile[index]
end
end
dummy.Data.__newindex = function(_,index,value)
profile.Data[index] = value
local callback = callbacks[index]
if not callback or typeof(callback) ~= "table" then return end
for _, callback in callback do
coroutine.wrap(callback)(value)
end
end
dummy.__newindex = function(_,index,value)
profile[index] = value
end
setmetatable(dummy.Data,dummy.Data)
setmetatable(dummy,dummy)
function dummy:OnDataValueChanged(index, callback)
if (not callbacks[index]) then
callbacks[index] = {}
end
table.insert(callbacks[index],callback)
local Connection = {}
function Connection:Disconnect()
table.remove(callbacks[index],table.find(callbacks[index],callback))
end
return Connection
end
dummy:OnDataValueChanged("Coins", function(new)
print("Coins:", new, "Data:", playerProfile:GetProfileData().Coins)
end)
LoadedProfiles[player] = dummy
end)
end
So this will change their data? I’m not sure what you exactly mean by tuple #2, etc.
ServerDataStore:GetProfileAsync(1):After(function(success, data)
data.Cash += 100
end)
My bad, it would be success, data, overwrite
in that order where overwrite is a function you can run.
Hey! Been using the old DataService module you created, and stumbled upon this. Would love to be able to view the github for better documentation but it seems the page is down. Hopefully you’re able to revive it? I genuinely enjoyed your DataService module but want to see what this project itself entails!
Hello, nice release and work You should add in your documentation how to update data and how to change data so it’s more easily understable for everyone
Yes, I agree - I can’t seem to figure out how to use GetProfileAsync(). I’m trying to edit a profile outside of the player added function, and the documentation is very unhelpful.
Hi! Sorry to see many people struggling but we actually discontinued EasyProfile a while back.
Again, the documentation is still hosted here. But if many people still use this resource then I’ll probably ask the OP to update the post.
The main reason EasyProfile was discontinued was in favour of data store v2.
Post is locked; use alternatives such as DocumentService or the new datastore APIs coming soon.