Последний элемент двумерного массива не попадает в save

  1. 7 months ago

    v.v.b.

    May 2017 Постоялец Нижний Новгород User since 2014
    Edited 7 months ago by v.v.b.

    Spoiler!

    instead_version '1.7.0'
     
    global
    {
        map = {},
    };
     
    main = room
    {
        nam = 'test',
        pic = true,
        enter = function (s, from)
            map_generate ()
        end,
        dsc = function (s)
            p (#map)
            p (#map[1])
            p (#map[2])
            return;
        end,
        obj =
        {
        },
        exit = function (s, to)
        end,
    };
     
     
    function map_generate ()
        local t;
        for i = 1, 2 do
            map[i] = {};
            for j = 1, 2 do
                m =
                {
                    land = ''
                };
                table.insert (map[i], m);
            end
        end
    end

    запускаем, созадётся массив 2x2
    жмём "сохранить игру". смотрим сейв -- элемент map [2][2] в сейве отсутствует

  2. technix

    May 2017 Постоялец User since 2014

    Не воспроизводится ни в INSTEAD 2.4.1, ни в 3.0:

    Spoiler!

    -- $Name: test$
    pl.where = "main";
    main["__visited"] = 1
    main["__from__"]="main"
    game.pl = "pl"
    game["_running"] = true
    game["_time"] = 1
    game["_sound_loop"] = 1
    game["_lastdisp"]="2 2 2  \
    "
    game["_sound_channel"] = -1
    game["_scripts"] = {};
    map = {};
    map[1] = {};
    map[1][1] = {};
    map[1][1]["land"]=""
    map[1][2] = {};
    map[1][2]["land"]=""
    map[2] = {};
    map[2][1] = {};
    map[2][1]["land"]=""
    map[2][2] = {};
    map[2][2]["land"]=""
    _VERSION="Lua 5.1"

  3. peter

    May 2017 Administrator Земля(Москва) User since 2014
    Edited 7 months ago by peter

    Тоже не воспроизвел. Покажи сейв тогда? Что за lua? Что за инстед?

  4. v.v.b.

    May 2017 Постоялец Нижний Новгород User since 2014

    инстед из git. git log выводит что последний коммит был 19 апреля "2.5.0 -> 3.0.0"
    сейв:

    Spoiler!

    -- $Name: test$
    main["__visited"] = 1
    main["__from__"]="main"
    pl.where = "main";
    game.pl = "pl"
    game["_scripts"] = {};
    game["_time"] = 1
    game["_lastdisp"]="2 2 2 \
    "
    game["_sound_channel"] = -1
    game["_sound_loop"] = 1
    game["_running"] = true
    map = {};
    map[1] = {};
    map[1][1] = {};
    map[1][1]["land"]=""
    map[1][2] = {};
    map[1][2]["land"]=""
    map[2] = {};
    map[2][1] = {};
    map[2][1]["land"]=""
    _VERSION="Lua 5.1"

  5. peter

    May 2017 Administrator Земля(Москва) User since 2014
    Edited 7 months ago by peter

    У тебя перед m не стоит local. В итоге ты добавляешь все время один и тот же глобальный объект. Вероятно, это оно. В 3.0 это бы сразу дало ошибку кстати. :)
    m = замени на local m =

  6. v.v.b.

    May 2017 Постоялец Нижний Новгород User since 2014

    помогло, спасибо

  7. 4 months ago

    v.v.b.

    Aug 4 Постоялец Нижний Новгород User since 2014

    если пустой вложенный массив не попадает в сейв, это снова ошибка local?

  8. peter

    Aug 4 Administrator Земля(Москва) User since 2014

    Без примера не смогу ответить.

or Sign Up to reply!