Изменения

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

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

3829 байт добавлено, 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 руководство].
==Параметры при переходах==
Если требуется остановить воспроизведение, то вместо имени файла указывается '''stop'''.
'''время в миллисекундах''' – время, в течении которого громкость музыки будет нарастать (или угасать – в зависимости от того, включаем мы воспроизведение, или выключаем). Если музыка уже звучит и мы запускаем новый трек с указанием времени нарастания громкости, то будет исполнен эффект crossfade – старый трек будет угасать, а новый – нарастать по громкости, при этом мелодии пересекаются. Если же поставить знак минуса перед временем затухания, то мелодии перекрываться не будут. Пример: '''music some.ogg, -1500''' Переменная '''is_music''' равна '''1''', если в игре играет музыка, и '''0''' — если нет.
Для регулировки громкости музыки используется переменная '''music_volume''', которая может принимать значения от '''0''' до '''255'''.
'''''Пример:'''''
'''decoradd моя_кнопка (50,50, -1) IMGBUTTON "button.png", 0, 0, 100, 50, "лес"'''
этот декоратор выведет на экран внопку в позиции '''50,50''' с текстурой из файла '''button.pnpng''',
определив начальную картинку из текстуры с позиции '''0,0''' шириной '''100''' и высотой '''50''' пикселей,
располагающуюся перед основным текстом. При нажатии на кнопку осуществится переход на локацию с названием '''лес'''.
*'''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'''.
== Режим отладки ==
Если же в команде будет указана локация сохранения, то после загрузки произойдёт переход на указанную локацию.
 
При сохранении игры командой 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 выключает полноэкранный режим.
* Команда '''QUIT''' закрывает плеер с игрой.
* Системная переменная '''fullscreen''' отвечает за развёртывание игры на полный экран и возврат в оконный режим. Установка её в 1 переводит игру в полноэкранный режим, 0 - переводит обратно в оконный.
* Переменная '''altenter_disable''' (по умолчанию '''0''') отвечает за то, что по комбинации клавиш '''Alt + Enter''' окно игры будет открываться на весь экран или становиться снова окном. Для отключения реакции на эту комбинацию клавиш, следует установить переменную в '''1'''.
* Переменная '''escape_disable''' (по умолчанию '''0''') отвечает за показ системного меню по нажатию клавиши '''Esc'''. Для отключения реакции на эту клавишу, следует установить переменную в '''1'''.

Навигация