Flags: различия между версиями

Материал из IFВики
Перейти к навигации Перейти к поиску
(Новая: Автор: Жучков Антон == Общая информация == Часто бывает необходимым выдать некий текст...)
 
м (Nikita переименовал страницу Модуль для удобной работы с флагами (RTADS) в Flags)
 
(не показаны 4 промежуточные версии 3 участников)
Строка 1: Строка 1:
Автор: [[Жучков, Антон|Жучков Антон]]
+
{{product info
 +
|название =
 +
|тип = Библиотеки TADS
 +
|разработчик = [[Разработчик::Жучков, Антон|Антон Жучков]]
 +
|язык =
 +
|система = [[TADS|TADS 2]]
 +
|онлайн =
 +
|написано на = [[TADS|TADS 2]]
 +
|язык разработки =
 +
|читаемый формат =
 +
|создаваемый формат =
 +
|первый выпуск =
 +
|последняя версия =
 +
|дата последней версии = 12.08.2008
 +
|состояние =
 +
|лицензия = [[Freeware]]
 +
|сайт =
 +
}}
 +
 
 +
Модуль для удобной работы с флагами [[TADS]].
  
 
== Общая информация ==
 
== Общая информация ==
Строка 21: Строка 40:
 
Формат: <tt>isFlag(flag)</tt>
 
Формат: <tt>isFlag(flag)</tt>
  
Возвращает значение флага <tt>flag</tt>.
+
Возвращает значение флага <tt>flag</tt>. <tt>flag</tt> - строковое значение (в одинарных кавычках).
  
 
== setFlag ==
 
== setFlag ==
Строка 51: Строка 70:
 
  sayOnce(_FL, 'Глядя на все это, ты чувствуешь себя как-то неуютно...');
 
  sayOnce(_FL, 'Глядя на все это, ты чувствуешь себя как-то неуютно...');
 
В этом случае, флагом будет служить название файла исходника и номер строки, из которой производился вызов <tt>sayOnce</tt>. Как видно, символ <tt>_FL</tt> очень удобен для таких "одноразовых" флагов.
 
В этом случае, флагом будет служить название файла исходника и номер строки, из которой производился вызов <tt>sayOnce</tt>. Как видно, символ <tt>_FL</tt> очень удобен для таких "одноразовых" флагов.
 
[[Категория:Для разработчиков игр]]
 

Текущая версия на 14:58, 3 марта 2019

Flags
Тип Библиотеки TADS
Разработчик(и) Антон Жучков
Языки интерфейса
Операционные системы TADS 2
Написано на TADS 2
Язык разработки
Читаемые форматы файлов
Создаваемые форматы файлов
Дата первого выпуска
Последняя версия
Дата последней версии 12 августа 2008
Состояние
Лицензия Freeware
Сайт


Модуль для удобной работы с флагами TADS.

Общая информация

Часто бывает необходимым выдать некий текст в зависимости от состояния игры (флага). Иногда удобно сосредоточить все флаги в одном месте. Чаще всего, это делается на объекте global.

Я написал несколько удобных для меня функций, которыми можно легко управлять флагами, выводить текст и начислять очки в зависимости от значения того или иного флага. Конечно, есть и другие способы "помечать" состояния игры, но мне показалось, что эти функции могут быть полезны.

Итак, в первую очередь необходимо скачать сам модуль и вставить его в код игры директивой #include.

Флаги будут храниться в объекте global в виде списка строк flags. Если перед началом игры требуется, чтобы какие-то флаги были установлены по умолчанию, то в описание объекта global нужно вставить их определение:

global: object
...
flags = ['isDrunk' 'isHeadache']
;

Далее, приведу описание функций модуля.

isFlag

Формат: isFlag(flag)

Возвращает значение флага flag. flag - строковое значение (в одинарных кавычках).

setFlag

Формат: setFlag(flag)

Устанавливает флаг flag.

unsetFlag

Формат: unsetFlag(flag)

Сбрасывает флаг flag.

ifFlagSay

Формат: ifFlagSay(flag, message [doUnset, score])

Выводит сообщение message, если флаг flag установлен. При этом, если doUnset = true (по умолчанию nil), то сбрасывает флаг flag. Если параметр score определен, то начисляет количество очков, равное его значению.

ifNotFlagSay

Формат: ifNotFlagSay(flag, message [doSet, score])

Выводит сообщение message, если флаг flag НЕ установлен. При этом, если doSet = true (по умолчанию nil), то устанавливает флаг flag. Если параметр score определен, то начисляет количество очков, равное его значению.

sayOnce

Формат: sayOnce(flag, message [, score])

Полностью аналогична функции ifNotFlagSay с параметром doSet = true. Определена для удобства "единичного" вывода текста. Для той же цели определен символ:

#define _FL __FILE__+cvtstr(__LINE__)

Т.е., если требуется вывести текст один раз за всю игру, то достаточно написать:

sayOnce(_FL, 'Глядя на все это, ты чувствуешь себя как-то неуютно...');

В этом случае, флагом будет служить название файла исходника и номер строки, из которой производился вызов sayOnce. Как видно, символ _FL очень удобен для таких "одноразовых" флагов.