Документация к Universal Ripsoft Quest v1
(версия документации 21.03.2001)


Оглавление

  1. Общие данные
  2. Описание движка
  3. Советы начинающим
  4. Часто возникающие ошибки
  5. Часто возникающие вопросы
  6. Хронология версий

1. Общие данные

Universal Ripsoft Quest v1.xx далее "програмный продукт" изготовлен компанией Ripsoft corporation и не является лицензионно защищенным програмным продуктом. Распространяется на правах "freeware", то есть абсолютно свободно. Автор не отвечает за какой-либо ущерб, либо упущенную выгоду полученные вследствии использования програмного продукта. Если вы по каким-либо причинам не согласны с этим лицензионным соглашением, то вы должны стереть со всех хранителей информации дистрибутивные пакеты програмного продукта и прекратить использование програмного продукта. Со всеми жалобами, претензиями и предложениями просьба обращаться по адресу ripos@mail.ru либо в гостевую книгу на официальном сайте компании в глобальной сети Internet по адресу www.ripsoft.narod.ru.


2. Описание движка

Файлы обрабатываемые движком это файлы с расширением qst, либо файлы qs1, созданные из файлов qst с помощью утилиты поставляемой вместе с программой. Опишем подробнее формат файлов qst: это текстовый файл, который выполняется построчно.

Если есть параметры командной строки, то если это квест, то он выполняется.

1) Вначале отбрасываются коментарии (символы после ";").
2) Строка разбивается на части символами "&" и для каждой части выполняются операции начиная с первой. Исключение: если встречается оператор "if" то последующая за ним строка на предмет "&" не обрабатывается, эти операторы будут обрабатываться как "then" часть.
3) Все сочетания символов "#$" заменяются на пробелы. Все сочетания #...$ заменяются на из значение, целое. Все сочетания символов #/$ заменяются на перенос строки. Все сочетания ##число$ заменяются на сивол с кодом число.
4) Рассматривается первое слово (до первого пробела), если это оператор, то он выполняется. Если это не оператор печати ("p" "pln" "print" "println") или "if" и встречается символ "=" то выполняется присвоение. Примечание: если это не оператор (например метка) не делается ничего. Примечание: коментарии и метки с символом = недопустимы
5) Рассматривается следующая строка и для неё выполняются аналогичные процедуры.

Если строка начинается с символа ":" то это метка, то есть это метка с именем - вся оставшаяся часть строки. Примечание: метки с более чем двумя пробелами подряд, или с пробелами до или после запятой недопустимы, инструкции после метки недопустимо.

Регистр переменных, предметов, меток и операторов никакой роли не играет. Исключение: при работе с инвенторем если использовать разный регистр, то наименования предметовбудут отображаться согласно последним изменениям, но на работеу с инвенторем это никак не сказывается. Пример: "inv+ 2,Такелан & inv- такелан", то в инвенторе будет отбражаться "1шт. такелан"

Операторы "pause" "end" должны идти в отдельной строке.

При "клике" на инвентарь вызывается процедура Use_имяпредмета если кликнули на последней, пустой строке в инвентаре, то процедура Use_Inv

Теперь рассмотрим операторы:
Внимание: символы "<.[.]..>" написаны для более легкого понимания текста и файле их нет, причем символы [ ] используются для обозначения текста, который можно опустить. Пример: "print <строка>" напечатает "<строка>", где символов " тоже нет.
Внимание: параметры операторов разделены запятыми, то есть в качестве параметра берется строка от пробела после оператора до запятой, не включительно, а в качестве второго параметра от запятой до конца, кроме последнего пробела. Исключение: "if" имеет особый формат. Пример: "btn ^%$ ^%$^ &#&*$^,TH$&*Y(* *(&H " создаст кнопку с переходом на локацию "^%$ ^%$^ &#&*$^" и надписью "TH$&*Y(* *(&H"
p <строка>, print <строка>- печатают всю строку после них.
pln
<строка>, println <строка>- печатают всю строку после них и переносит в конце строку.
cls - очищает окно, а именно текст, кнопки с выбором действий (см. "btn").
btn <локация>,<надпись> - создает кнопку для выбора вариантов действия с надписью на ней <надпись>, при клике на ней будет осуществлен переход на локацию "Common", потом (когда встретиться "end") на <метка>.
inv+ [<количество>,]<предмет> - добавляет <количество> (1 по умолчанию) предметов к инвенторю. Примечание: в отличие от "inv-" не проверяется, что кол-во предметов положительно, то есть если было 15 Рип и "inv+ -20,Рип" то станет -5 Рип.
inv- [<количество>,]<предмет> - убавляет <количество> (1 по умолчанию) предметов к инвенторю. Примечание: в отличие от "inv+" проверяется, что кол-во предметов положительно, то есть если было 15 Рип и "inv+ -20,Рип" то станет Рип изчезнет из инвенторя.
invkill [<предмет>] - убирает из инвенторя все предметы <предмет> (вообще все предметы по умолчанию).
perkill - уничтожает все переменные.
goto <метка> - передает управление на метку <метка>, то есть инструкции квеста выполняются с метки <метка>.
proc <метка> - передает управление на метку <метка>, то есть инструкции квеста выполняются с метки <метка>, но когда встречается "end" возвращает управление обратно.
save [<метка>] - если <метка> не указана, то сохранение текста локации, инвенторя, переменных, кнопок выбора в файле выбираемом пользователем, если же <метка> указана, то сохранение инвенторя, переменных и локации в которую нужно перейти при загрузке.
pause <время> - прекращение выполнения инструкций на <время> в милисекундах, причем пользователь в это время может выбирать варианты с помощью кнопок выбора и квест будет работать дальше, но по истечении <время> выполнение квеста продолжиться, одновременно двух работающих "pause" не может быть, новая затирает старую - движок о ней "забывает", забывает также он о паузе при нажатии кнопки действия.
input <переменная> - заставляет пользователя ввести число в переменную play <файл> - проигрывает файл <файл> из директории квеста, на время прогрывания квест не приостанавливается.
if <условие> then <операторы> - если <условие> выполняется, то выполняются <операторы>. Формат условия: комбинация boolean выражений и ключевых слов "not" "and" "or" (в порядке убывания приоритета), где boolean выражения либо вида <варажение><знак><выражение>, где <знак> это ">" "<" "<>" "=" ">=" "<="а выражение см. =, либо вида [<количество>] <предмет>, которое принимает TRUE если есть <количество> (по умолчанию 1) <предмет>.
<переменная>=<выражение> - значение <выражение> присваивается <переменая>, где <выражение> - комбинация + - | * / \ (где вертикальной чертой разделены операции разного приоритета), переменных.

Системные переменные:
Rnd - случайное число от 0 до 0.99999999999 меняется при каждом вызове
Music - имя фоновой музыки вроде "104.mid" причем только Midi файлы
Common - имя локации коммон вроде "Common_12" при Common=0 вызов просто "Common" (то есть вместо локации :Common используется :Common_номер)
Image - имя файла с картинкой вроде "104.gif"
ImageType - тип картинки: 0-bmp 1-ico 2-rle 3-wmf 4-emf 5-gif 6-jpg
ИмяЛокации - хранит информацию о кол-ве заходов на эту локацию посредством goto, proc, btn
Time - хранит число секунд прошедших с полуночи.

Все переменные - вещественные числа. Если переменная не инициализированна, то ее значение принимается равным 0.

Кодировка Windows (Cp 1251) везде.


3. Советы начинающим

A: Разберитесь с локацией "common" - полезная штука


4. Часто возникающие ошибки

Файлы OCX надо класть в директорию WINDOWS\SYSTEM либо в каталог к программе затем запустить "Regsvr32.exe Имя_Файла.OCX"

E: "COMDLG32" not correctly registred.
A: Скачайте COMDLG32.ocx

E: "MCI32" not correctly registred.
A: Скачайте MCI32.ocx

E: "MSDXM.OCX"...
A: Скачайте MSDXM.OCX


5. Часто возникающие вопросы

Q: Как нормально сделать голод в квесте?
A: Используте локацию Common например так:

:Common
Сытость=Сытость-1
if Сытость<=0 then PrintLn Вы голодны!!!
if Хлеб then Сытость=Сытость+10 & Inv- Хлеб
end

Q: Я пишу "<TAB>P Начало!" , а в квесте нет ничего подобного???
A: Символы <TAB> перед и после комманды (вплотную) недопустимы! Но можно писать например P<пробел><TAB>... и это будет работать.

Q: Я пишу ":ккк & p ккк" , а в квесте нет ничего подобного???
A: Комманда ":<метка> &" недопустима, для меток надо отдельные строки.

Q: Я пишу "save & p ккк" , а в сохранении нет ничего подобного???
A: Сохранение идёт на текущий момент а "p ккк" идёт уже после

Q: Почему вопросов и советов так мало и они такие ... ?
A: Пишите свои вопросы и советы по адресу ripos@mail.ru


6. Хронология версий

v1.3 Final Relise

- невозможны = в коментариях
- исправлен таймер на "как у Victor Korianov"
- обработка кликов на инвентарь
- фоновая музыка
- сделан механизм Мульти-Common
- включенна работа с любыми звуковыми файлами поддерживаемые системой
- работа с коммандной строкой
- полноценная работа с нецелыми числами
- возможность постановки любых пробелов и их комбинаций с запятыми
- включенна поддержка картинок (показ)
- возможность печати нескольких строк одновременно одним оператором
- убрана возможность Save на метку
- возможность печати любого символа
- считается кол-во заходов на локацию
- появился оператор ввода

Hosted by uCoz