Текстовые сообщения на экран

Материал из MODFAQ.RU — моддинг S.T.A.L.K.E.R., TES и Fallout
Перейти к: навигация, поиск

Текстовые сообщения на экран

Автор FantomICW, Zeka1996Korneev
Дополнил aka_sektor
Тип статьи руководство
Актуальность ТЧ, ЧН, ЗП
Необходимый софт Текстовый редактор
Связанная статья
Вызов функции

Чтобы вывести на экран одно или несколько текстовых сообщений, необходимо создать скрипт со специальной функцией и добавить её вызов. Создать скрипт можно любым текстовым редактором, просто сохраните текстовый файл в формате *.script
Путь: gamedata\scripts\script_name.script

В созданный скрипт, вставьте следующий код[1]:

function funct_name()
    news_manager.send_tip(db.actor, "text", 0, "default", 10000)
end
  • funct_name — имя вашей функции, оно же используется для вызова. Пишется только по-английски и без пробелов. Вместо пробелов используйте знак подчеркивания (_).
  • news_manager.send_tip — стандартная функция использующаяся для вывода сообщений.

Аргументы функции:

  1. db.actor — глобальная переменная.
  2. text — текст сообщения.
    Рекомендуется указывать string id, который читается из *.xml файлов, находящихся по пути gamedata\configs\text указанной параметром language папки, в секции файла localization.ltx
    Иначе не будут работать дополнительные параметры (см. ниже)
  3. 0 — число в секундах, которое задает задержку времени перед тем, как сообщение появится на экране (в данном случае равно 0, т.е без задержки).
  4. default — имя иконки сообщения из скрипта news_manager.script (см. строку tips_icons)
  5. 10000 — число (в миллисекундах), которое задает длительность отображения сообщения на экране до момента исчезновения(в данном случае равно 10 секундам).

Дополнительные параметры для текста:

  • Чтобы изменить цвет текста, поместите нужную часть между тегами %c[255,255,128,128] и %c[default].
    Значения в квадратных скобках [255,255,128,128], это RGB код цвета.
  • Чтобы перенести текст на следующую строку, поставьте перед ним тег \n

Множество сообщений подряд[2]

Если возникла необходимость имитации переписки сталкеров по КПК, используйте подобную функцию:

function funct_name()
	news_manager.send_tip(db.actor, "Ну как хабар?", nil, "default", 6000)
	news_manager.send_tip(db.actor, "Норм, нашел арт.", 4, "default", 6000)
	news_manager.send_tip(db.actor, "Гуд.", 8, "default", 6000)
end


Итого, что происходит в переписке:

  • у первого сообщения задержки нет
  • у второго задержка = 4 секунды от запуска функции
  • у третьего задержка = 8 секунд от запуска функции = 4 секунды после второго сообщения

Стоит также заметить, что функции запускаются одна за другой, а не одновременно, так что интервал между сообщениями будет чуть больше (почти незаметно), чем указано в аргументе.

Источники