[[help:qsp|Назад: Что такое QSP?]] ====== Локации ====== **Локация** - элементарная единица игрового мира. Это может быть пещера, дом, комната, улица, большой город или даже целая планета. С точки зрения игрока он исследует игровой мир, перемещаясь по локациям. Но с точки зрения создателя игры понятие “локация” гораздо шире. В **QSP** локации — это отдельные блоки кода, и они могут использоваться не только для описания различных мест. Возможные назначения локаций: * **Игровые локации** - локации, по которым ходит игрок, основа игрового мира. Такие локации можно разделить по назначению: * **локации мест** - локации, в которых описывается некоторый кусочек игрового мира. Комнаты, дома, города, пещеры, подземелья и т.д. * **информационные локации** - локации, на которых размещается информация об игре, своего рода страницы. Это могут быть: стартовый экран, страницы главного меню, страницы информации об авторе и об игре. * **локации главы, параграфы, или разделы** - локации, составляющие основу книг-игр. В книгах-играх игрок перемещается не столько по игровому миру, сколько между страницами интерактивной истории. Вот в такой роли и могут в данном случае выступать локации. * **Служебные локации** - локации, на которые игрок не может попасть, но которые необходимы для работы игры: * **Локации-обработчики** - локации, обрабатывающие определенные события в игре (переходы между локациями, таймер, выбор предмета и т.п.). * **Локации-данные** - иногда удобно хранить игровые тексты в отдельных переменных, а переменные - в отдельной локации, чтобы не захламлять код. * **Локации-функции** - в QSP есть возможность сделать локацию-функцию. * **Локации с кодом** - иногда удобно вынести часть кода в отдельную локацию. Чаще всего это код, который используется в нескольких локациях. **Вы сами определяете назначение локации**. Для плеера абсолютно все локации равнозначны. Любая локация может состоять из трёх полей: * Базовое описание локации * Базовые действия локации * Код “Выполнить при посещении” Вы можете заполнять эти поля по своему усмотрению. Можно заполнить их все, или одно из них, или не заполнять ни одного, — всё зависит от того, какое назначение вы выбрали для вашей локации, и как вам удобнее воплощать вашу идею. Поля **Базовое описание локации** и **Базовые действия локации** доступны для заполнения только в редакторе [[help:qgen|Quest Generator]], если вы работаете в обычном текстовом редакторе, весь код пишется только для поля **Выполнить при посещении**. ===== Именование локаций ===== Имя локации в процессе игры не отображается и может быть любым. Вы сами решаете, как назвать вашу локацию и какие символы использовать для названия. Но есть общие рекомендации: * Имя локации должно соответствовать её смыслу - если локация описывает дом, то это может быть “Дом”, “House”, но никак не “Пещера”. * Можно пользоваться префиксами в названии: * **''%%!название%%''** или **''%%$название%%''** - служебная локация (не с базой данных) * **''%%#название%%''** - служебная локация с [[help:glossary|базой данных]] * **''%%^название%%''** - локация, вложенная в предыдущую. Например, названия локаций через запятую: **''%%Северная площадь%%''**, **''%%^Магазин игрушек%%''**, **''%%^^Продавец игрушек%%''**, **''%%^Магазин оружия%%''**, **''%%^^Мечи%%''**, **''%%^^Булавы%%''**, **''%%^^Оружейник%%''**.\\ Подобная маркировка префиксами была актуальна для старых версий [[help:qgen|Quest Generator]], в которых не было возможности распределять локации по папкам. Сейчас такая маркировка менее актуальна, так как названия без префиксов использовать намного удобнее, а в [[help:qgen|Quest Generator]] есть возможность размещать локации в отдельных папках. * Названия локаций из нескольких слов можно писать любым удобным способом, например: * **''%%Дом с трубой%%''** * **''%%Дом_с_трубой%%''** * **''%%ДомСТрубой%%''** * Регистр букв не важен: “домструбой”, “ДОМСТРУБОЙ” и “ДомСТрубой” - одна и та же локация. * **Если вы пишете [[help:organizing|локацию-функцию]]**, рекомендуется использовать в названии только буквы, цифры, символ подчёркивания и точку. Остальные символы могут поломать работу кода при упрощённом (неявном) вызове таких локаций-функций. * Рекомендуется выбирать названия локаций не совпадающие с [[help:keywords|ключевыми словами]] **QSP**. ===== Команды для работы с локациями ===== ==== Функции для обработки локаций ==== * **''%%$CURLOC%%''** — данная функция возвращает название **текущей** (“активной”) локации, т.е. локации на которой “находится” игрок. Пример: *pl $curloc & ! выводим название текущей локации в Окно основного описания *pl "Сколько раз перезашли: <<перезашёл>>" act "Перезайти на текущую локацию": перезашёл += 1 goto $curloc end ===== Порядок воспроизведения локаций ===== При запуске игры автоматически воспроизводится только самая первая локация, на все остальные локации нужно делать [[help:goto|переходы]], или [[help:organizing|вызывать]] их иным образом. Так же, автоматически может выполняться код локации-счётчика и [[help:service_locations|служебных локаций]], отвечающих за обработку разных событий. Подробнее о порядке воспроизведения локаций смотри статью [[help:principle|“Порядок работы интерпретатора”]]. [[help:main|Вперёд: Окно основного описания]]