RU

F.A.Q.: Часто задаваемые вопросы из темы "Как сделать?"

Aleks Versus Moderator 24.05.2020 19:12 17 comments 9490 views

На это потребовался целый год, но я наконец-то закончил.

Вашему вниманию предлагаются наиболее часто задаваемые вопросы из темы “Как сделать?”, собранные в виде F.A.Q.

В написании ответов к этим вопросам я руководствовался ответами на форуме и действующей документацией. Для ответов на вопросы по Quest Navigator пришлось перелопатить разрозненные источники, но надеюсь информация в статьях на сегодня актуальна.

Выкладываю две версии сборника. Одна в формате fb2, в неё правки вносились по мере внесения статей в fb2-документ, поэтому она несколько отличается от версии в виде TXT-файлов. В будущем подгоню обе версии к единой редакции.

Формат fb2 выбран поскольку XML довольно удобно конвертировать в другие форматы.
Формат текстовых файлов выбран, поскольку удобен для редактирования. По этой версии есть некоторые пояснения:

Spoiler

* Вопросы распределены по темам, каждая папка — отдельная тема.

* Файлы, названия которых начинаются с +++ — это опорные файлы, в них собраны непосредственно сообщения с форума и ссылки на сообщения.

* Файлы имеют расширения .txt-light или .light-txt — это обычные текстовые файлы, их можно открывать любым текстовым редактором, однако удобнее открывать с помощью Sublime Text. В архиве есть Portable версия с уже встроенной подсветкой для таких файлов.

* Так же в отдельной папке лежат уже готовые файлы подсветки, которые вы можете скопировать в папку Packages, установленного у вас Sublime Text, и подсветка Plain-lighting автоматически будет применяться к файлам .txt-light или .light-txt. Есть подсветка и для чистого кода QSP для файлов формата TXT2GAM, но она не вполне доработана.

Список вопросов в этом спойлере:

Spoiler

1. В чём разница?
1.1. В чём разница между “set x=10”, “let x=10” и “x=10”?
1.2. В чём разница между переменной со знаком $ и без знака $?
1.3. В чём разница между ’ ’ (апострофы) и ” ” (кавычки)?
1.4. В чём разница между *pl “строка” и просто ” строка” ?
1.5. Чем отличаются эти две команды? *pl “<<$perem>>” и *pl $perem
1.6. В чём разница между dynamic и dyneval?
1.7. В чём разница между gt и goto?
1.8. Чем отличается goto от gosub?

2. Вопросы о $COUNTER
2.1. Как сделать, чтобы значение переменной изменялось с течением времени?
2.2. Как сделать, чтобы из одной локации меня через пару секунд перебрасывало в другую локацию?
2.3. Как сделать, чтобы через пару секунд после входа на локацию появлялось новое действие?
2.4. Как сделать, чтобы цикл выполнялся параллельно остальному коду, а не прерывал его?

3. Вопросы о MSG и $INPUT
3.1. Как вывести на экран отдельное окошко с текстом? | Подскажите аналог команды alert в QSP.
3.2. Как вывести на экран окошко, в котором игрок должен ввести текст? | Подскажите аналог команды prompt в QSP.
3.3. Как прикрутить возможность выбора варианта к окну msg? | Подскажите аналог команды confirm в QSP.
3.4. Как сделать ввод имени игроком?
3.5. Как увеличить число правильных ответов, которые может ввести игрок? | Как сделать варианты для ответа через $input?

4. Вопросы о меню
4.1. Как сделать меню предмета?
4.2. Как сделать разные меню для двух и более предметов?
4.3. Как сделать меню в ссылках?
4.4. Как передавать локациям-пунктам меню аргументы?
4.5. Как делать контекстное (динамическое) меню?
4.6. Как вставить разделитель в меню?
4.7. Как вставить картинки в меню?

5. Вопросы по $ONNEWLOC
5.1. Как сделать так, чтобы не писать один и тот же код в каждой локации?
5.2. Как сделать кнопку “Назад”, работающую на каждой локации?
5.3. Почему в args[] на локации-обработчике перехода на новую локацию уже есть данные?

6. Вопросы по звуковым файлам в QSP
6.1. Как вставить музыку или звук в игру?
6.2. Как запустить две звуковые дорожки?
6.3. Как при переходе на новую локацию прервать одну мелодию и запустить другую?
6.4. Как перезапустить звуковую дорожку?
6.5. Как приглушить музыку?
6.6. Как зациклить мелодию?

7. Вопросы о гиперссылках
7.1. Как делать гиперссылки, по нажатию на которые выполняется код? | Как делать кликабельный текст? | Как сделать, чтобы по нажатию на текст что-то происходило?
7.2. Как менять цвет гиперссылки?
7.3. Как помещать в гиперссылки сложный код?
7.4. Как сделать гиперссылки без подчёркивания?

8. Есть ли команда…
8.1. Какой командой можно очистить окно дополнительного описания?
8.2. Существует ли команда для того, чтобы получить название текущей локации?
8.3. Какой командой можно вывести текст в окно дополнительного описания?
8.4. Есть ли команда, которая делает выход из игры?

9. Вопросы о изображениях
9.1. Как вставить картинку в игру?
9.2. Можно ли вставить в игру gif-файл?
9.3. Как вставить картинку в действие?
9.4. Как поставить картинку фоном?
9.5. Как выводить изображения послойно? Накладывать друг на друга?
9.6. Как сделать кликабельное изображение? | Как сделать так, чтобы при щелчке по изображению выполнялись какие-то действия?
9.7. Как сделать сменяемое изображение на локации?
9.8. Как сделать вывод рандомного изображения?

10. Интерфейс, дизайн, украшения
10.1. Для чего нужен оператор REFINT, и как он работает?
10.2. Как изменить цвет фона в игре?
10.3. Как изменить формат части текста? Размер, цвет, наклон и т.д.?
10.4. Как сделать красивый фон в классическом плеере?
10.5. Хочу, чтоб в игре окна располагались определённым образом. Как это сделать?
10.6. Можно ли задавать размер окон из кода игры? Чтобы в одной локации были одни настройки, в другой — другие.
10.7. Настроил расположение окна предпросмотра, но когда выключаю его, другие окна смещаются, как это исправить?
10.8. Как изменить цвет подсветки действий?
10.9. Как изменить цвет фона для отдельного окна?
10.10. Как сделать плавное появление текста? | Как сделать плавное изменение цвета фона? | Как сделать плавное изменение цвета текста?
10.11. Как использовать в игре собственный шрифт?
10.12. С предметов можно снимать выделение, а можно ли снять выделение с действия?

11. Вопросы об условиях
11.1. При проверке условия записано просто число, без операции сравнения, но QSP не выдаёт ошибку. Почему?
11.2. Как сделать так, чтобы действие появлялось только при определённом условии?
11.3. Видел в одной из игр, как после нажатия на действие, оно становится неактивным. Как это сделать?
11.4. Как добавить текст, который будет выводиться только при выполнении определённого условия?
11.5. Как сделать, чтобы в диалоговом окне текст набирался в зависимости от условий? Чтобы при срабатывании одного или обоих условий текст в любом случае выводился?
11.6. Как упростить условие?

12. Вопросы о DYNAMIC
12.1. Зачем нужен оператор dynamic?
12.2. Можно ли сделать переменную с рандомным (случайным) названием?
12.3. Создаю действия с помощью цикла, но они работают неправильно. Что делать?
12.4. Почему не работает dynamic?

13. Не работает…
13.1. Рисую таблицу и хочу зафиксировать высоту, но атрибут height не работает.
13.2. Пытаюсь использовать разные HTML-теги в игре, но они не работают — просто не выводятся. Почему?
13.3. Не работает IIF!
13.4. Пытаюсь сделать кликабельную картинку с помощью тегов MAP и AREA, но ничего не получается. | Не выводится картинка, не работает область клика, область клика смещена.
13.5. Не работает *pl в действии с goto.
13.6. В AeroQSP не работает атрибут.
13.7. Не работает гиперссылка в AeroQSP.
13.8. Не работает оператор JUMP — не может найти метку.
13.9. Не работает многострочный код. Как исправить?
13.10. Не работает многострочный код. Как исправить?
13.11. Сколько END`ов нужно добавить?
13.12. Не работает условие. Как исправить? (if skrom>10 and <15)
13.13. Не работают десятичные дроби, дробные числа, числа с запятыми!

14. Вопросы о предметах
14.1. Как добавить предмет в окно предметов?
14.2. Как удалить предмет из окна предметов?
14.3. Как удалить все предметы?
14.4. Как добавить предмет в определённую позицию в окне предметов?
14.5. Как заменить один предмет на другой?
14.6. Как делать динамические/считаемые предметы? | Как делать стакающиеся предметы? | Как делать предметы рядом с названиями которых выводится их количество?
14.7. Как добавить предмет с картинкой но без названия?
14.8. Как сделать, чтоб при щелчке по предмету выполнялся какой-либо код?
14.9. Как снять выделение предмета? | Как сделать, чтобы выбранный предмет можно было кликнуть ещё раз?
14.10. Как сделать два списка предметов? Например для игры за разных персонажей.
14.11. Как сделать, чтобы плеер выполнял определённый код при добавлении любого предмета?
14.12. Как сделать два разных предмета с одинаковыми названиями?
14.13. Как сделать многоуровневый рюкзак? | Как сделать предметы в предметах?
14.14. Можно ли выводить предметы не в окне предметов?

15. Вопросы о строке ввода
15.1. Зачем вообще нужна строка ввода (поле ввода)?
15.2. Как задействовать строку ввода в игре?

16. Вопросы по вёрстке
16.1. Можно ли писать текст поверх вставленной картинки (не бэкграунда)?
16.2. Возможно ли сделать плавный переход между локациями?
16.3. Как расположить картинку справа, а текст слева?
16.4. Как ограничить размер выводимого изображения?
16.5. Как сделать рамку окна основного описания? | Как сделать, чтобы картинки шли по контуру основного окна?
16.6. Как сделать вывод предметов магазина не длинным списком, а в виде таблицы?
16.7. Можно ли зеркально отразить картинку методами плеера? | Можно ли задать максимальную или минимальную ширину элементу? | Можно ли вычислить доступное место в основном окне?
16.8. Вывожу в окно табличку, а потом текст, но между текстом и табличкой возникают пустые строки. Что это и как этого избежать?
16.9. Можно как нибудь вывести текст в два столба в классике? К примеру характеристики персонажей.

17. Вопросы о сохранениях
17.1. Как запретить игроку самостоятельно сохранять игру?
17.2. Во время теста игры делал сохранения, затем внёс в игру несколько правок, но сохранения перестали загружаться. Почему так происходит, и что теперь делать?
17.3. Как сделать чекпойнты в игре?
17.4. Как написать действие, которое при каждом клике сохраняло бы игру в файлы “1.sav” и “2.sav” поочерёдно?

18. Вопросы о файлах и модулях
18.1. Чем отличаются команды addqst и openqst?
18.2. Как сделать лаунчер?
18.3. Мне нужно узнать, есть ли в папке файл (картинка, музыка и т.д.). Как это сделать?
18.4. Перенёс файл игры из одной папки в другую. В Quest Generator пропали все папки. Почему так происходит, и как этого избежать?
18.5. В папке с игрой стали появляться файлы с расширением “.tmp”. Что это за файлы, нужны они, и как избавиться от их появления?

19. Изыски
19.1. Как использовать ASCII-графику в QSP?
19.2. Как вставить в игру видео?
19.3. Как сделать так, чтобы текст появлялся на экране постепенно? По буквам?
19.4. Как защитить игру от чита?
19.5. Как задействовать клавиатуру в игре?
19.6. Как пропустить прохождение нескольких глав, чтобы протестировать вновь написанную главу и только её?
19.7. Как из под плеера выполнить произвольную строку кода?
19.8. Как узнать, на каком устройстве запущена игра? Телефон, компьютер, планшет?
19.9. Как обновлять переменные на экране?

20. Конкретные задачи
20.1. Как сделать возврат на предыдущую локацию?
20.2. Как проверить число на чётность?
20.3. Как сделать шанс на выпадение определённой вещи? Например 25 процентный шанс на то, что в сундуке окажется золотая чаша?
20.4. Как сделать, чтобы текст выводился не внизу окна основного описания, а сверху?
20.5. Как можно удалить часть текста из описания?
20.6. Как вывести на экран HTML-разметку, не отключая режим распознавания HTML? То есть при usehtml=1.
20.7. Есть несколько переменных с разными значениями. Как получить имя переменной, в которой находится наибольшее значение?
20.8. Как в QSP сравнить два массива?
20.9. Как сделать вытягивание случайных карт из колоды? Карты вытягиваются несколько раз, но они не должны повторяться.
20.10. Как отсортировать данные? Например, список персонажей по алфавиту, или набор чисел от меньшего к большему.
20.11. Как сделать проценты?
20.12. Как решить задачу по поиску случайного набора слагаемых?
20.13. Как разредить текст пробелами?
20.14. Как сделать записную книжку в игре?
20.15. Как сделать так, чтобы на локацию можно было зайти только один раз?
20.16. Как заставить действия выводиться в нужном мне порядке?
20.17. Как сделать в игре книгу? Чтобы её можно было взять и потом прочитать?
20.18. Как сделать склад, сундук, тайник, место, в котором можно выкладывать и хранить предметы?
20.19. Как сделать выпадение случайного действия на локации?
20.20. Как сделать перемещение на случайную локацию?
20.21. Как сделать случайный предмет?
20.22. Как сделать, чтобы текст выводился снизу вверх?
20.23. Как узнать, какие переменные есть в игре? Может для этого есть специальная команда?
20.24. Как работать с тегами MAP и AREA? Как разметить картинку на кликабельные зоны?

21. Вопросы по Quest Generator (v.4.0.0.Beta)
21.1. Мне часто приходится вставлять одинаковые или почти одинаковые кусочки кода. Как автоматизировать этот процесс?
21.2. Делаю преформатирование пробелами, чтобы появлялась вертикальная полоска, так нагляднее. Нет ли какой-то комбинации клавиш, чтобы не тыкать пробел по пять раз?
21.3. Как свернуть кусочек кода, написанный под комментарием? В идеале, чтоб остался один только комментарий.

22. Вопросы о Quest Navigator (v.0.0.28)
22.1. Пишу несколько игр в Quest Navigator. Как сделать, чтобы у каждой игры было собственное оформление?
22.2. Как подключить свой шрифт к игре?
22.3. Пишу bcolor=rgb(255,200,200), но это не меняет цвет фона игры. Как изменить цвет фона из кода QSP?
22.4. Хочу прописать игре собственный вид курсора, как это сделать?
22.5. Скопировал шаблон оформления в папку со своей игрой, но что с ним теперь делать? Не пойму, что за что отвечает.
22.6. Как узнать, на каком плеере запущена игра, на классическом QSP, или на Quest Navigator?
22.7. Как вставить видео в игру на Навигаторе?
22.8. Как делать standalone-сборку на Навигаторе? | Независимая сборка на Quest Navigator
22.9. Где в Quest Navigator править размер окна с игрой? Например мне надо, чтобы игра изначально открывалась в разрешении 1280х720.
22.10. Как выполнить JavaScript прямо из кода QSP?

23. Ограничения
23.1. Видел в справке ограничение на 100 подключаемых файлов? Это что, я не смогу использовать более ста файлов картинок и музыки?
23.2. Хочу разместить на локации около 100 действий. Это вообще возможно?
23.3. Генерирую переменные с помощью оператора dynamic, и вдруг выходит ошибка 123. Что это, и как с этим бороться?

24. Вопросы по работе с плеерами
24.1. Как сделать так, чтобы AeroQSP запускался прямо из Quest Generator?
24.2. Как сделать StandAlone-сборку на классическом плеере? | Можно ли сделать игру так, чтобы играть без плеера? | Как сделать пакетный файл запуска, чтобы игрок тыкал иконку start и сразу начинал играть?

Данный F.A.Q. является черновым вариантом, поэтому призываю всех, и новичков и гуру, к активной критике, дополнению ответов, статей, задаванию новых вопросов в теме “Как сделать?”.

В новых версиях справочника списки вопросов в разных разделах могут отличаться.

Онлайн-версия справочника

Как сделать? F.A.Q. редакция 2021_09_27 на github

Старые версии справочника

Edited at 28.09.2021 06:55 (4 years ago)

13.9. Не работает многострочный код. Как исправить?
13.10. Не работает многострочный код. Как исправить?

Это в спойлере, в архиве 09_не работает условие (многострочное).

Проделана огромная работа, а на форуме нет плюсомета…

Aleks Versus Moderator 25.05.2020 07:08 (5 years ago)

dmvikar,
да, там файлы вообще как попало названы. Заголовки в спойлер скопированы из fb2-документа. Там я старался сделать кратко и информативно, не везде получилось. Эти, кстати, забыл поправить.))

А так-то на форуме можно голосовать за тему если что.) Инструменты форума - голосовать за тему.)

Aleks Versus,
Ты бы себе в подпись загнал бы ссылки на эту тему и на тему с видеоуроками.

Aleks Versus Moderator 25.05.2020 09:15 (5 years ago)

dmvikar,
О, хорошая мысль. Спасибо.

Ну ты зверь, Алексей :)

Последний из Гаяр Moderator 09.06.2020 05:39 (5 years ago)

В формате fb 2 надо бы указать год издания на обложке.
И выделить заголовки глав жирным цветом, а то так они теряются.

Последний из Гаяр Moderator 09.06.2020 05:49 (5 years ago)

Ссылки на сообщения можно сделать ссылкой? Чтобы потом по ссылке под страницей идти уже к списку источников, который расположен в конце книги?

Aleks Versus Moderator 09.06.2020 16:25 (5 years ago)

Последний из Гаяр,
ты, очевидно, просматриваешь через Яндекс. Он так интерпретирует.

Обложки у книги нет, это рисует Яндекс, в самой книге дата создания проставлена.
Заголовки глав в содержании выделены тэгами <subtitle></subtitle>, и все читалки, которые я использовал воспроизводят их полужирными отцентрированными.

Последний из Гаяр:

Ссылки на сообщения можно сделать ссылкой? Чтобы потом по ссылке под страницей идти уже к списку источников, который расположен в конце книги?

А это я, честно говоря, не понял. Ссылки и так вроде гиперссылками, и ведут они напрямую на форум. :/

Последний из Гаяр Moderator 10.06.2020 05:08 (5 years ago)

Aleks Versus,
Якоря внутри документа, чтобы не писать этот список ссылок, а если что кликать на циферку сноски и тебя будет переносить в конец документа ко всем источникам. А то так, для того кто ищет ответ они большой ценности не имеют, а как источник бы пригодились, но не на видном месте.

Да, через Яндекс.

Aleks Versus Moderator 10.06.2020 07:47 (5 years ago)

Последний из Гаяр,
ааа. Ссылки переношу в конец, а в самих статьях делаю ссылку “Дополнительные материалы” на список ссылок. Хорошо, понял, поправлю. Наверное и обложку добавлю с указанием даты редакции, какую-нибудь простенькую.

Aleks Versus Moderator 26.08.2020 17:13 (5 years ago)

Залил новую версию справочника на Яндекс-Диск. К сожалению, пока не мог заниматься всеми предложенными исправлениями, но они есть в планах, и я ими займусь. А быть может кто-то из вас захочет поспособствовать улучшению справочника. Вот что я запланировал:

Spoiler

**** Провести вычитку последнего раздела и сделать кросс-ссылки между разделами.
**** Требуется ввести раздел “терминология” и перенести часть “Важного предисловия” туда.
Термины “обработка локации” и “посещение локации”.
**** Добавить раздел “Источники” или “Дополнительные материалы” и переместить туда все ссылки под статьями, а вместо ссылок под статьями перенести эти ссылки в указанный раздел. Можно в скрытый раздел.
**** После того, как добавлю все видео по теме “Как сделать” на канал, добавить так же и ссылки на видео.

**** Может имеет смысл перенести благодарности в конец.
**** Необходима статья по синтаксису QSP, т.е. как пишется код, как он выполняется и т.д.
**** Добавить обложку с указанием даты редакции

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

Здравствуйте. А объясниние, как перенести персонажа из одной части игры у другую в этом ФАО есть?

Последний из Гаяр Moderator 01.10.2020 12:29 (5 years ago)

Poganec37,
Лучше опиши, пожалуйста, свою игру. Может это там это действительно так необходимо
А может и нет

Aleks Versus Moderator 03.10.2020 12:34 (5 years ago)

Poganec37,
в данном справочнике ответа на данный вопрос нет. Я намеренно не включал в справочник такие большие вопросы, запланировав по ним ряд статей.

Чтобы ответить на твой вопрос, мне нужно знать две вещи: как выглядит персонаж в твоей игре (что он из себя представляет), и что ты имеешь ввиду под перенести персонажа?

Из игры в игру можно переносить значения переменных с помощью файлов сохранений, но про это тебе уже говорили в теме “как сделать?”. Если тебя тамошние ответы не устроили, значит ты под переносом имеешь ввиду что-то другое. Что?

Aleks Versus Moderator 23.08.2021 09:00 (4 years ago)

Новость для тех, кто пользуется справочником. Я наконец довёл до ума структуру исходников, в связи с чем написал скрипт, который легко и непринуждённо конвертит исходники в fb2-формат. Сам справочник соответственно был немного переработан.
Что сделано:
* Для справочника выделен отдельный проект на github, он в открытом доступе.
* Все ссылки на источники (сообщения на форуме и разделы справки), а так же на видеоролики с ответами на ютубе перенесены в конец справочника. Из справочных разделов я их убрал, и сноски на раздел с источниками не стал делать. Ссылки на сообщения сопровождаются ником автора сообщения, номером сообщения и временем создания.
* В раздел по Quest Navigator добавлена статейка Nex’а https://qsp.org/forum/comments/18346
* Добавлены кривоватые определения для терминов “обработка локации”, “переход” и т.п.
* Сделана обложка с годом издания. Пока такая, в других редакциях буду менять.
* Вычитка последнего раздела проведена, но кросс-ссылки добавлены не везде.

Скачать последнюю версию справочника вы можете на странице релизов: https://github.com/AleksVersus/howdo_faq/releases

В репозитории лежат старые версии справочника и будут появляться промежуточные: github/howdo_faq//release

Скоро так же будет доступна онлайн версия справочника.

Что нужно сделать:
* Провести вдумчивую вычитку каждого раздела, добавить кросс-ссылки между разделами
* Проштудировать новые вопросы из темы “Как сделать?” и выбрать старые вопросы. Т.е. сообщения с 1 по 2900 и начиная где-то от 5600.
* Дополнить справочник большими статьями по таким вопросам как: как сделать в игре время? как сделать голод? как сделать персонажа? как генерировать окружение? и т.д.
* …

Если есть идеи, как улучшить справочник, или вы можете помочь в его доработке, прошу писать на aleksversus@mail.ru или отписываться здесь в теме. Буду рад любой помощи.

Log in or Register to post comments.