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

  1. 4 months ago

    v.v.b.

    May 4 Постоялец Нижний Новгород User since 2014
    Edited 4 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 4 Постоялец 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 4 Administrator Земля(Москва) User since 2014
    Edited 4 months ago by peter

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

  4. v.v.b.

    May 4 Постоялец Нижний Новгород 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 4 Administrator Земля(Москва) User since 2014
    Edited 4 months ago by peter

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

  6. v.v.b.

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

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

  7. 7 weeks ago

    v.v.b.

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

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

  8. peter

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

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

or Sign Up to reply!