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

  1. 3 months ago

    peter

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

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

  2. [deleted]

    Jun 3
    Deleted 2 months ago by peter
  3. peter

    Jun 3 Administrator Земля(Москва) User since 2014
    Edited 3 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 2 months ago by peter
  5. peter

    Jun 4 Administrator Земля(Москва) User since 2014
    Edited 3 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 3 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 2 months ago by peter
  9. [deleted]

    Jun 4
    Deleted 2 months ago by peter
  10. last week

    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

    Спасибо

or Sign Up to reply!