I searched this topic on the dev forums and nothing seems to work. I installed crazyman32’s datastore editor plugin and nothing happened. I’m relatively new to scripting so I don’t know what to do here. I just want to make a game on my free time I don’t want legal issues. Can somebody help me please? Thanks
This means you need to remove all the data you hold about the player in your game. If all you using are data stores to store players data you can simply use the DataStore:RemoveAsync(Key) function to remove any data you hold about the player in your data stores.
For more information about removing data from data stores can be found on the data store page on the developers hub:
Here is a post on a similar topic explaining what to do with GDPR take down requests:
local sampleDataStore = game:GetService("DataStoreService"):GetDataStore("MyDataStore")
game.Players.PlayerRemoving:Connect(function(player)
local playerKey = "Player_" .. player.UserId
local success, val = pcall(function()
return sampleDataStore:RemoveAsync(playerKey)
end)
if success then
print(val)
end
end)
That information is all kept on the client. Is there a script saving the data? If you know the key then maybe use a data remover plugin if you can not figure out how to use the command.
Data stores are accessed using DataStoreService. If that script uses it, you should figure out how it stores data so you can figure out what to delete. If this is a public script you could also share it here too.
You can ran the thing that water gave you, RemoveAsync, in the command bar. If the command bar isn’t on your view, you can enable it from the Studio ribbon bar menu.
With whatever UserId is given to you in the PM, paste in the command bar:
local DataStoreService = game:GetService("DataStoreService")
local DataStore = DataStoreService:GetDataStore("PUT THE NAME HERE")
DataStore:RemoveAsync(PUT THE USER ID HERE)
This must be done for any and all DataStores that exist in your game. Once that has been taken care of and you confirm that there’s no data (you can run a quick GetAsync and print the result if you’re really visual about it), you should be good.
For games that integrate more tracking features than just DataStores, they will have to clear records manually on that service.
Can you search for any instances of “DataStoreService” in your game? Press Ctrl+Shift+F on Windows (Command+Shift+F on Mac) and search for DataStoreService (make sure “Look in” is set to “All Scripts”). If any scripts appear, look inside them for calls to GetDataStore, GetGlobalDataStore, or GetOrderedDataStore. These would be loading data stores where keys can be added, modified, and deleted.
Ok there’s one script with that inside. It has “GetDataStore” inside. Now how would I delete or modify the key for the specific userID with this information?
local DataStore = game:GetService("DataStoreService")
local gameData = DataStore:GetDataStore("data 2")--When making a Data Store, DOOOOO NOTTTTT!!!!! Change this name unless you want to make new data for the game!
local Storage = script.Storage:GetChildren()
local maxLevel = 100
local function saveData(plr, folder)
warn("Saving Data...")
local dataToSave = {}
for i, folders in pairs(folder:GetChildren()) do
--Making SubTables or Tables inside the main table
dataToSave[i] = {}
for j, data in pairs(folders:GetChildren()) do
dataToSave[i][j] = data.Value
print(data.Name, dataToSave[i][j])
end
end
gameData:SetAsync(plr.UserId, dataToSave)
warn("Data Saved!")
end
game.Players.PlayerAdded:Connect(function(newPlr)
local PlrStats = Instance.new("Folder",newPlr)
PlrStats.Name = "PlrStats"
--Generating new Data
for i, folders in pairs(Storage) do
local newFold = folders:Clone()
newFold.Parent = PlrStats
end
--Looking for saved Data
local saves = gameData:GetAsync(newPlr.UserId)
--If the player has saved data
if saves then
warn("Player Data Found!")
--Loading data
for i, folders in pairs(PlrStats:GetChildren()) do
for j, data in pairs(folders:GetChildren()) do
data.Value = saves[i][j]
print(i,j,data.Name,data.Value)
end
end
--If the player doesn't have saved data
else
warn("Player Doesn't have Data...")
end
while wait() do
local exp = PlrStats:WaitForChild("PlrInfo"):WaitForChild("Exp")
local level = PlrStats:WaitForChild("PlrInfo"):WaitForChild("Level")
local Points = PlrStats:WaitForChild("PlrInfo"):WaitForChild("Points")
local needExp = PlrStats:WaitForChild("PlrInfo"):WaitForChild("ExpNeed")
local extraLevel = level.Value
local expNeed = ((extraLevel * 2)-1) * 5
needExp.Value = expNeed
if level.Value < maxLevel then
if exp.Value >= expNeed then
--Increase level by 1
level.Value = level.Value + 1
--Remove needed exp
exp.Value = exp.Value - expNeed
--Add points based on every level
Points.Value = Points.Value + 2
end
end
end
end)
game.Players.PlayerRemoving:Connect(function(oldPlr)
local PlrStats = oldPlr:WaitForChild("PlrStats")
saveData(oldPlr,PlrStats)
end)
This script seems to only save one key per player to one data store. Based on this, you should run this in the command bar with Studio API access enabled, or put it in a new Script and run it in a live server:
-- replace 123 with the proper ID
game:GetService('DataStoreService'):GetDataStore('data 2'):RemoveAsync(123)
This one-line script will get DataStoreService, then the specific data store that has the data, and remove the key based on the user’s ID.
That should be all you need to do data store wise. If you have any other info elsewhere off Roblox you need to manually remove it.
Looks fine since there wasn’t any errors. If you really want to be sure, try running this. It should print “nil” if the data was removed. If it prints anything else then it wasn’t removed.
You might want to hide the ID better in your screenshots, or copy the output and paste here with it removed instead. I personally wouldn’t want to risk anything by even partial reveals.
This command is supposed to print the value to the key of the user’s ID. Is it printing nothing at all?