Ok so I got the error:
Attempt to index nil with Data
even though profile is defined
Ok so I got the error:
Attempt to index nil with Data
even though profile is defined
What does your code look like?
local DataService = {Name = "DataService", ToLoad = {}}
local Players = game:GetService("Players")
local Rep = game:GetService("ReplicatedStorage")
local Server = game:GetService("ServerScriptService"):WaitForChild("Server")
local Modules = Server.Modules
local Services = Server.Services
function DataService:Init()
self.ProfileService = require(Modules.ProfileService)
self.DefaultData = require(Modules.DefaultData)
self.KeyHandler = require(Modules.KeyHandler)
self.AbbreviateModule = require(Modules.AbbreviateModule)
self.ProfileStore = self.ProfileService.GetProfileStore(
self.KeyHandler:GetKey(),
self.DefaultData
)
self.Profiles = {}
for _, module in pairs(script:GetChildren()) do
self.ToLoad[module.Name] = require(module)
end
task.spawn(function()
for _, player in pairs(Players:GetPlayers()) do
task.spawn(function()
self:PlayerAdded(player)
end)
end
Players.PlayerAdded:Connect(function(player)
self:PlayerAdded(player)
end)
end)
print(("%s initialized"):format(self.Name))
end
function DataService:PlayerAdded(player)
local profile
if game["Run Service"]:IsStudio() then
warn("[IsStudio]: Using mock profile data...")
profile = self.ProfileStore.Mock:LoadProfileAsync("Player_" .. player.UserId)
else
profile = self.ProfileStore:LoadProfileAsync("Player_" .. player.UserId)
end
if profile ~= nil then
profile:AddUserId(player.UserId)
profile:Reconcile()
profile:ListenToRelease(function()
self.Profiles[player] = nil
player:Kick()
end)
if player:IsDescendantOf(Players) == true then
self.Profiles[player] = profile
for _, v in pairs(self.ToLoad) do
task.spawn(v, player, profile)
end
else
profile:Release()
end
else
player:Kick()
end
end
function DataService:PlayerRemoving(player)
local profile = self.Profiles[player]
if profile ~= nil then
profile:Release()
end
end
function DataService:GetProfile(player: Player)
return self.Profiles[player]
end
return DataService
It’s not finding the profile, are you sure you’re not using userId instead of player as key?
I’m not using user id. I think it saves the profile as player instance