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

  1. 3 weeks ago

    peter

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

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

  2. Vtroll

    Jun 3 User since 2016

    Отлично, а то у меня какая-то проблема возникла при запуске игры на STEAD2 и выползании ошибки, которой до STEAD3 не возникало.

    Суть проблемы такова:
    В игре запускается функция:

    function confram(x,y,w,h)
    local boxs = sprite.box(w, h, '#FFC7FF', 100) -- здесь выдаёт ошибку
    sprite.draw(boxs, sprite.screen(), x,y)
    sprite.free(boxs)
    end

    Ошибка такая:
    Как исправить ошибку? Подозреваю изменения спрайтового модуля.

  3. peter

    Jun 3 Administrator Земля(Москва) User since 2014
    Edited 3 weeks 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. Vtroll

    Jun 4 User since 2016

    Только перейдя обратно на версию Instead 2.4.1 смог убедится, что код был рабочий. В качестве доказательства могу привести два скриншота. Первый версии 2.4.1 а второй версии 3.0.0.

  5. 2 weeks ago

    peter

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

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

  7. peter

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

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

  8. Vtroll

    Jun 4 User since 2016

    После замены в игре на это

    local boxs = sprite.box(w or 0, h or 0, '#FFC7FF', 100)

    STEAD3 вызывает консоль без ошибок как и STEAD2

  9. Vtroll

    Jun 4 User since 2016

    Всё проверил, теперь на обоих Instead-ах одинаково. Спасибо.

or Sign Up to reply!