I got a “right to erasure” request from roblox asking me to delete someone’s data in 2 games. I The only datastore I had in either of those games was Kohls Admin which is a really really big problem because I can’t get the datastore key to delete the data with a script. Is there anyway around this? (Like deleting the admin script, etc.)
Did the script even store any data for players?
Brings up a good point. People who are unexperienced will have difficulty removing data like this when they are not the one that made the data.
The datastore key related to admin saves is "KSave"
I would also check "KPrivateServers"
.
Here is a function you can try using to remove the save info on a specific person, but hopefully preserve all of your admins. :
local DataStoreService = game:GetService("DataStoreService")
local DataStore = DataStoreService:GetGlobalDataStore()
local Save = DataStore:GetAsync("KSave")
local function Erase(UserId)
local NewSave = {}
for i, Value in pairs(Save) do
NewSave[i] = Value:gsub(UserId .. ":".."%-?%d*", "")
end
DataStore:SetAsync("KSave", NewSave)
end
Erase("USER_ID")
Here is the source code for the kohl’s admin save function. The admins are inside an array saved by the KSave
key.
f.Cache = function(a, b)
b = ""
for i, v in next, a do
if v < 0 and v > -6 then
b = b .. " " .. i .. ":" .. v
end
end
return b
end
f.unCache = function(a, b, c, d)
b = {}
for i in a:gmatch("%S+") do
c, d = i:match("(.+):(.+)")
if tonumber(d) > -6 then
b[tonumber(c)] = tonumber(d)
end
end
return b
end
f.ForceSave = function(a, b, c)
a, b =
wrap(
function(a, b)
a = {f.Cache(Admins), f.Cache(Bans)}
if Set.IGS then
b = {}
for i, v in next, Set do
if i == "Color" then
b[i] = v.r .. "|" .. v.g .. "|" .. v.b
elseif i ~= "GroupAdmin" and i ~= "VIPAdmin" and i ~= "Permissions" then
b[i] = v
end
end
table.insert(a, s.HTTP:JSONEncode(b))
end
DS:SetAsync("KSave", a)
end
)
if not a then
print(SN .. ":\tSaving data failed!", b or "")
end
return a
end
1 Like