Первые шаги...
Привет, мне понравилась идея создание текстовых игр и QSP движок показался прост в изучении, так как я в этом деле 0. Очень много вопросов закрываются путём изучения форума и справок по движку, и тут же огромная благодарность @aleksversus за его уроки. Но всё же вопросов, как всегда, больше чем ответов и это хорошо, поскольку это превратилось в хобби. Я надеюсь что вы поможете разобраться по ходу изучения в части из них, или направите в нужное направления, где это можно посмотреть (если похожую тему не найду).
На данном этапе я хотел бы создать игру на QGen - 4.2.0 beta 4 под плеер qsp - 5.7.0 для Windows.
И сразу хочу выразить большую благодарность всем тем кто будет мне помогать в решении (тупых) вопросов…
Для быстрого поиска:
Spoiler
Вопрос №1: Стиль кода
Вопрос №2: Ограничение переменных
Вопрос №3: Changelog
Вопрос №4: Error105
Вопрос №5: !BASE
Вопрос №6: Меню игры (массивы)
Вопрос №7: Модули
Вопрос №8: Метки
Вопрос №9: disablescroll = 0
Вопрос №10: loc
Вопрос №11: Список переменных (debugger)
Вопрос №12: Путь к игре
Вопрос №13: Однострочная запись
Вопрос №14: Знак <
Вопрос №15: Цикл
Решение №1: Файл .bat
Решение №2: Текст поверх картинки
Решение №3: Кнопка - Выход
Метки работают внутри локации, но не между локациями. Можно пример кода, который не работает?
Вопрос №8«Метки»
Byte, странно, я удалил сообщение еще до ответа. В общем разобрался, я хотел перепрыгнуть на метку с гиперссылки. Потом пересмотрел видео и понял что рас нельзя с действия прыгать, то “EXEC” это то же действия, только для ссылок.
Говорят, что правильно заданный вопрос это половина нужного ответа. Так и есть, я уже с десяток вопросов не опубликовал потому, что ответы приходили в их написании.
В общем ложная тревога, но спасибо за оперативность! =)
Решение №2«Текст поверх картинки»
Отобразить текст поверх картинки оказалось вполне реально!
Это костыль, но в плеерах 5.7.0 - 5.9.0 он работает.
Всё решает - rowspan=2
Таким способом можно выводить картину поверх картинки.
Пример - Table_1.rar
Может кто-то уже догадался, но для меня это было открытие =), решил поделиться.
Вопрос №9 «disablescroll = 0»
Мне нужно чтобы текст выводился в середине кода (к примеру есть 2 абзаца и нужно вставить 3‑й между ними).
Вроде тут все просто, но как всегда есть подвох, нужно чтобы при этом работал disablescroll = 0.
При заходе на локацию или использование $curloc экран задирается в верх, то есть скрол не работает. Он работает только при вызове GS или dinamic.
Я создал 2 локации, на 1‑й - 2 абзаца, а на 2‑й *clr и 3 абзаца и вызываю GS все работает, скрол внизу. Но это по сути 2 одинаковых локации, может есть более изящный способ, при котором 1 игра не будет по весу как 2?
Не совсем понятно что именно там происходит, но можно вызывать gs ‘та же самая локация’, параметры
Затем на самой локации менять поведение в зависимости от переданных параметров.
Byte, я в самом начале не стал заморачиваться с args и подумал потом к ним вернусь. Потом - забыл за них. Теперь заменил killvarы на argsы и код стал в разы меньше. Спасибо!
Вопрос №10 «loc»
Подскажите, хотел задать переменную loc, но она подсвечивается как функция. В справке есть переменная $loc и то как пример.
Для чего нужна эта функция - loc?
Подумал ошибка с подсветкой, но в Qgen 4.1 она так же подсвечивается.
Функция LOC проверяет наличие локации с заданным именем. Скорее всего в справке ошибка.
Точно, нужно было включить строку состояния, спасибо!
При нажатии Ctrl+Space в 4.0 текст заменился на КАПС, а в 4.1 появилось новое слово - local, которого тоже нет в справке. С каждым разом что-то новенькое =)
Сегодня не мой день, думал уже что познаю тайны вселенной и тут понеслось:
gt 'loc',$args
не работает, походу массив args стирается до того как попасть на следующую локацию.
Теперь еще вот это не работает:
if loc '555' = -1: *pl 'YES' else *pl 'NO'
*pl 'Значение текущей локации = ' + loc '555'
*pl 'Значения локаций которой нет = ' + loc '111'
Выводит -1 в текст, но не срабатывает в условии, походу пора спать…
1. GT с параметрами должен работать и на 5.7, и на 5.9. Скорее всего где-то ошибка в коде.
2. У LOC поменялся приоритет в версии 5.8, и указанный код должен работать на версиях 5.8 - 5.9. Однако в 5.7 со старым приоритетом нужно было ставить скобки: if loc(’555’) = -1: … т.к. операция сравнения имела более высокий приоритет и LOC применялась к (’555’ = -1).
3. В версиях 5.8/5.9 функции, работающие с булевыми значениями, возвращают “1” вместо “-1”. Вот такой код будет работать и на 5.7, и на 5.8/5.9:
if loc('555'):p 'Локация существует!'
или даже так:
if loc '555':p 'Локация существует!' & ! можно без скобок/указания приоритета, так как в условии всего 1 операция
Это происходит, потому что на всех версиях QSP любое ненулевое значение является “истиной”, 0 является “ложью”. Но когда используется явное сравнение с -1, то возникает проблема.
1. Да точно, написал отдельно код - всё работает. Я передал args через 2 gt и 3 gs локации и в какой-то момент он потерялся. Плохая была идея, перепишу всё попроще.
2. Так она тоже не работает:
Однако в 5.7 со старым приоритетом нужно было ставить скобки: if loc(’555’) = -1:
хотя странно, в Qgen 4.1 она работает, а в 4.0 нет (открываю через 1 и тот же плеер). Опять не понятно при чём здесь редактор…
if loc('555') = -1: *pl 'YES' else *pl 'NO'
*pl 'Значение текущей локации = ' + loc('555')
*pl 'Значения локаций которой нет = ' + loc('100')
if loc('555'): *pl 'YES' else *pl 'NO'
КАРТИНКА
3. Тут всё понял, спасибо за разъяснение.
Если в QGen 4.1 работает, а в QGen 4.0 нет, то запускаются разные плееры.
Видимо какой-то лаг, перезапустил все заново и отображаются одинаково (на скрине открывались оба плеера 5.7.0 с разными показаниями. Это я к тому что не придумывал). Хотя условия сравнения вида if loc(’555’) = -1: так и не работает, работает только в таком if loc(’555’):. Все норм, просто не привык читать условия без сравнения.
