Итак, я делаю Обби в Роблокс. У меня есть хранилище данных для сохранения значения таблицы лидеров, которые представляют собой монеты и контрольные точки. Хранилище данных, которое у меня есть, находится в ServerScriptService.
Проблема в том, что, когда игрок впервые присоединяется к игре, и он, например, проходит первые 5 уровней игры и получает 2 монеты. В следующий раз, когда они присоединятся к игре, они все еще находятся на 5 уровне, и у них все еще есть 2 монеты из предыдущей игры. Но если они теперь играют в игру (то есть, они входят в игру во второй раз) и, скажем, они достигают уровня 10 и имеют 4 монеты, процесс должен go выглядеть так, если игрок сейчас выходит из игры и когда они возвращаются , они должны быть на уровне 10 и иметь 4 монеты.
Но происходит то, что они не на уровне 10, и у них нет 4 монет, они все еще на уровне 5 и их монеты равны 2. Так же, как их прогресс был в их первой игре.
Почему это хранилище данных не обновляет значения в таблице лидеров в третий раз, когда игрок входит в игру? И так далее?
Вот скрипт, который содержит все хранилище данных, которое находится в ServerScriptService:
local DataStoreService = game:GetService("DataStoreService")
local myDataStore = DataStoreService:GetDataStore("myDataStore")
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder", player)
leaderstats.Name = "leaderstats"
local Checkpoint = Instance.new("IntValue", leaderstats)
Checkpoint.Name = "Checkpoint"
Checkpoint.Value = 1
local coins = Instance.new("IntValue", leaderstats)
coins.Name = "Coins"
coins.Value = 0
--Checkpoint Section
player.CharacterAdded:Connect(function(character)
repeat wait() until player.character ~= nil
local checkpoint = game.Workspace.Checkpoints:FindFirstChild(Checkpoint.Value)
character:WaitForChild("HumanoidRootPart").CFrame = CFrame.new(checkpoint.Position +
Vector3.new(0, 2, 0))
end)
-- Data Store Section
local playerUserId = "Player_"..player.UserId
print(playerUserId)
-- Load Data
local data
local success, errormessage = pcall(function()
data = myDataStore:GetAsync(playerUserId)
end)
if success then
if data then
coins.Value = data.Coins
Checkpoint.Value = data.Checkpoint
-- Set our data equal to the current Coins
end
end
end)
game.Players.PlayerRemoving:Connect(function(player)
local playerUserId = "Player_"..player.UserId
local data = {
Coins = player.leaderstats.Coins.Value;
Checkpoint = player.leaderstats.Checkpoint.Value;
}
local success, errormessage = pcall(function()
myDataStore:SetAsync(playerUserId, data)
end)
if success then
print("Data successfully saved!")
else
print("There was an error saving the data!")
warn(errormessage)
end
end)
Пожалуйста, помогите, так как мне действительно нужен ответ.
Спасибо