Цель
Сохранить простое значение
Подготовка
Опубликованная тестовая игра; ServerScriptService → Script WinsData; включён API Services для тестовой игры.
Пошаговая работа
- Создай отдельную копию проекта для урока №76.
- Опубликованная тестовая игра; ServerScriptService → Script WinsData; включён API Services для тестовой игры.
- Сделай отдельный тестовый place
- Сохраняй число побед
- Обрабатывай ошибки pcall
- Запусти Play и проверь результат по контрольным условиям.
Пример Luau
local Players = game:GetService("Players")
local store = game:GetService("DataStoreService"):GetDataStore("WinsLessonV1")
Players.PlayerAdded:Connect(function(player)
local wins = Instance.new("IntValue")
wins.Name = "Wins"
wins.Parent = player
local ok, value = pcall(function()
return store:GetAsync(tostring(player.UserId))
end)
if ok and type(value) == "number" then wins.Value = value end
if not ok then warn("Загрузка не удалась") end
end)
Players.PlayerRemoving:Connect(function(player)
local wins = player:FindFirstChild("Wins")
if not wins then return end
local ok = pcall(function()
store:SetAsync(tostring(player.UserId), wins.Value)
end)
if not ok then warn("Сохранение не удалось") end
end)Проверка
После повторного входа восстанавливается счёт
После нового входа число Wins восстанавливается, если запросы DataStore успешны.
Ошибка и ограничения
Два скрипта перезаписывают одну запись. Учебный SetAsync не защищает от конфликта параллельных серверов и не гарантирует сохранение при аварии.
Усложнение
Добавь отметку времени сохранения
Проверь пример в тестовой Roblox Studio перед публикацией. Используй отдельные копии проектов и не подключай два конкурирующих сохранения одновременно.
