Скачать в zip-формате (5Kb)


Документация к Universal Ripsoft Quest v1
(версия документации 08.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) Все сочетания символов "#$" заменяются на пробелы. Исключение: если использован оператор "print", то такой замены не производиться, т.к. "print" и так имеет расширенное форматирование.
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 <строка>- печатают всю строку после них. Исключение: символы "#<выражение>$" которые заманяются на значение этого выражения (см. "="), вложимость недопустима. Пример: "print <строка>" напечатает "<строка>", "p У тебя #money+10$ монет" напечатает "У тебя 110 монет" если monye=100.
pln <строка>, println <строка>- печатают всю строку после них и переносит в конце строку. Исключение: символы "#<выражение>$" которые заманяются на значение этого выражения (см. "="), вложимость недопустима. Пример: "println <строка>" напечатает "<строка><vbCrLf>" где <vbCrLf> обозначает перенос строки, "pln У тебя #money+10$ монет" напечатает "У тебя 110 монет<vbCrLf>" если monye=100.
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" не может быть, новая затирает старую - движок о ней "забывает", забывает также он о паузе при нажатии кнопки действия.
play <файл> - проигрывает файл <файл> из директории квеста, на время прогрывания квест не приостанавливается.
if <условие> then <операторы> - если <условие> выполняется, то выполняются <операторы>. Формат условия: комбинация boolean выражений и ключевых слов "not" "and" "or" (в порядке убывания приоритета), где boolean выражения либо вида <варажение><знак><выражение>, где <знак> это ">" "<" "<>" "=" ">=" "<="а выражение см. =, либо вида [<количество>] <предмет>, которое принимает TRUE если есть <количество> (по умолчанию 1) <предмет>.
<переменная>=<выражение> - значение <выражение> присваивается <переменая>, где <выражение> - комбинация + - * / , переменных.

Системные переменные:
Rnd - случайное число от 0 до 0.99999999999 меняется при каждом вызове
Music - имя фоновой музыки вроде "104.mid" причем только Midi файлы
Common - имя локации коммон вроде "Common_12" при Common=0 вызов просто "Common"


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.01

- коммада Proc
- эмблемка RipSoft
- при наведении на курсора мыши на Окно Информации он не становится вертикальной палкой
- исправленны недочёты при отказе от "Загрузки нового квеста" и "Загрузки сохранения"
- <> в условии
- мелкие недочёты в MegaQuest.qst и Readme.txt
- работа в многопользовательском режиме
- заставка
- возможность Save на метку

v1.01 Lite

- убрана видео вставка
- доработан квест

v1.2 Second Edition

- увеличенно кол-во кнопок (с 12 до 21), размер Inventory, окно описания локации
- добавлен оператор pause
- добавленна возможность #$ v1.21 Plus Pack
- исправлена ошибка с кол-вом кнопок
- изменена заставка
- добавленны квесты

v1.22

- исправлена ошибка с #...$
- добавлена возможность шифрование квестов
- добавлена возможность вставки более 2х пробелов посредством #$

v1.3 Final Relise

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

Хостинг от uCoz