Открыть главное меню

Изменения

FireURQ:Особенности реализации URQL

14 508 байт добавлено, 19:54, 21 мая 2012
м
Шрифт текста
==Шрифт текста==
Для определения шрифта, которым будет выводиться текст, используется переменная textfont. В нее в виде строкового значения следует записать имя файла шрифта. FireURQ может использовать растровые шрифты формата HGE Font (заимствовано из библиотеки HGE). Редактор, позволяющий конвертировать шрифты, установленные в Windows, в формат HGE Font, входит в дистрибутив (папка '''fonted''').  Чтобы вернуться к шрифту по умолчанию, следует выполнить '''textfont = "_sysfont"'''.
Важное замечание: вполне возможно писать разными шрифтами внутри одного абзаца текста. Но этого не рекомендуется делать со шрифтами разных размеров. Формат HGE Font не предусматривает такое понятие, как «базовая линия». Поэтому, куски текста, написанные разными шрифтами, будут «прыгать» относительно друг друга.
Шрифты таким образом можно использовать как в коде игры, так и в скинах.
 
==Декораторы===
Основное описание декораторов (включая скрипты) переехало в CHM-справку.
Скин интерфейса сохранения/загрузки.
Элемент называется saveload и располагается он в главном элементе
('''skin''').
 
'''''Пример:'''''
'''<saveload bgcolor="C0000000" captioncolor="FFFFBB4F" captionfont="myfont">'''
'''<buttons frame="myframe" />'''
'''</saveload>'''
 
Если '''myframe''' не определена, то берётся системная кнопка, которая используется обычно в игре. Если '''myfont''' не определён, берётся системный шрифт. Цвета указаны те, которые берутся по умолчанию. Для кнопок, использующихся на экране сохранения/загрузки, необходимо четыре состояния: нормальное, дизабленое, выбранное и нажатое.
 
===Текстовые декораторы===
Текстовые декораторы при создании наследуют параметры '''linespacing''' и '''paraspacing''' от общего текстового поля. Но их можно менять с помощью переменных '''decor_name_linespacing''' и '''decor_name_paraspacing''' соответственно.
 
== Формат квестов QSZ==
 
'''FireURQ''' поддерживает свой собственный формат квеста – упакованный квест ('''QST Zipped'''). '''QSZ'''-файл – это, по сути, zip-архив, в котором лежит сам файл квеста ('''qst''', '''qs1''' или '''qs2''') и все ресурсы, необходимые для работы игры (изображения и музыка). Данный формат очень удобен, если ваша игра использует мультимедиа.
 
Также, существует возможность конвертации квеста в формате QSZ в исполняемый файл. Для этого следует использовать утилиту '''QSZ2EXE''', которая входит в комплект поставки. Эта консольная утилита находится в папке на диске, которую вы выбрали при инсталляции '''FireURQ'''.
 
== Режим отладки ==
 
Режим отладки включается с помощью ключа '''-d''' в командной строке. При включенном режиме отладки все ошибки в коде квеста выводятся прямо в текст. Кроме того, в режиме отладки работает полезная комбинация '''Ctrl+R''', позволяющая перезагрузить исходный текст квеста с диска. Происходит сохранение игры, перезагрузка исходного текста и загрузка сохраненного состояния с переходом на ту же локацию, что и до перезагрузки. Это позволяет править исходный текст и сразу же смотреть результаты изменений.
 
==Инвентарь==
 
Существует возможность скрывать действия над предметами. Для этого необходимо использовать специальные переменные. Имя переменной формируется как имя локации-действия над предметом инвентаря, плюс «'''_hide'''». Например, если выполнить '''Use_Топор_Рубить дерево_hide = 1''', то действие “Рубить дерево» у предмета инвентаря «Топор» будет скрыто до тех пор, пока вы не присвоите этой же переменной значение '''0'''.
 
С помощью такого приема можно скрывать действия над предметами на тех локациях, на которых их по сюжету невозможно выполнить.
 
Также возможно поменять отображение предмета в списке инвентаря. Для этого используются переменные вида '''idisp_предмет''', например:
'''idisp_Бутылка = "Бутылка с водой"'''
При этом важно понимать, что '''idisp_-переменные''' влияют только на отображение предмета в списке инвентаря. В операторах '''inv+''' и '''inv-''', а также при обращении к счетчикам предметов через '''inv_-переменные''', следует использовать изначальное название («Бутылка» в примере):
'''inv- Бутылка'''
'''if inv_Бутылка > 1 then pln У вас несколько бутылок…'''
 
==Предопределенные функции==
 
В '''FireURQ''' предусмотрены предопределенные функции, которые вызываются с помощью оператора proc. Результат возвращается в переменной '''_result'''. Существуют следующие предопределенные функции:
 
'''_sin(x)''', '''_cos(x)''' и '''_tan(x)''' – позволяют вычислить соответственно синус, косинус и тангенс числа x, представленного в радианах.
 
'''_color([a,] r, g, b)''' – позволяет получить значение цвета из его составляющих. Если составляющая прозрачности ('''a''') не указана, то она принимается равной '''255'''(т.е. полностью видимый цвет).
 
'''''Пример:'''''
'''proc _color(x+15, 10, 255, 60)'''
'''textcolor = _result'''
 
==Anykey==
 
'''anykey [<переменная>[, <pause>]]'''
 
По команде '''anykey''' игра приостанавливается и ждёт нажатия на клавишу. Если указана переменная, то код клавиши будет записан в неё.
 
Также, у команды '''anykey''' существует возможность задавать таймаут. Например, по команде '''anykey z, 1000''' игра секунду будет ожидать нажатия кнопки, а если за секунду кнопка нажата не будет, то игра продолжит выполнение, а в переменную '''z''' будет записан ноль.
 
При использовании команды '''anykey''' нажатия на кнопку мыши тоже расцениваются как нажатия на клавишу, при этом в переданную переменную записываются коды '''256''', '''257''' и '''258''' для левой, правой и средней кнопок соответственно, а в переменные '''mouse_x''' и '''mouse_y''' – координаты, в которых был сделан клик.
 
==Слоты сохранений==
 
В '''FURQ''' предусмотрено сохранение состояния игры в слоты ('''7''' обычных слотов и слот “автосохранения”).
 
''save <локация>'' - записывает сохранение в слот автосохранения.
 
'''save <локация>, "имя сохранения"''' - запускает интерфейс со слотами, дает выбрать слот сохранения (кроме слота “автосейва”) и записывает в него сохранение с указанным именем.
 
'''save <локация>, "имя сохранения", <номер слота>''' - запишет сохранение в указанный слот, где номер слота - число от '''0''' до '''7''' ('''0''' - слот автосохранения).
 
'''''Пример:'''''
 
'''save location; записать в слот автосохранения'''
'''save location, “Сохранение”; записать в любой слот, который выберет игрок'''
'''save location, “Мой автосейв”, 0; записать в слот автосохранения'''
'''save location, “Утро, Румыния, 17-й век”, 5; записать в пятый слот'''
 
Загрузка сохранения происходит путем выбора пункта меню '''"Загрузить сохранённую игру"'''. При этом если есть только автосейв - он загружается сразу, если же кроме автосейва занят какой-нибудь слот - выдается интерфейс выбора из слотов.
 
== Другое ==
 
* '''count_...''' — переменные счетчики обновляются ТОЛЬКО при переходах по '''btn'''. Старое поведение '''URQ_DOS''', когда '''count_...''' увеличивается и по '''proc''' и по '''goto''', можно включить, установив переменную dosurq_count в '''1'''.
* Переход по действиям в инвентаре не перезапускает локацию заново при возврате. Если действие было вызвано во время '''end''' — то происходит безусловный переход ('''goto''') на локацию-действие. Если же вы решили использовать инвентарь во время pause, то локация-действие вызывается как '''proc''' с возвратом на оператор, следующий за pause. Долго думал над этим поведением и решил, что так будет правильнее всего.
* Есть переменная '''gametitle''' — позволяет вывести название игры в заголовок окна. По умолчанию там имя файла, из которого игра была загружена.
* Ключ '''-l''' командной строки позволяет направить весь вывод в файл, т.е. создавать логии прохождений. Файлы логов будут называться '''имяквеста.000.log''', '''имяквеста.001.log''' и т.д.
* Клавиатурные шорткаты для системного меню и инвентаря – клавиши ['''Esc'''] и ['''I'''], соответственно.
*Имеется возможность включить полноэкранный режим, нажав сочетание клавиш '''Alt+Enter'''. Повторное нажатие Alt+Enter выключает полноэкранный режим.
* Можно прокручивать экран с помощью клавиш '''PgUp''' и '''PgDown''', а также колесом мыши. Если держать '''Ctrl''', то колесо мыши прокручивает экран маленькими порциями.
* При нажатии на функциональную клавишу в '''anykey''' возвращается скан-код этой клавиши, а переменная is_syskey устанавливается в '''1'''. Состояние клавиш '''Shift''', '''Ctrl''' и '''Alt''' на скан-коде функциональной клавиши не отражаются.
* В оператор '''tokens''' можно передавать не только строковую переменную, но и просто строку, заключенную в кавычки или строковое выражение.
* Индикацию состояний ожидания (мигающая иконка в углу экрана) при выполнении операторов anykey, pause и при требуемой прокрутке текста можно отменить с помощью переменных '''hide_anykey_indicator''', '''hide_pause_indicator''' и '''hide_more_indicator''', присвоив им значение '''1'''.
* Есть возможность изменять положение и размер главного текстового поля. Для этого служат переменные '''textpane_left''', '''textpane_top''', '''textpane_width''' и '''textpane_height'''.
* Скрыть «эхо» выполняемых действий при нажатии кнопки, использовании инвентаря и сохранении игры возможно с помощью переменных '''hide_btn_echo''', '''hide_inv_echo''' и '''hide_save_echo''', соответственно, установив их в '''1'''.
* При сохранении игры командой '''SAVE''' переменная '''save_success''' устанавливается в '''1''' при успешном сохранении и в '''0''', если сохранение по каким-то причинам не удалось.
* Если установить переменную '''numbuttons''' в '''1''', то кнопки действий будут пронумерованы, а нажатие цифровых клавиш на клавиатуре будет приводить к нажатию соответствующей кнопки.
* При нажатии '''Ctrl+C''' в буфер обмена будет помещён текст последней локации.
[[Категория:Документация FireURQ]]