Вопросы и ответы

  1. ‹ Older
  2. 7 months ago

    Dwarf Vader

    Jul 2017 User since 2016

    Захотел вынести крафт в отдельное меню, в которое можно попасть в любой момент, но столкнулся с проблемой возврата в первоначальную локацию. Раньше можно было просто написать кнопочку и запихнуть в нее волшебное back (), было очень удобно, но в новом ядре это похоже уже не работает. Наверно есть в новом api некий аналог о котором я не знаю.

    Если у кого есть свободная минутка, подскажите решение или скажите где его поискать хотя бы примерно. Заранее спасибо.

  3. skiminok1986

    Jul 2017 Постоялец Курган User since 2014

    walkout().

  4. Dwarf Vader

    Jul 2017 User since 2016

    skiminok1986, благодарю за оперативный ответ. Уф! Теперь можно двигаться дальше.

  5. Darek

    Jul 2017 Belarus, Minsk User since 2017
    Edited 7 months ago by Darek

    Доброго вечера, подскажите, почему может не подключаться модуль 'dbg', и собственно куда пропал модуль 'xact'?
    upd. Нашел аналог, через @, а вот dbg по прежнему не работает

  6. peter

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

    Если игра в режиме stead3, то отладчик подключается автоматически в режиме -debug. В принципе, руками он тоже должен подключаться. Пиши тестовый пример и шли. Тогда можно ответить.

  7. Darek

    Jul 2017 Belarus, Minsk User since 2017

    peter Если игра в режиме stead3, то отладчик подключается автоматически в режиме -debug. В принципе, руками он тоже должен подключаться. Пиши тестовый пример и шли. Тогда можно ответить.

    тут суть в том, что через -debug он подключается, но вот не выводит в inv debug как это было в instead2

  8. Darek

    Jul 2017 Belarus, Minsk User since 2017

    что то он не захотел картинку отправить, ну да ладно, вот пример

  9. peter

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

    Хорошо, а как ты вызываешь отладчик? С чего ты взял, что его нет?

    Ps. Stead3 абсолютно новый. Вызов отладчика f7. Читайте заново документацию. Знания stead2 не помогут.

  10. Darek

    Jul 2017 Belarus, Minsk User since 2017

    peter Хорошо, а как ты вызываешь отладчик? С чего ты взял, что его нет?

    Ps. Stead3 абсолютно новый. Вызов отладчика f7. Читайте заново документацию. Знания stead2 не помогут.

    если я вас правильно понял, теперь при require 'dbg' в инвентаре не появляется поле debug, есть такой ньюанс, что если вызывать отладчик через require 'dbg' и не прописывать -debug тогда не срабатывает комбинация alt+r для перезагрузки, не знаю, только у меня так или это баг, или фича

  11. peter

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

    Параметр -debug включает функции отладки:

    • рестарт;
    • полный стек вызовов;
    • отладчик по f7.

    require "dbg" просто включит отладчик и больше ничего;

  12. Darek

    Jul 2017 Belarus, Minsk User since 2017

    peter Параметр -debug включает функции отладки:

    • рестарт;
    • полный стек вызовов;
    • отладчик по f7.

    require "dbg" просто включит отладчик и больше ничего;

    понял, спасибо

  13. 5 months ago

    Ruido

    Aug 29 User since 2016
    Edited 5 months ago by Ruido

    Подскажите пожалуйста, какой командой выйти из диалога и перейти в другую комнату? и walk пробовал и брейк - где-то ошибаюсь.

    phr = {
    {"Вопрос", [[Ответ]], back()};

    Вроде back - переход на предыдущий уровень. Поскольку у диалога моего под уровней нет, то должно вернуть в комнату, но выдаёт ошибку.

    Пробую
    phr = {
    {"Вопрос", [[Ответ]], , walkin('MyRoom'};
    Ругается что "attempt вызвать метод walkin

  14. peter

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

    Этот раздел относится к STEAD3, поэтому воспринимаю вопрос именно в свете STEAD3. Тогда решение будет таким.

    phr = { {
       {"Вопрос", function() p [[Ответ]]; walkout() end };
    }};

    Или, проще:

    phr = { {
       {"Вопрос", pfn(walkout) "Ответ" };
    }};

    Про stead2 вопросы в другой ветке, ее адрес находится в 1м сообщении.

    В любом случае, в каталоге doc/examples есть stead3/dialog и stead2/dialog с примером диалога.

  15. peter

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

    Пример с walk и параметром:

      {"Вопрос", pfn(walk, 'комната') "Ответ" };
  16. Ruido

    Aug 29 User since 2016

    Спасибо, заработало.

    Правда логику синтаксиса (в месте где переход идет перед реакцией, а не после) - пока не понимаю. Попробую попозже разобраться. Все конструкции которые я находил были вида Вопрос-Ответ-Доп.параметры.

  17. peter

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

    Чтоб было понятней, тогда пиши:

     {"Вопрос", function() 
        p "Ответ"
        walk 'комната' 
    end };

    pfn это упрощение, он конструирует функцию, которая делает что то, а потом выводит строку.
    pfn(walk, 'комната') "Ответ"
    Превратится по сути:

    function()
        walk 'комната'
        p "Ответ"
    end

    А писать ли текст ДО перехода или ПОСЛЕ - это не важно, в общем то, в нашем случае.

  18. FROST

    Sep 19 User since 2017
    Edited 5 months ago by FROST

    Здравствуйте.
    Можно ли проверить переменную на nil? У меня не получается. Собственно задача в том, чтобы при отсутствии ключа таблицы, например tab.key выполнялся код.

    if not tab.key then
    ...
    end
  19. peter

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

    Законченный main3.lua, пожалуйста, на котором можно показать решение.

    А так, и not tab.key сработает (правда если там nil или false -- одинаково сработает), и tab.key == nil -- все это рабочие варианты. Значит, ошибка где то еще.

  20. FROST

    Sep 19 User since 2017

    Благодарю, помогло! )))

    Я стал писать чистый main3.lua. И в процессе написания наступило просветление. Я осознал что значение пустая строка ну никак не равно занчению nil

    На момент умственного помутнения я писал:

    local tab = {key=''}
    if not tab.key then
          dprint('tab.key = nil')
    end

    После просветления пишу

    local tab = {key=nil}
    if not tab.key then
          dprint('tab.key = nil')
    end

    А после озарения буду писать

    local tab = {}
    if not tab.key then
          dprint('tab.key = nil')
    end

    peter, благодарю, что побудили написать "законченный main3.lua." иногда очень важен доброжелательный пинок. )))

  21. skiminok1986

    Sep 19 Постоялец Курган User since 2014

    FROST, этот метод крайне полезен. Я про написание примера. Обязательно свежая идея возникнет в процессе =)

  22. Newer ›

or Sign Up to reply!