Ошибка «для ограничения должно быть число» в roblox (сохранение и загрузка данных) - PullRequest
0 голосов
/ 31 марта 2020

Я выровнял своего персонажа и получил несколько предметов, когда я вернулся, он не загружал мои предыдущие данные, Он дал мне уровень 0 и не загружал никаких предметов (он не давал никакого вывода для проблемы уровня, но он выдал этот вывод для проблемы с элементом: предел 'for' должен быть числом), но PLD.ItemNumber - это число, потому что оно из переменной "ItemNumber" в функции сохранения. Как это исправить? Код:

local DataStoreService = game:GetService("DataStoreService");
local PD = DataStoreService:GetDataStore("PlayerData");

function SaveData(Player)
    local TableSave = {};
    TableSave.Level = Player.PlayerData.Stats.Level.Value;
    local TableItems = {};
    local ItemNumber = 0;
    for i,v in pairs(Player.PlayerData.Items:GetChildren()) do
        ItemNumber = ItemNumber + 1;
        TableItems["Item"..ItemNumber]={};
        local TI = TableItems["Item"..ItemNumber];
        TI.ItemName = v.Name;
        TI.Level = v.Level.Value;
        TI.Damage = v.Damage.Value;
    end
    table.insert(TableSave,TableItems);
    TableSave.ItemNumber = ItemNumber;
    PD:SetAsync(Player.userId,TableSave);
end

function LoadData(Player)
    local success, err = pcall(function()
        PLD = PD:GetAsync(Player.userId);
    end)
    if success then
        Player.PlayerData.Stats.Level.Value = PLD.Level;
        for i = 1,PLD.ItemNumber do
            local CurrentItem = Instance.new("Folder");
            CurrentItem.Name = PLD[1]["Item"..i].ItemName;
            local Lv = Instance.new("IntValue");
            Lv.Name = "Level";
            Lv.Value = PLD[1]["Item"..i].Level;
            Lv.Parent = CurrentItem;
            local Dm = Instance.new("IntValue");
            Dm.Name = "Damage";
            Dm.Value = PLD[1]["Item"..i].Damage;
            Dm.Parent = CurrentItem;
            CurrentItem.Parent=Player.PlayerData.Items;
        end
    else
        print("ERROR IN GET ASYNC");
    end
end

game.Players.PlayerRemoving:Connect(function(plr)
    repeat wait() until plr.PlayerData;
    SaveData(plr);
end)

game.Players.PlayerAdded:Connect(function(plr)
    repeat wait() until plr.PlayerData;
    LoadData(plr);
end)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...