Библиотека математических функций easy.math для Quest Soft Player.
Разрабатывалась для плееров версий 5.7.0 — это: классический плеер версии 5.7.0, плеер от Seedhartha для Android (до версии 2.3.1 минимум), а так же Quest Navigator версии 0.0.28. Не гарантируется правильная работа на плеерах иных версий. Некоторые функции имеют ограничения на значение числовых аргументов, это связано с используемыми плеером библиотеками. Для разных версий плеера могут быть разные ограничения, поэтому внимательно читайте документацию к плееру, под который разрабатываете игру.
Ветка версий 2.x.x. будет поддерживаться до тех пор, пока не выйдет классический плеер версии 5.8.0, и пока я не допишу игру для плеера версии 5.7.0, затем я сосредоточусь на ветке 3.x.x. Таким образом будут существовать одновременно две версии библиотеки: 2.x.x и 3.x.x. Вариант 2.x.x будет работать и в более старых, и в более новых версиях плеера, а вариант 3.x.x будет работать исключительно в плеерах версии 5.8.0 и выше.
Внимание!!! В версии библиотеки 2.4.0, которая следует за 2.3.14, внесены большие изменения (см. историю версий), и многие функции потеряли обратную совместимость. Управляющие конструкции для многих функций переписаны и приведены к единому виду! Будьте внимательны при обновлении библиотеки, если вы её уже используете!!!
По всем вопросам и предложениям обращаться:
- aleksversus@mail.ru
- Вконтакте: id40090736
Изначально библиотека создавалась для обеспечения нужд игры МАГИКОН.
Предполагается, что Вы читали справку по QSP, пробовали писать игры и уже знаете, что такое локации, подпрограммы (процедуры) и функции, чем отличаются текстовые и числовые переменные, что такое аргументы и для чего они нужны.
Чтобы использовать функции библиотеки при написании своей игры, сделайте следующее:
скачайте архив с библиотекой отсюда, и распакуйте в папку, где лежит ваша игра. В папке с вашей игрой должна появиться папка "lib".
В своей игре на самой первой локации, в поле "выполнить при посещении" введите
addqst 'lib\easy.math.qsp'
Если планируется использование библиотеки в играх на Quest Navigator, подключение библиотеки производится с помощью команды inclib
. Так же необходимо выставить значение переменной $AVS_PLAYERTYPE
равное '[QN]'
inclib 'lib\easy.math.qsp'
$AVS_PLAYERTYPE='[QN]'
Теперь Вы можете пользоваться функциями библиотеки.
Все функции библиотеки вызываются с помощью ключевого слова FUNC( )
- для получения числовых значений, и $FUNC( )
- для получения текстовых значений.
Исключением являются функции, результат которых записывается в массив. Такие функции вызываются оператором GOSUB
, или GS
.
$FUNC('#fnct#',$args[0],$args[1],$args[2],$args[3],$args[4],$args[5],$args[6],$args[7],$args[8])
Аргументы могут быть текстовыми или числовыми в зависимости от требований и назначения функции.
Библиотека работает с переменными, имена которых включают сочетание easy_math
, чтобы избежать пересечений с именами переменных, которые Вы используете в своих играх.
Все переменные, использующиеся функциями, после - уничтожаются.
Если результат работы функции помещается в массив, одним из параметров функции указывается имя массива, в который должен быть помещён результат. Имена массивов, передаваемые в аргументах функций, должны записываться по общим правилам записи имён переменных для плеера: текстовые массивы - с символом $
перед именем, числовые - без символа $
перед именем. Само имя не должно содержать символа $
, и других запрещённых символов.
- Операции над целыми числами
#even#
- округление целых чисел до указанной разрядности#sum#
- подсчёт суммы всех элементов массива.#raz#
- получение разрядности целого числа#^#
- возведение целого числа в степень.#-#
- модуль от разности. c=|a-b|
- Логические операции
#add#
- "логическое" сложение#dev#
- "логическое" вычитание#rtp#
- перестановка значений
- Операции над текстом
#zero#
- генерирует строку одинаковых символов#rndstr#
- генерирует строку случайных символов#chk.obj.word#
- производит поиск предмета в "инвентаре"#chk.array.word#
- производит поиск элемента массива, содержащего строку, соответствующую регулярному выражению.#str.inArray#
- из блока текста выбирает все строки между указанными разделителями и помещает их в указанный массив.#widetrim#
- удаление прилегающих пробелов, символов табуляции и переводов строк, или символов преформатирования.#str.thin#
- разрежение строки строкой-разделителем.
- Операции над вещественными (дробными) числами
#dz#
- отсечение нулей в дробной части числа#indiv#
- рациональное частное от деления двух целых чисел#undiv#
- превращает рациональное число в целое#razdiv#
- получает разрядность дробной части числа#rounddiv#
- округляет рациональное число.#+#
- вычисление суммы рациональных чисел.#*#
- вычисление произведения рациональных чисел.#:#
- вычисление частного от деления рациональных чисел.#sim#
- сравнение рациональных чисел.#sqrt#
- вычисление корня квадратного.#invert#
- инвертирование числа.
- Операции над шестнадцатеричными числами
#hex-dec#
- перевод из шестнадцатеричной системы в десятеричную#dec-hex#
- перевод из десятеричной системы в шестнадцатеричную#dec-col#
- превращает десятеричное число в шестнадцатеричное#+col#
- изменение цвета, записанного в шестнадцатеричном RGB.#col-rgb#
- преобразование цвета из формата RRGGBB в формат rgb понятный QSP.#col-inv#
- инвертирование цвета в формате RRGGBB, т.е. преобразование цвета к совершенно противоположному.
- Операции над массивами
#array.rand#
- заполнение элементов массива случайными числами#array.strt#
- заполнение элементов массива подряд идущими числами.#array.prnt#
- вывод содержимого всех элементов массива в виде текста#array.prnt.few#
- вывод содержимого нескольких массивов.#array.sort#
- многофункциональная сортировка содержимого массива.#array.rstd#
- перетасовка элементов массива в соответствии с таблицей перестановки.#array.dsrt#
- операция обратная сортировке.#array.simp#
- сравнение содержимого двух массивов.#array.clr#
- удаление всех элементов массива, соответствующих указанному значению.#array.srch#
- поиск максимального или минимального значения числового массива по указанной области и в заданных пределах.#array.ins#
- вставка элемента в массив со сдвигом ячеек вправо.em.arr.chType
- изменение типа массива.
- Вспомогательные функции
get.word.inPos
- из строки видаaaa|bbb|ccc|...|yyy|zzz
вычленяется подстрока, стоящая в указанной позиции.get.tag.num
- получает значение одиночного тега.get.tag.cont
- получает значение сдвоенного тега.kill.var.olegus
- процедура, нагло национализированная у Olegus'а. Удаляет элемент массива по его текстовому индексу.em.maxVar
- поиск названия переменной среди перечисленных, которая содержит наибольшее значение.em.minVar
- поиск названия переменной среди перечисленных, которая содержит наименьшее значение.em.var.getType
- получение типа переменной.#re.rgb#
- получает составляющие цвета на основе числового кода цвета QSP.
- Работа с координатной сеткой
#coords.get#
- определяет координаты ячейки по текущему номеру ячейки.
Библиотека будет пополняться новыми функциями по мере необходимости, и если существование функции хоть как-то оправдано. Некоторые функции на сегодняшний день сделать невозможно - они будут либо слишком сложны, либо заметно снизят быстродействие игры. Вероятно, некоторые математические операции очень скоро будут встроены непосредственно в движок плеера, и необходимость в них отпадёт. Такие функции будут исключаться из последующих версий библиотеки. По возможности, алгоритмы будут упрощены и разгружены, а так же будут достраиваться необходимые для работы с функциями параметры.