Изменения

Перейти к навигации Перейти к поиску

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

5743 байта добавлено, 13:02, 2 декабря 2019
м
typos
Работают только в пределах одного оператора. Т.е. вставить if с помощью подстановки — не получится, т.к. '''if...then...else''' — это конструкция языка, а не оператор.
Подстановка #...$ работает для числовых значений переменных, тогда как #%...$ для текстовых. Для подробностей см. [http://www.ifwiki.ru/FireURQ:%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F#.D0.92.D1.8B.D0.B2.D0.BE.D0.B4_.D0.BF.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D1.85 руководство].
==Параметры при переходах==
В качестве параметров могут быть использованы любые выражения. Параметры при этом попадают в переменные '''<метка>_1''', '''<метка>_2''' и так далее. Все старые значения "переменных с параметрами" — удаляются (даже если в прошлый раз было больше параметров).
Возможен максимум - 50 параметров.
<div style="background-color:LavenderBlush;padding:5px;border:1px solid Brown;"><font color="maroon">'''Важное замечание:'''</font> при использовании параметров в операторе btn подстановки ('''#...$''' и '''#%...$''') раскрываются ПРИ ДОБАВЛЕНИИ КНОПКИ, а вычисление выражений в параметрах производится ПРИ НАЖАТИИ НА КНОПКУ.</div>
Если требуется остановить воспроизведение, то вместо имени файла указывается '''stop'''.
'''время в миллисекундах''' – время, в течении которого громкость музыки будет нарастать (или угасать – в зависимости от того, включаем мы воспроизведение, или выключаем). Если музыка уже звучит и мы запускаем новый трек с указанием времени нарастания громкости, то будет исполнен эффект crossfade – старый трек будет угасать, а новый – нарастать по громкости, при этом мелодии пересекаются. Если же поставить знак минуса перед временем затухания, то мелодии перекрываться не будут. Пример: '''music some.ogg, -1500''' Переменная '''is_music''' равна '''1''', если в игре играет музыка, и '''0''' — если нет.
Для регулировки громкости музыки используется переменная '''music_volume''', которая может принимать значения от '''0''' до '''255'''.
Такой шрифт идеально подойдёт для светлых фонов
Файлы TrueType шрифтов (.ttf) ищутся сначала должны лежать в папке игры (в архиве '''QSZ'''), а если . Если их там нет, то в системной папке со шрифтами Windowsигра возьмёт системный шрифт для текста по умолчанию. Фурка носит с собой шрифты стандартных начертаний с засечками ('''serif''') и без засечек ('''sans''') трёх начертаний- обычной, полужирной ('''bold''') и наклонной ('''italic'''). ТЭти стандартные шрифты можно использовать, подставляя вместо имени файла TTF название, комбинирующее нужное начертание шрифта.еНапример, '''textfont = "serif[35]"'''это шрифт с засечками 35-го размера. если А '''textfont = "sans-bold-italic[18]"'''это системный полужирный наклонный шрифт, прикладывать его к игре не нужнобез засечек 18-го размера.
Шрифты таким образом можно использовать как в коде игры, так и в [[FireURQ:Скины|скинах]].
*'''lmenualign''' отвечает за положение меню относительно ссылки.
*'''decor_имя_menualign''' отвечает за положение меню относительно декоратора.
 
Эти переменные содержат строку из двух букв. Первая буква — это положение относительно объекта (кнопки или ссылки), вторая — выравнивание.
меню относительно кнопок будет справа (Right) и выровнено по нижнему (Bottom) краю.
 Значение для меню берётся из сочетаний первых букв положений: Top (верх), Bottom (низ), Center (центр), Left (лево), Right (право).  Значения по умолчани.* для кнопок - «TL» * для ссылок — «RL»
===Вывод в текстовый файл===
'''''Пример:'''''
'''decoradd моя_кнопка (50,50, -1) IMGBUTTON "button.png", 0, 0, 100, 50, "лес"'''
этот декоратор выведет на экран внопку в позиции '''50,50''' с текстурой из файла '''button.pnpng''',
определив начальную картинку из текстуры с позиции '''0,0''' шириной '''100''' и высотой '''50''' пикселей,
располагающуюся перед основным текстом. При нажатии на кнопку осуществится переход на локацию с названием '''лес'''.
*'''decor_имя_linkhcolor''' − позволяет задать цвет подсветки ссылки в декораторе.
*'''decor_имя_hide''' – если установлен в 1, то декоратор скрыт.
*'''decor_имя_enabled''' – если установлен в 0, то декоратор-кнопка типа TEXTBUTTON или IMGBUTTON неактивен (нельзя нажать). Для декораторов типа TEXT, если равен 0, отключает все ссылки находищиеся находящиеся в них.
*'''decor_имя_target''' - позволяет устанавливать имя "целевой локации", если такая используется в декораторе
*'''decor_имя_text''' – устанавливает текст декоратора (только для типа '''TEXT''')
*'''decor_имя_align''' – устанавливает тип выравнивание текста внутри декоратора аналогично переменной '''textalign''' (только для типа '''TEXT'''), по умолчанию равна 1 . Для декоратора типа TEXTBUTTON данная переменная выровняет название кнопки согласно установленному значению. *'''decor_имя_width''' – возвращает ширину декоратора (масштабируется по ширине текста в нём), устанавливает ширину текстового декоратора, по которой текст будет переноситься на другую строку (только для типа '''TEXT'''). Чтобы вернуться к автомасштабированию, достаточно присвоить переменной decor_имя_width значение ноль. Для декоратора типа TEXTBUTTON данная переменная установит ширину кнопки независимо от ширины текста в ней (по умолчанию ширина кнопки равна ширине текста).
*'''decor_имя_height''' - возвращает высоту декоратора (в пикселях).
*'''decor_имя_hotx''' и '''decor_имя_hoty''' – позволяют задать «горячую точку» для декоратора (кроме типа '''TEXT'''). Горячая точка задается в пространстве самого декоратора (по умолчанию – 0,0) и служит для привязки. Предположим, у вас изображение размером 25х25 пикселей. Если вы установите горячую точку в (13, 13), то, при вращении декоратора, вращение будет происходить вокруг центра картинки. Так же и при позиционировании на экране привязка будет за центр картинки.
*'''decor_имя_flipx''' и '''decor_имя_flipy''' - позволяет задать горизонтальный ивертикальный и вертикальный флип (зеркальное отображение) для декораторов-картинок. Если переменные равны 1, то картинка отображается зеркально по оси x или y соответственно. Только для декораторов типа IMAGE.
*'''decor_имя_angle''' – позволяет задать угол поворота декоратора (кроме типа '''TEXT'''). Угол задается в градусах.
*'''decor_имя_rotspeed''' – позволяет задать постоянную скорость вращения декоратора (кроме типа '''TEXT'''). Скорость задается в градусах в секунду и может иметь как положительное, так и отрицательное значение.
===Скрипты декораторов===
Скрипты позволяют "запрограммировать" декоратор. Другими словами, назначить ему последовательность команд по перемещению, вращению, изменению масштаба и т.д., которые декоратор будет выполнять самостоятельно, не требуя дополнительного дополнительных команд в коде игры. Эта функция удобна, когда вам надо реализовать системы частиц (снежинки, дым) для оформления вашей игры, или просто добавить визуальных эффектов.
Скрипты декораторам назначаются с помощью команды '''decorscr''' или переменной '''decor_имя_script''' и представляют собой строку, содержащую последовательность команд, разделённых символом косой черты ('''/''').
'''FireURQ''' поддерживает свой собственный формат квеста – упакованный квест ('''QST Zipped'''). '''QSZ'''-файл – это, по сути, zip-архив, в котором лежит сам файл квеста ('''qst''', '''qs1''' или '''qs2''') и все ресурсы, необходимые для работы игры (изображения и музыка). Данный формат очень удобен, если ваша игра использует мультимедиа.
Также, существует в старых версиях '''FireURQ''' (до версии 2.0) существовала возможность конвертации квеста в формате QSZ в исполняемый файл. Для этого следует использовать утилиту с помощью утилиты '''QSZ2EXE''', которая входит входившей в комплект поставки. Эта консольная утилита находится в папке на диске, которую вы выбрали при инсталляции '''FireURQ'''.
== Режим отладки ==
'''_sin(x)''', '''_cos(x)''' и '''_tan(x)''' – позволяют вычислить соответственно синус, косинус и тангенс числа x, представленного в радианах.
'''_arcsin''', '''_arccos''', '''_arctan''' и '''_sqrt''' - вычисляют арксинус, арккосинус, арктангенс и извлечение квадратного корня
 
'''_power(w, n)''' - вычисление степени числа. Здесь два параметра — основа и значение степени. Если оставить только x, он будет возведён в квадрат. Также, вспомнив школьный курс алгебры, с помощью '''_power''' можно извлекать корни любой степени.
'''_color([a,] r, g, b)''' – позволяет получить значение цвета из его составляющих. Если составляющая прозрачности ('''a''') не указана, то она принимается равной '''255'''(т.е. полностью видимый цвет).
Если же в команде будет указана локация сохранения, то после загрузки произойдёт переход на указанную локацию.
 
При сохранении игры командой SAVE переменная '''save_success''' устанавливается в 1 при успешном сохранении и в 0, если сохранение по каким-то причинам не удалось.
 
Так же с версии 2.2 в FireURQ появилась возможность менять базовое имя файла сейва.
Переменная '''savenamebase''' хранит это имя. По умолчанию переменная содержит название файла игры.
Если значение поменять на '''«profile1»''', то файлы сохранений будут называться '''profile1.s01''', '''profile1.s02''' и т.д.
==Загрузка игры через оператор LOAD==
Оператор LOAD инициирует загрузку ранее сохранённой игры. Команда дублирует пункт меню «Загрузить сохранение».
Если использовались слоты сохранений, то данная команда вызовет интерфейс выбора из слотов. Если же сохранение было системным, то просто загрузит игру.
 
C версии '''FireURQ 2.2''' появилась возможность загружать сохранения непосредственно из слотов, не вызывая меню "Загрузить сохранение".
 
Если написать '''LOAD 1''', то будет загружено сохранение из первого слота. '''LOAD 0''' загрузит игру из слота автосохранения.
 
==Перманентное хранилище данных==
 
Начиная с версии 2.2 FireURQ обзавелась перманентным хранилищем данных.
Это переменные, которые не удаляются при '''perkill''' или перезапуске игры, автоматически подгружаются и, при их изменении, так же автоматически сохраняются в специальном файле.
 
Любая переменная, начинающаяся на '''gss_''' будет считаться перманентной.
 
Это позволит хранить глобальные настройки, которые не должны изменяться при перезапуске игры, а так же делать достижения и даже переносить параметры из игры в игру.
 
Команда '''gsskill''' полностью очищает хранилище.
 
== Другое ==
* Переход по действиям в инвентаре не перезапускает локацию заново при возврате. Если действие было вызвано во время '''end''' — то происходит безусловный переход ('''goto''') на локацию-действие. Если же вы решили использовать инвентарь во время pause, то локация-действие вызывается как '''proc''' с возвратом на оператор, следующий за pause. Долго думал над этим поведением и решил, что так будет правильнее всего.
* Есть переменная '''gametitle''' — позволяет вывести название игры в заголовок окна. По умолчанию там имя файла, из которого игра была загружена.
* Ключ '''-l''' командной строки позволяет направить весь вывод в файл, т.е. создавать логии логи прохождений. Файлы логов будут называться '''имяквеста.000.log''', '''имяквеста.001.log''' и т.д.
* Клавиатурные шорткаты для системного меню и инвентаря – клавиши ['''Esc'''] и ['''I'''], соответственно.
* Имеется возможность включить полноэкранный режим, нажав сочетание клавиш '''Alt+Enter'''. Повторное нажатие Alt+Enter выключает полноэкранный режим.
* Переменная '''fp_filename''' содержит имя файла, с которым работают команды '''fp''', '''fpln''' и '''newfile'''.
[[Категория:Документация FireURQ]]
* Команда '''QUIT''' закрывает плеер с игрой.
* Системная переменная '''fullscreen''' отвечает за развёртывание игры на полный экран и возврат в оконный режим. Установка её в 1 переводит игру в полноэкранный режим, 0 - переводит обратно в оконный.
* Переменная '''altenter_disable''' (по умолчанию '''0''') отвечает за то, что по комбинации клавиш '''Alt + Enter''' окно игры будет открываться на весь экран или становиться снова окном. Для отключения реакции на эту комбинацию клавиш, следует установить переменную в '''1'''.
* Переменная '''escape_disable''' (по умолчанию '''0''') отвечает за показ системного меню по нажатию клавиши '''Esc'''. Для отключения реакции на эту клавишу, следует установить переменную в '''1'''.

Навигация