Баги INSTEAD

  1. ‹ Older
  2. 5 months ago
    Deleted 5 months ago by peter
  3. peter

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

    Пряник, ты ошибся темой.

  4. Точно, пардон. Ща перенесу и поправлю

  5. 2 months ago

    Здравствуйте.

    Не удается заставить работать конструкцию:

    _'player2':take(_'hammer')

    при том что соблюдено соответствие типов:
    -игрок в мире INSTEAD представлен объектом типа 'player'

    player {
    	nam = 'player2';
    };

    -объекты – это единицы сцены, с которыми взаимодействует игрок:

    obj {
    	nam = 'hammer';
    	disp = 'молоток';
    }

    При переключении игрока, инвентарь остается пустым:

    change_pl(_'player2')

    Добавить предмет в инвентарь неактивного игрока невозможно?
    В разделе 28.5 инструкции приводится метод объекта с типом 'player':
    :take(w) – взять объект.

    Прошу знатоков прокомментировать.

  6. peter

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

    Привет. Пришли тест, на нем и отвечу.

  7. peter

    Aug 31 Administrator Земля(Москва) User since 2014
    Edited 2 months ago by peter

    А так, player:take(w) вызывает метод tak у объекта. То-есть это то, что происходит когда игрок кликает по объекту, который можно взять. Если tak нету - то и объект не возьмется.
    Если нужно безусловно поместить в инвентарь, то можно, например:

    place('hammer',  inv 'player2')
  8. Код ниже:

    Spoiler!
    function init()

            _'player2':take(_'hammer');
           
    end

    obj {
            nam = 'hammer';
            disp = 'молоток';
    }

    obj {
            nam = 'link';
            disp = 'ссылка';
            act = function(s)
                            if s.flag then
                                    change_pl(_'player');
                            else
                                    change_pl(_'player2');
                            end
                           
                            s.flag = not s.flag;
                      end;
            flag = false;
    }

    room {
            nam = 'main';
            title   = 'Тестовая комната';
            dsc     = false;       
            decor   = function()
                                    local gamer = me();
                                    p (gamer.nam);
                                    p('{link|Переключить игрока}') ;
                              end            
            obj = {'link'};
    }

     

    Прошу прощения за задержку. Оформлял текст.

  9. peter

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

    place('hammer', inv 'player2')
    Вместо :take

  10. Спасибо!
    Очень признателен.

  11. Вопрос кстати.

    Из инструкции мы узнаем:

    В INSTEAD есть возможность создавать нескольких игроков и переключаться между ними. Для этого служит функция ‘change_pl()’. В качестве параметра
    передайте функции требуемый объект типа ‘player’ (или его имя).

    Но если в примере выше заменить change_pl(_'player2') на change_pl('player2') переключение игрока работать перестает. Что я упускаю из виду?

  12. peter

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

    Я думаю, недоработка STEAD3, но я проверю...

  13. peter

    Aug 31 Administrator Земля(Москва) User since 2014
    Edited 2 months ago by peter

    да, в stdlib change_pl реализован как:

    function change_pl(...)
           return std 'game':set_pl(...)
    end

    А должно было бы:

    function change_pl(w, ...)
            return std 'game':set_pl(w and std.object(w), ...)
    end

    Я исправлю, а ты можешь у себя переопределить в игре change_pl

  14. Благодарю.
    Мне не сложно приписывать знак подчеркивания к имени. А когда поправите, тогда и буду пользоваться именем вместо самого объекта.

  15. peter

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

    Ок, я поправил. Но версия следующая выйдет нескоро. Так что пока _"" :)

  16. Deleted 2 months ago by peter
  17. Edited 2 months ago by FROST

    Здравствуйте.

    Вопрос по атрибуту always у фраз (см. Справочник ).
    В справочнике говорится: "Еще одна частая ситуация, вы хотите, чтобы фраза не пряталась после ее активации. Это делается заданием флага true." Но если скопировать фрагмент кода из Справочника, мы не получим ожидаемого результата - фраза после активации прячется.

    Код:

    phr =	{
    	{ 'Что это у вас?', 'Таблетки. Красная и синяя. Вам какую?',
    		{'Красную', 'Держите!' },
    		{'Синюю', 'Вот!' },
    		{ always = true, 'А какая лучше?', 'Тебе выбирать.' }}, -- фраза, которая никогда не будет скрыта
    }
  18. peter

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

    Спасибо, это действительно ошибка. В git я ее исправил. Пока, в качестве воркэраунда, можно написать, например:

    { check =  open, 'А какая лучше?', 'Тебе выбирать.' }

    Тогда фраза будет всегда открыта и проенаблена.

  19. 2 weeks ago

    peter

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

    В STEAD3 были выявлены баги в модуле snapshots. если вы испытываете проблемы с этим модулем, вы можете взять snapshots из git и положить в каталог со своей игрой.

  20. last week

    Продублирую проблему с INSTEAD на Sailfish.

    Устройство Jolla 1
    Версия INSTEAD 3.1.2-3
    У каталогов владелец nemo

    gdb:
     
    Program received signal SIGSEGV, Segmentation fault.
    0x0000001e in ?? ()
    (gdb) bt
    #0  0x0000001e in ?? ()
    #1  0x40177f2c in ?? () from /usr/lib/libSDL2-2.0.so.0
    #2  0x000169c6 in gfx_set_mode ()
    #3  0x0002e65c in game_theme_init ()
    #4  0x0001b590 in game_select ()
    #5  0x0001dfb4 in game_reset ()
    #6  0x00030648 in game_menu_act ()
    #7  0x0001e160 in game_click ()
    #8  0x0001edac in game_loop ()
    #9  0x0001fbcc in instead_main ()
    #10 0x4039997a in __libc_start_main () from /lib/libc.so.6
    #11 0x000147cc in _start ()

    Краш при клике на сохраненную игру при попытке её загрузить.

    И ещё системный уровень громкости игнорируется, только через меню внутри instead можно его изменять.

  21. kerber

    Nov 15 User since 2014

    Наверно нужен файл сейва, который крашит инстед.

  22. Newer ›

or Sign Up to reply!