Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не работает сохранение вещей в роблокс студио(Lua)

Денисов Брий Ученик (189), открыт 4 недели назад
 local DataStoreService = game:GetService("DataStoreService") 
local Players = game:GetService("Players")

local itemDataStore = DataStoreService:GetDataStore("PlayerItems")

-- Функция для загрузки предметов игрока
local function loadPlayerItems(player)
local success, data = pcall(function()
return itemDataStore:GetAsync(player.UserId)
end)

if success and data then
for _, item in ipairs(data) do
local newItem = game.ReplicatedStorage:WaitForChild(item):Clone() -- Загружаем предмет по имени
newItem.Parent = player.Backpack -- Добавляем в рюкзак игрока
end
end
end

-- Функция для сохранения предметов игрока
local function savePlayerItems(player)
local items = {} -- Список предметов игрока
for _, item in ipairs(player.Backpack:GetChildren()) do
table.insert(items, item.Name) -- Сохраняем название предмета
end

local success, err = pcall(function()
itemDataStore:SetAsync(player.UserId, items)
end)

if not success then
warn("Ошибка при сохранении данных: " .. err)
end
end

-- Подписываемся на события
Players.PlayerAdded:Connect(loadPlayerItems)
Players.PlayerRemoving:Connect(savePlayerItems)
Код этот поместил в ServerScriptService
2 ответа
Sergio 2.1 Оракул (67427) 4 недели назад
 local DataStoreService = game:GetService("DataStoreService") 
local Players = game:GetService("Players")

local itemDataStore = DataStoreService:GetDataStore("PlayerItems")

-- Функция для загрузки предметов игрока
local function loadPlayerItems(player)
local success, data = pcall(function()
return itemDataStore:GetAsync(player.UserId)
end)

if success then
if data then -- Проверяем, есть ли данные
for _, item in ipairs(data) do
local itemTemplate = game.ReplicatedStorage:FindFirstChild(item)
if itemTemplate then -- Проверяем существование предмета
local newItem = itemTemplate:Clone()
newItem.Parent = player.Backpack
end
end
end
else
warn("Ошибка при загрузке данных игрока")
end
end

-- Функция для сохранения предметов игрока
local function savePlayerItems(player)
local items = {}
for _, item in ipairs(player.Backpack:GetChildren()) do
table.insert(items, item.Name)
end

-- Добавляем повторные попытки сохранения
local attempts = 3
local saved = false

while attempts > 0 and not saved do
local success, err = pcall(function()
itemDataStore:SetAsync(player.UserId, items)
end)

if success then
saved = true
print("Данные игрока успешно сохранены")
else
attempts = attempts - 1
warn("Попытка сохранения не удалась. Осталось попыток: " .. attempts)
wait(1) -- Ждем секунду перед следующей попыткой
end
end
end

Players.PlayerAdded:Connect(loadPlayerItems)
Players.PlayerRemoving:Connect(savePlayerItems)
Илья Попов Ученик (149) 2 недели назад
Можно попробовать сохранять не вещи в инвентаре, а переменные которые буду равняться true если предмет у игрока в Character или в BackPack. А после, когда игрок заходит обратно игру проверяются эти переменные и добавляются предметы в BackPack, переменные которых были равны true.
Похожие вопросы