Вопросы и ответы (STEAD2)

  1. 4 months ago

    peter

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

    Эта ветка посвящена вопросам работы со "старым" стеком STEAD2.

  2. [deleted]

    Jun 3
    Deleted 3 months ago by peter
  3. peter

    Jun 3 Administrator Земля(Москва) User since 2014
    Edited 4 months ago by peter

    Если открыть stead2/sprites.lua в строке 116, то можно увидеть, что там идет вызов math.floor() для w и h. Так как в сообщении говорится о том, что параметр содержит nil, а не число, следовательно w или h -- пустые.
    Таким образом, в твоем коде где-то ошибка, и в функцию confram(x, y, w, h) -- приходит пустой w или h или оба. Для отладки, ты можешь вывести w и h в своей функции и посмотреть.

    Кроме того, я советую запускать инстед с ключом -debug, как написано в док-ции, тогда будет видно место, откуда произошел вызов.

    P.S. раньше работало (видимо) потому что w и h передавались сразу в Cи часть и в итоге никакого box не было. То есть это та ситуация, когда исправление ошибки в инстеде выявило баг в игре.

  4. [deleted]

    Jun 4
    Deleted 3 months ago by peter
  5. peter

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

    Vtroll, я уже писал тебе выше. Повторяться не буду. Перечитай. Если бесполезная инфа для тебя, я сотру эти сообщения. То что работает на 2.4.1 не значит что нет бага в игре. Баг в инстеде был, который это позволял.

    Если думать не хочется совсем:
    local boxs = sprite.box(w or 0, h or 0, '#FFC7FF', 100)

    Баг останется но будет скрыт как раньше

  6. peter

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

    Vtroll Ты меня не слышишь. Помочь не смогу. Если хочешь, приходи в чат -- спрашивай, посылай примеры кода игры итд -- попробую помочь. Тут же зачищаю...

  7. peter

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

    Прошу: http://chat.andreymal.org/?join=instead@conference.jabber.ru

  8. [deleted]

    Jun 4
    Deleted 3 months ago by peter
  9. [deleted]

    Jun 4
    Deleted 3 months ago by peter
  10. 4 weeks ago

    OgurechniKiller

    Sep 13 Россия, Ульяновс... User since 2016

    Доброго вечера! Помогите с одним вопросом, пожалуйста.
    Решил перенести инвентарь в отдельную комнату. В игре будет присутствовать большое количество одинакового лута, но сделать несколько одинаковых предметов, количество которых будет неограничено, путем добавления индексов, как я понял, невозможно.
    Была идея о введении новых переменных, отвечающих за кол-во этих предметов, но тут же возникла проблема первого получения предмета или изменения его кол-ва .

  11. Irremann

    Sep 13 Постоялец User since 2014

    Пример из моей старой игры:

    photon_torpedo = obj {
    	nam = function() p ('Фотонная торпеда - ', global_var_torpedo); end;
    	inv = function() p ('Обычная фотонная торпеда, образца 2210г. Осталось ', global_var_torpedo, ' штук.'); end;

    Проблема первого получения и исчерпания до нуля решается функциями enable() и disable(). Постоянно проверять количество в stat().

  12. OgurechniKiller

    Sep 14 Россия, Ульяновс... User since 2016

    Ещё вопрос: можно ли как-то реализовать ссылку на ссылку на переменную?

    Spoiler!
    rat = obj {
    var {
    drp = rattail; -- ссылка на переменную
    };
    nam = 'krisa',
    used = function (s,w)
    if w == dam then
    dmg(s);
    che(s);
    else
    p 'Ей всё равно.';
    end;
    end,
    }
    rattail = obj {
            var {
                    amnt = 0; -- та самая переменная
                    };
            nam = "rat's tail",
            }
            function che(s)
            if s.health == 0 or s.health < 0 then
            purge(s);
            p ('Монстр ', s.nam ,' убит');
            -- тут должна быть запись вида: кол-во дропа = кол-во дропа + 1
            end;
            end;


    Проблема в том, что в функции определяется s.amnt не дропа, а самой крысы :(

  13. Irremann

    Sep 14 Постоялец User since 2014

    Я нифига не понял что ты хочешь сделать. Что хранится в этой твоей переменной? Количество крысиных хвостов?

    Нарисуй себе на бумажке блок схему, чтобы было понятно что из чего получается. Например:

    Крыса - использование на ней оружия - запуск функции боя - здоровье крысы <= 0 - удаление крысы - добавление хвоста в инвентарь.

    Для хвостов заведи глобальную переменную и храни количество в ней.

  14. OgurechniKiller

    Sep 14 Россия, Ульяновс... User since 2016

    Спасибо

  15. 3 weeks ago

    OgurechniKiller

    Sep 24 Россия, Ульяновс... User since 2016
    Edited 3 weeks ago by OgurechniKiller

    Товарищи, после подключения дополнительного файла через dofile инстед пишет "chunk has too many syntax levels" на код такого типа:

    Spoiler!
    l_armorintro = obj {
            var {
                    wore = false;
                    amnt = 1;
                    };
            nam = 'Кожаная броня',
            dsc = function(s)
            if s.wore then
            p ('{Кожаная броня (ИСПОЛЬЗУЕТСЯ) } ',s.amnt ,' ^'); -- ругается на эту строчку
            else
            p ('{Кожаная броня } ', s.amnt, '^');
    end;
    end,
    }


    Подскажите, что не так?

  16. Irremann

    Sep 24 Постоялец User since 2014
    Edited 3 weeks ago by Irremann
     p ('{Кожаная броня (ИСПОЛЬЗУЕТСЯ) } '..s.amnt..' ^');

    И ниже строчку тоже через склейку строки .. перепиши.

  17. peter

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

    Без законченного примера ответить невозможно.

  18. OgurechniKiller

    Sep 24 Россия, Ульяновс... User since 2016

    peter Без законченного примера ответить невозможно.

    Тут основные функции, пара комнат и предметов. С этим набором та же ошибка

  19. OgurechniKiller

    Sep 24 Россия, Ульяновс... User since 2016

    Irremann И ниже строчку тоже через склейку строки .. перепиши.

    Не помогло :(

  20. peter

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

    В main.lua ты делаешь dofile intro.lua а в intro.lua делаешь dofile main.lua.
    И чего ты ждал? :))
    П.с. Советую оформлять код отступами.

or Sign Up to reply!