Здесь показаны различия между двумя версиями данной страницы.
Both sides previous revision Предыдущая версия Следущая версия | Предыдущая версия | ||
help:modules [2023/01/03 12:33] aleks_versus переписано |
help:modules [2024/10/14 12:46] (текущий) aleks_versus |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | |||
[[help:inputs|Назад: Ввод текста игроком]] | [[help:inputs|Назад: Ввод текста игроком]] | ||
====== Работа с файлами игр, использование модулей ====== | ====== Работа с файлами игр, использование модулей ====== | ||
- | |||
**QSP** позволяет загружать в выполняемую игру другие файлы игр. Это можно сделать двумя способами: | **QSP** позволяет загружать в выполняемую игру другие файлы игр. Это можно сделать двумя способами: | ||
- | * Добавить локации из другой игры к списку локаций текущей игры. | + | * Добавить локации из другой игры к списку локаций текущей игры. |
- | * Заменить локации текущей игры локациями из другой игры. | + | * Заменить локации текущей игры локациями из другой игры. |
Первый способ обычно используется для того, чтобы разбить игру на несколько частей и работать над каждой частью отдельно, а затем объединять эти части уже при запуске основного файла игры. Так, например, можно создать различные наборы [[help:organizing|пользовательских функций и процедур]] и повторно использовать их в разных играх. | Первый способ обычно используется для того, чтобы разбить игру на несколько частей и работать над каждой частью отдельно, а затем объединять эти части уже при запуске основного файла игры. Так, например, можно создать различные наборы [[help:organizing|пользовательских функций и процедур]] и повторно использовать их в разных играх. | ||
Строка 18: | Строка 16: | ||
Второй способ используется достаточно редко, и он позволяет объединить запуск различных игр из одного сеанса работы плеера. При этом во время сеанса сохраняются значения всех переменных, предметов и состояния всех окон, т.е. игрок не замечает, как одна игра подменяется другой. | Второй способ используется достаточно редко, и он позволяет объединить запуск различных игр из одного сеанса работы плеера. При этом во время сеанса сохраняются значения всех переменных, предметов и состояния всех окон, т.е. игрок не замечает, как одна игра подменяется другой. | ||
- | Для примера представьте, что вы пишете симулятор казино на **QSP**. В казино есть множество различных игр: рулетка, покер, блэкджек, кости и другие. И каждая такая игра у вас смоделирована в отдельном QSP-файле. И есть главный файл, из которого вы можете запустить любую из этих игр. Пока работает плеер, деньги, заработанные в любой из этих игр, могут использоваться также и в любой другой, благодаря тому, что во всех отдельных играх они описываются одной и той же переменной ''**money**''. | + | Для примера представьте, что вы пишете симулятор казино на **QSP**. В казино есть множество различных игр: рулетка, покер, блэкджек, кости и другие. И каждая такая игра у вас смоделирована в отдельном QSP-файле. И есть главный файл, из которого вы можете запустить любую из этих игр. Пока работает плеер, деньги, заработанные в любой из этих игр, могут использоваться также и в любой другой, благодаря тому, что во всех отдельных играх они описываются одной и той же переменной ''%%money%%''. |
Ознакомьтесь с операторами, управляющими подключением файлов к игре, чтобы узнать, как на практике использовать оба способа. | Ознакомьтесь с операторами, управляющими подключением файлов к игре, чтобы узнать, как на практике использовать оба способа. | ||
- | ===== Операторы для работы с моудлями ===== | + | ===== Операторы для работы с модулями ===== |
- | * ''**INCLIB**'' — из указанного файла игры добавляет все локации, названия которых отсутствуют среди текущих игровых локаций. Загруженные локации полностью эквивалентны локациям из основного файла игры. Общая запись:<sxh qsp> | + | * ''%%INCLIB%%'' — из указанного файла игры добавляет все локации, названия которых отсутствуют среди текущих игровых локаций. Загруженные локации полностью эквивалентны локациям из основного файла игры. Общая запись: <sxh qsp> |
- | INCLIB [$путь к файлу игры] | + | INCLIB [$путь к файлу игры] |
- | </sxh> В более старых версиях библиотеки (< 5.8.0) использовался оператор ''**ADDQST**''.\\ Пример:<sxh qsp> | + | </sxh> Пример: <sxh qsp> |
- | inclib "lib/easy.math.qsp" | + | inclib "lib/easy.math.qsp" |
- | inclib "lib/easy.title.qsp" | + | inclib "lib/easy.title.qsp" |
- | inclib "res/drive.qsp" | + | inclib "res/drive.qsp" |
- | inclib "res/base.qsp" | + | inclib "res/base.qsp" |
- | inclib "res/intro.qsp" | + | inclib "res/intro.qsp" |
- | </sxh> **Обратите внимание!** Несмотря на то, что с применением оператора ''**INCLIB**'' увеличивается список доступных для использования локаций, сама запущенная игра не изменяется и не заменяется. Это позволяет запускать сохранения при отключенном режиме отладки (см. ''**[[help:savegame|DEBUG]]**'') даже в тех случаях, когда вы изменяете подключаемые к игре модули. То есть вы можете написать основной файл игры, включающий всего одну локацию, на которой подключаются все прочие модули, и сохранения от вашей игры будет невозможно запустить в других играх; однако при этом вы спокойно можете изменять все подключаемые к игре модули (например, если выпускаете патчи на игру), не боясь, что старые сохранения не запустятся с новыми версиями модулей. | + | </sxh> **Обратите внимание!** Несмотря на то, что с применением оператора ''%%INCLIB%%'' увеличивается список доступных для использования локаций, сама запущенная игра не изменяется и не заменяется. Это позволяет запускать сохранения при отключенном режиме отладки (см. ''**[[help:savegame|DEBUG]]**'') даже в тех случаях, когда вы изменяете подключаемые к игре модули. То есть вы можете написать основной файл игры, включающий всего одну локацию, на которой подключаются все прочие модули, и сохранения от вашей игры будет невозможно запустить в других играх; однако при этом вы спокойно можете изменять все подключаемые к игре модули (например, если выпускаете патчи на игру), не боясь, что старые сохранения не запустятся с новыми версиями модулей. |
- | * ''**FREELIB**'' — удаляет все локации, добавленные с помощью оператора ''**INCLIB**''.<sxh qsp> | + | * ''%%FREELIB%%'' — удаляет все локации, добавленные с помощью оператора ''%%INCLIB%%''. <sxh qsp> |
- | ! удаляем все добавленные локации | + | ! удаляем все добавленные локации |
- | freelib | + | freelib |
- | </sxh> В более старых версиях библиотеки (< 5.8.0) использовался оператор ''**KILLQST**''. | + | </sxh> |
- | * ''**OPENQST**'' — открывает и запускает указанный файл игры. То есть в сеансе плеера полностью очищается весь список локаций, затем добавляются локации из указанной игры, и на самую первую из них осуществляется переход, как если бы этот переход осуществлялся с помощью оператора ''**[[help:goto|GOTO]]**''. Общая запись:<sxh qsp> | + | * ''%%OPENQST%%'' — открывает и запускает указанный файл игры. То есть в сеансе плеера полностью очищается весь список локаций, затем добавляются локации из указанной игры, и на самую первую из них осуществляется переход, как если бы этот переход осуществлялся с помощью оператора ''**[[help:goto|GOTO]]**''. Общая запись: <sxh qsp> |
- | OPENQST [$путь] | + | OPENQST [$путь] |
- | </sxh> , где ''[$путь]'' — путь к файлу игры, которую требуется запустить. Пример:<sxh qsp> | + | </sxh> , где ''%%[$путь]%%'' — путь к файлу игры, которую требуется запустить. Пример: <sxh qsp> |
- | openqst "gamespool/cubesgame.qsp" | + | openqst "gamespool/cubesgame.qsp" |
- | </sxh> При использовании данного оператора, не происходит удаления переменных, удаления предметов инвентаря, очистки дополнительного описания и строки ввода, а также остановки проигрываемых файлов. Если вам нужно очистить экран и значения всех переменных, можно прописать в начале загружаемого файла игры такие команды:<sxh qsp> | + | </sxh> При использовании данного оператора, не происходит удаления переменных, удаления предметов инвентаря, очистки дополнительного описания и строки ввода, а также остановки проигрываемых файлов. Если вам нужно очистить экран и значения всех переменных, можно прописать в начале загружаемого файла игры такие команды: <sxh qsp> |
- | killall & cls & close all | + | killall & cls & close all |
- | </sxh> Обратите внимание! Загружаемая с помощью ''**OPENQST**'' игра — это совершенно другая игра, не та, из которой она была вызвана. Поэтому если вы из игры "1" запустили игру "2" и в игре "2" сделали сохранение, это сохранение не получится запустить из игры "1" при отключенном режиме отладки (см. ''**[[help:savegame|DEBUG]]**'').\\ **Внимание!** Не путайте оператор ''**OPENQST**'' и ''**[[help:savegame|OPENGAME]]**''. | + | </sxh> **Обратите внимание!** Загружаемая с помощью ''%%OPENQST%%'' игра — это совершенно другая игра, не та, из которой она была вызвана. Поэтому если вы из игры "1" запустили игру "2" и в игре "2" сделали сохранение, это сохранение не получится запустить из игры "1" при отключенном режиме отладки (см. ''**[[help:savegame|DEBUG]]**'').\\ **Внимание!** Не путайте операторы ''%%OPENQST%%'' и [[help:savegame|''OPENGAME'']]. |
===== Список готовых авторских модулей ===== | ===== Список готовых авторских модулей ===== | ||
Строка 49: | Строка 47: | ||
==== Olegus ==== | ==== Olegus ==== | ||
- | * [[https://forum.ifiction.ru/viewtopic.php?id=1613|QSP:Экран]] — модуль для управления отдельными HTML-областями на экране. | + | * [[https://forum.ifiction.ru/viewtopic.php?id=1613|QSP:Экран]] — модуль для управления отдельными HTML-областями на экране. |
- | * [[https://forum.ifiction.ru/viewtopic.php?id=1522|Модуль для работы с таблицами данных]] | + | * [[https://forum.ifiction.ru/viewtopic.php?id=1522|Модуль для работы с таблицами данных]] |
- | * [[https://forum.ifiction.ru/viewtopic.php?id=1527|Модуль для работы с меню]] — облегчает работу со всплывающими меню. | + | * [[https://forum.ifiction.ru/viewtopic.php?id=1527|Модуль для работы с меню]] — облегчает работу со всплывающими меню. |
- | * [[https://forum.ifiction.ru/viewtopic.php?id=1540|QSP:Типограф]] — модуль для форматирования текста. | + | * [[https://forum.ifiction.ru/viewtopic.php?id=1540|QSP:Типограф]] — модуль для форматирования текста. |
- | * [[https://forum.ifiction.ru/viewtopic.php?id=1873|QSP:Таймер]] — модуль для управления событиями по таймеру. | + | * [[https://forum.ifiction.ru/viewtopic.php?id=1873|QSP:Таймер]] — модуль для управления событиями по таймеру. |
==== Werewolf ==== | ==== Werewolf ==== | ||
- | * [[https://qsp.org/index.php?option=com_content&id=71&Itemid=56|Отладчик]] | + | * [[https://qsp.org/index.php?option=com_content&id=71&Itemid=56|Отладчик]] |
- | * [[https://qsp.org/index.php?option=com_content&view=article&id=79:-10&catid=36:2009-02-19-06-11-21&Itemid=76|Гибкий плейлист]] | + | * [[https://qsp.org/index.php?option=com_content&view=article&id=79:-10&catid=36:2009-02-19-06-11-21&Itemid=76|Гибкий плейлист]] |
==== Ntropy ==== | ==== Ntropy ==== | ||
- | * [[https://qsp.org/index.php?option=com_content&view=article&id=70:qsp-inventory-advanced-lib-076&catid=36:2009-02-19-06-11-21&Itemid=76|Библиотечка, дополняющая инвентарь]] | + | * [[https://qsp.org/index.php?option=com_content&view=article&id=70:qsp-inventory-advanced-lib-076&catid=36:2009-02-19-06-11-21&Itemid=76|Библиотечка, дополняющая инвентарь]] |
==== Aleks Versus ==== | ==== Aleks Versus ==== | ||
- | * [[https://github.com/AleksVersus/easy.math.3|Easy.Math]] — математический модуль, расширяющий возможности работы с числами. Вещественные числа, работа со строками и массивами и другие полезные функции. | + | * [[https://github.com/AleksVersus/easy.math.3|Easy.Math]] — математический модуль, расширяющий возможности работы с числами. Вещественные числа, работа со строками и массивами и другие полезные функции. |
- | + | ||
- | [[help:savegame|Вперёд: Файлы сохранений]] | + | |
+ | [[help:savegame|Вперёд: Файлы сохранений]] | ||