#lua #roblox
#lua #roblox
Вопрос:
Поэтому я создал систему хранения данных, которая экономит серебро. Я использовал pcalls, и всякий раз, когда игрок уходит, я либо не получаю сообщения, либо просто успешно сохранен, странно, что я никогда не получаю никаких ошибок.
Однако это не работает. Я пытался сделать это в самом Roblox, а не только в Studio. Не работает. Это серверный скрипт в ServerScriptService.
Пожалуйста, помогите: D
local dataStore = game:GetService("DataStoreService"):GetDataStore("myDataStore")
game.Players.PlayerAdded:Connect(function(plr)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = plr
local silver = Instance.new("IntValue")
silver.Name = "Silver"
silver.Parent = leaderstats
local playerUserId = "Player_"..plr.UserId
local data
local success, errormessage = pcall(function()
data = dataStore:GetAsync(playerUserId)
end)
if success then
silver.Value = data
end
end)
game.Players.PlayerRemoving:Connect(function(plr)
local playerUserId = "Player_"..plr.UserId
local data = plr.leaderstats.Silver.Value
local success, errormessage = pcall(function()
dataStore:SetAsync(playerUserId, data)
end)
if success then
print("Data successfully saved.")
else
print("Error when saving data.")
warn(errormessage)
end
end)```
Ответ №1:
Для хранилищ данных требуется строка в качестве ключа. Вы передаете целое число в SetAsync, вам нужно будет преобразовать его в строку с помощью tostring()
функции.
Ваш исправленный код должен выглядеть следующим образом.
local dataStore = game:GetService("DataStoreService"):GetDataStore("myDataStore")
game.Players.PlayerAdded:Connect(function(plr)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = plr
local silver = Instance.new("IntValue")
silver.Name = "Silver"
silver.Parent = leaderstats
local playerUserId = "Player_"..plr.UserId
local data
local success, errormessage = pcall(function()
data = dataStore:GetAsync(tostring(playerUserId))
end)
if success then
silver.Value = data
end
end)
game.Players.PlayerRemoving:Connect(function(plr)
local playerUserId = "Player_"..plr.UserId
local data = plr.leaderstats.Silver.Value
local success, errormessage = pcall(function()
dataStore:SetAsync(tostring(playerUserId), data)
end)
if success then
print("Data successfully saved.")
else
print("Error when saving data.")
warn(errormessage)
end
end)