Оглавление Сообщение об ошибках Ваше мнение о проекте E-Mail автору

Языковые файлы XML в Х2

v      Что такое языковой файл

 

Вся текстовая информация использующаяся в Х2 (описания товаров, название команд меню, фразы в приходящих игроку сообщениях и т.п.) хранится во внешних XML файлах. Данные файлы содержат в себе полностью всю текстовку, что очень облегчает перевод Х2 на другие языки. Основным языковым файлом является файл ХХ0001.XML, где ХХ это цифровой идентификатор языка под который локализована информация содержащаяся в файле. Именно в этом файле хранится весь текст относящийся к игре. Также в комплекте с игрой идет файл ХХ0002.XML, он содержит тексты для первого диалогового окна, появляющегося перед запуском игры (настройка графики, логотип, управление и т.п). Ниже приведены ХХ коды и языки соответствующие им ( на самом деле коды соответствуют телефонным кодам стран, где данный язык является основным):

 

ХХ код

Язык локализации

7

Русский

33

Французский

39

Итальянский

44

Английский

48

Польский

49

Немецкий

 

Эти файлы находятся в папке /t каталога в который установлена игра. Это верно для распакованной версии игры (изначально игра находится в упакованном виде).

Второй вариант расположения файлов это подобные zip архивам, файлы *.CAT - файлы каталогов, *.DAT - файлы данных. В веси 1.4 имеется четыре пары файлов от 01.CAT/01.DAT и соответственно до 04.CAT/04.DAT. Х2 имеет доступ к упакованным файлам, также как, если бы он находились в распакованном состоянии и были разложены по обычным папкам. Чтобы нам получить доступ к этим файлам, необходимо распаковать эти файлы. Делается это при помощи официальной программки «X2 modder kit» или «X2 modder» от OlisJ. Для русскоязычных пользователей гораздо удобней воспользоваться утилитой написанной пилотом Dimaxxом, называется она  XTdat.exe. Программа имеет русскоязычный интерфейс и легка в использовании. Найти эту программку можно здесь: http://www.elite-games.ru/_egm_scripts/url.php?action=gotourl&url=/downloads/x2/xtdat.exe.

После распаковки, файлы содержащиеся в CAT/DAT файлах будут извлечены и разложены по соответствующим папкам. Открываем папку /t в игровой директории в ней должны появиться файлы 440001.XML и 440002.XML для англоязычной версии или 70001.XML и 70002.XML для русскоязычной (дальше, везде будет рассматриваться русская версия Х2). Если ваша игра локализована под другой язык, то идентификатор языка будет соответствовать языку локализации (смабл).

 

v    Как делается языковой файл и при помощи какой программы 

 

Поняв основное назначение языкового файла и прежде чем перейти к более глубокому рассмотрению данного вопроса. Следует разобраться при помощи какой программы можно посмотреть содержимое языкового файла, редактировать и создавать новые. Ответ прост. Самой удобной программой для работы с языковыми файлами является стандартный виндосовский блокнот, а программой для просмотра содержимого Internet Explorer. Любой языковой файл легче всего не создавать с нуля а взять какой ни будь готовый и подредактировать его. Если у вас нет под рукой ни одного маленького языкового файла, то воспользуемся поставляемым с игрой файлом 70002.XML. Открываем папку /t из игровой директории и открываем файл 70002.XML при помощи блокнота. Удаляем текст от строки <page id="1912" title="Graphic Settings dialog" descr=""> до самого конца оставив только последнею строчку </language>. В разделе <page id="1910" title="About Dialogue" descr="First dialogue before start of game - About"> удаляем все между <t id="1">Запустить X2</t> и </page>

У нас должен получиться файл следующего содержания:

<?xml version="1.0" encoding="UTF-8" ?>

<language id="7">

 

<page id="1910" title="About Dialogue" descr="First dialogue before start of game - About">

 <t id="1">Запустить X2</t>

</page>

</language>

Удаляем 1910 в page id, «About Dialogue» в title и «First dialogue before start of game – About» в descry. Строчкой ниже удаляем 1 из “t id=” и «Запустить X2»

Получаем:

<?xml version="1.0" encoding="UTF-8" ?>

<language id="7">

 

<page id=" " title=" " descr=" ">

 <t id=" "> </t>

</page>

</language>

Выбираем «сохранить как», исправляем имя на 70005.XML (расширение указывать обязательно), устанавливаем кодировку UTF-8, сохраняем. Теперь у нас есть файл шаблон языкового файла с именем 70005.XML.

 

v    Использование пользовательских языковых файлов при работе с  командным меню

Теперь мы знаем, что обозначает первая часть имени языкового файла. Давайте  теперь разберемся, что означают четыре оставшиеся цифры в имени. Эти цифры, называются персональным идентификатором языкового файла. Этот идентификатор (ID) нужен для того, чтобы любой скрипт мог получить доступ к содержимому любого языкового файла. Осуществляется этот доступ по средствам инструкции load text, инструкция использует ID для того, чтобы определить к какому из имеющихся языковых файлов хочет получить доступ текущий скрипт. Х2 позволяет пользователю использовать до 9997, произвольных языковых файлов (например имена файлов: 70003.XML, 70004.XML, 70010.XML и т.д., кроме зарезервированных системных файлов 70001.XML и 70002.XML).

Пользовательские языковые файлы могут быть использованы для загрузки в Х2 описаний новых товаров, команд в меню, размещения шаблонов текстов и т.п., используемых игроком в своих скриптах. Для того чтобы было понятно рассмотрим небольшой файл пример:

 

  <?xml version="1.0" encoding="UTF-8" ?>

- <language id="7">

- <page id="2008" title="Script Object Commands" descr=" ">

  <t id="715">Команда_мой_скрипт</t>

  </page>

- <page id="2010" title="Script Cmd Names" descr=" ">

  <t id="715">Запуск моего скрипта</t>

  </page>

- <page id="2011" title="Script Cmd Shorts" descr=" ">

  <t id="715">Тест</t>

  </page>

- <page id="2022" title="Command Info" descr=" ">

  <t id="715">Изучение процесса создания дополнительных команд.</t>

  </page>

  </language>

Как видите язык файла указан не только в имени файла, но и в теле самого файла.

 

Любой языковой файл (в том числе и  70001.XML) разделен на страницы (page id= ), и на текстовые идентификаторы внутри страницы (t id= ), то есть принцип папок и подпапок в обыкновенной файловой системе.

 

 Прежде чем двигаться дальше, объясню как будут располагаться в памяти языковые файлы. Основным файлом описания является файл 70001.XML, он загружается в память при загрузке игры. Все языковые файлы создаваемые и используемые вами, загружаемые в память при помощи инструкции load text, будут дополнять или изменять, уже загруженный в пямять основной языковой файл 70001.XML, а ScE будет обращаться непосредственно к нему. Имейте в виду, что если два пользовательских языковых файла обратятся к одному и тому же  текстовому ID на одной странице и изменят его значение, то актуальным будет то значение которое было записано последним.

 

В основном файле имеется четыре страницы которые вы будите использовать в своих скриптах при организации работы командного меню корабля:

 

2008

 

Эта страница содержит все мнемонические имена команд/сигналов. Мнемонические имена используются инструкциям для которых команды/сигналы являются параметрами. Примером таких инструкций служат global script map и set script command upgrade. Если вы используете в вашем скрипте какую нибудь из этих инструкций то при выборе команды/сигнала редактор отразит весь список мнемонических имен команд содержащихся на странице 2008 основного языкового файла.

2010

 

Эта страница содержит текст являющийся длинной версией имени команды. То есть этот текст отражаемся в виде пункта в меню. Также именно этот текст будет отражен в разделе команда информационного экрана и в разделе команда списка вашей собственности (при условии что в теле вызываемого будет присутствовать инструкция set command, иначе во всех информационных окнах вместо имя выполняемой команды будет отражаться «Нет команд»)

2011

На этой странице находятся короткие имена команд. Короткие имена отражаются в командном меню справа от длинных имен, тек же короткое имя команды отражается в верхней части экрана также справа от длинного имени в главном окне командного меню .

2022

На этой странице находится краткое описание вашей команды. Это описание не является обязательным, но не забывайте что ваши скрипты будут использовать другие пилоты, и по этому желательно создавая в командном меню новую команду, делать для нее краткое описание. Наличие данного описания на соответствующей странице добавит небольшой значок в виде буквы «i», между длинным и коротким именем команды при отражении меню, а при нажатии на клавишу «i», при курсоре установленном на вашу команду на экране отразиться окно содержащее описание вашей команды.

 

В нашем примере на странице 2008 мы заменяем мнемоническое имя команды COMMAND_TYPE_CUSTOM_15 находящиеся за текстовым идентификатором 715 на имя заданное нами Команда_мой_скрипт (обратите внимание на то, что после изменения мнемонического имени команды, при попытке выбрать ее через меню редактора, вы можете не обнаружить ее на старом месте. То есть между COMMAND_TYPE_CUSTOM_14 и COMMAND_TYPE_CUSTOM_16, причина тому, фильтр редактора который сортирует список по латинскому алфавиту). Далее на странице 2010 по ID=715 записываем «Запуск моего скрипта», а на странице 2011 в ID с тем же номером записываем короткое имя нашей команды «Тест».  И не забываем создать краткое описание нашей команды, разместив на странице 2022 в идентификаторе 715 текст описания «Изучение процесса создания дополнительных команд.»

 Языковой файл для команды COMMAND_TYPE_CUSTOM_15 создан. Теперь когда мы произведем инициализацию нашей команды (как это сделать рассмотрим дальше), в командном меню в разделе Выборочные команды будет отражен пункт меню с названием «Запуск моего скрипта», а чуть правее в квадратных скобках будет указано краткое имя команды [Тест]. Между именами отразиться значок «i», сообщающий о наличии описания для команды вызываемого нажатием клавиши «i».

 

Далее в таблице будут приведены команды, их тип и ID, меню в которых они располагаются.

 

Тип

ID

Меню

Мнемоническое имя

Navigation

200-231

Командное меню, Навигация

COMMAND_TYPE_NAV_00 to 31

Combat

300-331

Командное меню, Боевые

COMMAND_TYPE_FIGHT_00 to 31

Trade

400-431

Командное меню, Торговые

COMMAND_TYPE_TRADE_00 to 31

Special

500-531

Командное меню, Специальные

COMMAND_TYPE_SPECIAL_00 to 31

Piracy

600-631

Командное меню, Пиратские

COMMAND_TYPE_PIRACY_00 to 31

Custom

700-731

Командное меню, Выборочные

COMMAND_TYPE_CUSTOM_00 to 31

General

800-831

Командное меню, Общие

COMMAND_TYPE_GENERAL_00 to 31

Turret

900-931

Меню турелей (из основного меню)

COMMAND_TYPE_TURRET_00 to 31

Station

1100-1131

Командная консоль станций

COMMAND_TYPE_STATION_00 to 31

Ship

1200-1231

Дополнительные корабельные команды

COMMAND_TYPE_SHIP_00 to 31

 

В данной таблице указанны все возможные пункты меню. При выборе на какой пункт меню «зацепить» вашу команду имейте в виду следующее: в каждом пункте меню первые шестнадцать команд зарезервированы Egosoft, для подписанных ими Plugin. И вообще если вы используете в игре несколько скриптов написанных разными авторами, то не поленитесь заглянуть в инициализирующие файлы и посмотреть какие команды используют эти скрипты. Если вы увидите, что два каких то скрипта ссылаются на одну и туже команду вам придется немного изменить один из скриптов, назначив ему другую команду. Если этого не сделать, то скрипт который загрузится последним перехватит все управление на себя.

v    Инициализация языкового файла

Для того, чтобы языковой файл загрузился и произвел соответствующие изменения в  загруженном основном языковом файле. Необходимо создать небольшой скрипт инициализации назовем его init.a вот его исходный текст:

 

Script init.a

Version: 0
for Script Engine Version: 25

Description

Описание

Arguments

Source Text


001   load text: id=5
002   $command = Команда_мой_скрипт
003   global script map: set: key=$command, class=Корабль, race=Player, script='a.missile.fire',prio=0
004   global script map: ignore: key=$command, class=Дрон, race=Player
005   set script command upgrade: command=Команда_мой_скрипт  upgrade=[TRUE]
006   return null

В строке 001 загружаем языковой файл 70005.XML, 003 устанавливаем связь между командой и скриптом a.missile.fire, для подключения в меню Выборочных команд у объектов класса Корабль пункта который будет вызывать наш скрипт. 004 Исключаем из списка объектов, класс объектов Дрон. Устанавливаем наличие апгрейда необходимого для активации пункта в меню, в нашем случае значение [TRUE], то есть пункт будет активен всегда. Если все готово  производим реинициализацию скриптового КЭШа как это было описано в разделе «Редактор скриптов». Если все правильно то в меню должен появиться Выборочных команд появится команда « Запуск моего скрипта»

v    Пользовательские языковые файлы для создания текстовых шаблонов

 

Если вы взялись за создание какого либо скрипта, то вполне возможно, что вам понадобится вывести какие либо текстовые данные (яркий пример, это любой текст на русском языке. Х2 не позволяет вводить русские символы в редакторе скриптов). Для того чтобы использовать текстовые шаблоны или просто обойти запрет на введение русских символов можно также использовать  языковые файлы. Давайте попробуем записать какой ни будь русскоязычный текст в бортовой журнал нашего корабля.

Для начала определим на какой странице, и какой “t id” нам надо использовать для хранения шаблона нашего текста. Принцип выбора прост. Шаблон можно хранить на любой доступной странице, следует лишь использовать уникальный “t id” , то есть открываем в IE файл 70001.XML и смотрим. На странице 1 (<page id="1" title="Root page" descr="">) имеется пять элементов с “t id” 1,2,3,5, 9999999 соответственно все “t id” между 5 и 9999999 свободны.

Воспользуемся этим. Открываем наш файл шаблон в блокноте и заполняем данными page id="1", " title="Root pageдолжно получиться следующее:

 

 

<?xml version="1.0" encoding="UTF-8" ?>

<language id="7">

<page id="1" title="Root page" descr=" ">

 <t id="100"> Это мой русскоязычный текст</t>

</page>

</language>

Сохраняем его, запускаем игру, заходим а редактор скриптов и делаем небольшой скриптик:

 

Script Print.main.rustext

Version: 0
for Script Engine Version: 25

Description

Print to logbook russian text

Arguments

Source Text


001   load text: id=6
002   write to player logbook: printfpageid=1 textid=100nullnullnullnullnull
003   return null

 

 

Запускаем созданный нами скрипт. Выходим из редактора и открываем бортовой журнал если вы правильно выполнили все действия, то в журнале будет новая запись с текстом «Это мой русскоязычный текст»

 

v    Использование тэгов и спец. символов для оформления текстов.

 

Играя в Х2, вы наверное обратили внимание на то как оформлен текст в досках объявлений на станциях, а также над тем, что многие сообщения записанные в вашем бортовом журнале содержат цветные вставки, текст располагается в несколько колонок или центрирован по середине и т.п. О том как это делается мы рассмотрим в этой главе.

В Х2 имеется возможность форматирования текстов реализована по средствам использования тэгов и спец.символов. Тэги предназначены для форматирования, изменения цвета текста используемого в сообщениях Х2 и заключенного между ними. Спец символы используются для изменения цвета текста следующего за ними, ввода в тело текста вычисляемого значения или параметра. Х2 использует два типа спецсимволов. Первый тип форматирующие спецсимволы, к ним относятся спецсимволы изменяющие цвет текста и строчные спецсимволы такие как перевод строки табуляция. Второй тип, это спецсимволы значений, используются для размещения в теле текста вычисляемых значений.

 

Форматирующие спецсимволы.

 

Сначала давайте рассмотрим спецсимволы, которые используются для изменения цвета текста сообщений, а также выполнения некоторых строчных  действий. Любой форматирующий спецсимвол в Х2 начинается со знака « \ », и доступен для использования только при помощи текстовых шаблонов из языковых файлов. Формат записи форматирующих  спецсимволов изменяющих цвет следующий: \033<символ цвета>. Обратите внимание на то, что цветовые спецсимволы делают установку для всего идущего за ним тексом, то есть цвет текста не изменится до следующего встреченного в тексте цветового спецсимвола или тэга. Т.е если вы например, сделали цветным имя какого-либо объекта и не восстановили цвет использую спецсимвол закрытия цвета (возвращение к стандартному цвету), то в игре, если вы захотите добавить что ни будь к имени, то добавленный текст также отразиться цветом установленным спецсимволом в начале имени. Если же в стоке будет стоять тэг, то после его обработки установка цвета будет изменена на стандартный. Также к стандартному цвету возвращает спецсимвол перевода строки \n. Обязательно учитывайте эти факты работая над своими текстами к своим скриптам. И если вы использовании спецсимвол цвета не забывайте закрывать его возвращением к стандарту.

 

Спецсимвол

Цвет

Цветовые

\033B

Синий

\033C

Голубой

\033G

Зеленый

\033M

Малиновый

\033R

Красный

\033W

Белый

\033X

Ярко-белый (стандарт для меню)

\033Y

Желтый

\033Z

Серый (стандарт для сообщений)

Форматирующий

\n

Перевод строки

Пример:

создадим файл 70007.XML

 

<?xml version="1.0" encoding="UTF-8" ?>

<language id="7">

<page id="1" title="Root page" descr=" ">

 <t id="100">\033B Синий\n\033G Зеленый\n\033R Красный</t>

</page>

</language>

 

и скрипт для запуска с именем Print.sym:

 

Script Print.sym

Version: 0
for Script Engine Version: 25

Description

Описание

Arguments

Source Text


001   load text: id=7
002   $str = sprintf: pageid=1 textid=100nullnullnullnullnull
003   write to player logbook $str
004   send incoming message $str to player: display it=[TRUE]
005   return null

 

запустим его. Получаем сообщение следующего вида:

 

Как мы видим текст отражен цветами согласно указанным нами спецсимволов, а спецсимвол «\n» обеспечил перевод строки. Из форматирующих спецсимволов, я нашел только два это использованный нами «\n» и еще есть «\t» - табуляция, но к сожалению не доступен ScE, использует его только сам движок игры при построении различных help-экранов. Например: вкладка  «?» в картах галактики и сектора.

 

Спецсимволы вычисляемых значений

 

            Очень часто при написании скрипта, требуется послать сообщение в котором в текстовом сопровождении указывалось бы несколько значений, не имеющих постоянной величины. Например сообщить игроку что в каком то секторе, на какой то принадлежащий вам транспортный корабль было совершено нападение, каким то кораблем, принадлежащим какой то расе. То есть, предположим у нас есть скрипт который следит за подобными ситуациями и отправляет вам отчет такого рода.

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

 

из раздела общие команды

 

<RetVar>=sprintf: fmt=<Var/String>, <Value1>, <Value2>, <Value3>, <Value4>, <Value5>

 

<RetVar>=sprintf: pageid=<Var/Number1> id=<Var/Number2>, <Value1>, <Value2>, <Value3>, <Value4>, <Value5>

 

Первая команда записывает в переменную <RetVar> текстовую строку составленную из строки формата <Var/String> в которой все СВЗ заменены значениями Value. В одной строке формата может присутствовать до пяти вычисляемых значений. Вторая команда выполняет те же действия, с той разницей, что строка формата берется из языкового файла (почти все скрипты отдают предпочтение второй команде, т.к. использование языковых файлов позволяет  использовать тексты на любом языке, в то время как редактор, использует только латинскую раскладку)

 

из раздела «Работа с бортовым журналом» используются очень похожие команды:

 

write to player logbook: printf: fmt=< Var/String >, < Value1>, <Value2>, < Value3>, < Value4>, < Value5>

 

write to player logbook: printf: pageid=< Var/Number1>, textid=<Var/Number2>, < Value1>, < Value2>, < Value3>, < Value4>, < Value5>

Различия этих команд заключаются в том, что две последних команды выводят строку непосредственно в бортовой журнал.

 

            Теперь давайте рассмотрим какие спецсимволы вычисляемых значений мы можем поместить в строку формата. Все СВЗ начинаются с символа «%» далее сам символ интерпретируемый ScE . В таблице указаны все СВЗ и их описание:

 

Спецсимвол

Описание

%s

Вставить значение Value1-5 в зависимости от того каким по счету стоит этот символ. То есть, если в строке присутствует несколько символов %s, то на место первого будет вставлено значение Value1, на место второго Value2 и т.д.

%d

(Decimal) вставить десятичное значение, в отличии от %s строкового. То есть при попытке напечатать 0 - получается "пусто" или "null".

%!<n>s

Вставить значение не в общем порядке, а указанное в <n>. Например: Если в n указано 3, то будет вставлено значение Value3.

%<n>s

В этом месте строка раздвигается на количество символов указанное в <n>, на освободившиеся место записывается столько символов параметра, сколько поместится. Если параметр короче чем строка формируемая параметром, то выравнивание будет производится по правому краю отведенного места.

% - <n>s

Действует также, как и спецсимвол %<n>s, с тем отличием, что выравнивание будет производится по левому краю отведенного места.

*Использование угловых скобок условно.

 

 Теперь мы рассмотрев возможные СВЗ, давайте вернемся к нашему примеру и попытаемся создать оговоренное выше сообщение. И так, предположим, что некий глобальный скрипт отследил ситуацию о нападении на ваш транспортный корабль и поместил в переменные интересующие нас данные. Переменная $sector=<сектор в котором произошло нападение>, $MainShip=<атакуемый корабль>, $EnemyShip=<корабль агрессора>, $EnemyRace=<раса агрессора>. Строка помещающая сообщение об атаке в бортовой журнал, будет выглядеть так:

057     write to player logbook: printf: fmt=’Ваш корабль %s находясь в секторе %s, был атакован кораблем %s принадлежащим расе %s’, $MainShip, $sector, $EnemyShip, $EnemyRace, null

* русские символы условны, для использования русской раскладки необходимо использовать языковой файл и команду write to player logbook: printf: pageid= textid=.

 

Посланное нам сообщение будет выглядеть, приблизительно, вот так:

 

Теги форматирования.

 

Теги представляют их себя двух компонентный спецсимвол состоящий из открывающего тэг-символа “[b]” и закрывающего “[/b]” (в примере тэг устанавливающий желтый цвет для текста заключенного нем). Все тэги оказывают свое действие, только на текст размещенный между открывающим и закрывающим тэг-символом. Есть еще одна приятная особенность в использовании тэгов – это, поддержка вложенности, то есть в тело одного тэга может быть вложен другой.

 

 Присутствующие в Х2 тэги, делятся на две группы: простые и специальные:

 

Простые теги.

 

К простым тэгам относятся теги, выполняющие операции над форматом и цветом.

 

Формат тега

Описание

[b] text [/b]

Текст отражается ярко-желтым цветом

[blue] text [/blue]

То же голубым цветом

[red] text [/red]

То же красным цветом

[green] text [/green]

То же зеленым цветом

[justify] text [/justify]

Текст выравнивается по краям

[center] text [/center]

Текст центрируется

[left] text [/left]

Текст выравнивается по левому краю

[right] text [/right]

Текст выравнивается по правому краю

[title] text [/title]

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

 

С использованием простых тегов, не должно возникнуть ни каких проблем. Переходим к рассмотрению более сложных специальных тэгов.

 

Специальные теги

 

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

 

Формат тега

Описание

[author]автор[author]

в сообщении в поле "от кого" будет указана строка "автор". Этот тэг должен быть самым первым  в теле сообщения

[text cols='число колонок' colwidth='ширина колонки' colspacing='расстояние  между колонками']текст[/text]

если этот тэг присутствует, он должен идти сразу за тэгом [author] (если тэг [author] также присутствует) или в самом начале тела сообщения. Закрывающий тэг [/text] безусловно обрывает текст сообщения. Параметры cols, colwidth и colspacing могут присутствовать или отсутствовать независимо друг от друга. В чем задается ширина колонки и расстояние между колонками - неясно. В режиме экрана 640x480 эти числа, похоже, совпадают с пикселями экрана. Для других режимов пропорции нужно высчитывать.

 

[select] text [/select]

 

[select value='Start']  text [/select]

Текст заключенный в тэге [select] выведенный командой send incoming message отображается в виде выбираемого пункта, но похоже что в ScE не предусмотрена возможность возврата значения этим тэгом, и его использует сам движок игры. Но все равно ему можно найти применение, так как, если отображать текст из этого тэга в бортовом журнале, то текст будет выделен (отображен на сером фоне). Но тег будет действовать только до перевода строки.

 

 

Для наглядного разбора возьмите сообщение о миссии из станционных BBS, например, о спасении дочери королевы Артеи находится он на странице 1292, page ID=1, языкового файла 70001.XML. Пошлите его при помощи  его при помощи вот этого скрипта и разберитесь что и как в этом сообщении организовано.

 

 

Script a

Version: 0
for Script Engine Version: 25

Description

Описание

Arguments

Source Text


001   $str = sprintf: pageid=1 textid=100nullnullnullnullnull
002   send incoming message $str to player: display it=[TRUE]
003   return null

Не обращайте внимания на то, что вместо некоторых данных отражается null, это связано с тем что мы искусственно вызвали этот текст и движок игры не обрабатывает его.

 

Вот текст содержащийся на указанной странице:

 

[title]СРОЧНО! ПОМОГИТЕ СПАСТИ МЕНЕЛАЮ![/title][text cols='2' colwidth='250' colspacing='50'][justify] Внимание! Срочное сообщение! Нам, боронам, нужна помощь. [b]Менелая[/b], дочь Королевы Атреи, заразилась вирусом Борусдектус. Если ей не будет оказана помощь в течение [green]%s[/green], она умрет. К сожалению, необходимые медикаменты очень трудно достать легальным путём. Можно конечно их и синтезировать, но нам нужно для этого как минимум %s! Если хотите помочь нам найти эти компоненты, вы должны привезти их в течение [green]%s[/green] на [b]королевскую торговую станцию[/b] в секторе [blue]Kingdom End[/blue].[/justify]\n\n[center][select value='Start']Да, я согласен![/select]\n\n[select value='MoreInfo']Дополнительная информация[/select][/center][/text]

 

Думаю у вас не должно возникнуть проблем, с пониманием использования тэгов в этом сообщении.

 

 

Спецтег ссылка

Существует еще один специальный тег позволяющий избежать многократных повторений некоторых одинаковых фрагментов фраз, сообщений и т.п.  Данный тег позволяет использовать в текущем фрагменте фрагмент находящийся в основном языковом файле на другой странице, то есть произвести вставку внутрь текста. Ссылка на требуемую страницу размещается внутри фигурных скобок, в которые через запятую записываются два числовых значения, первое – это страница, второе – это идентификатор. ScE встретив в тексте этот тег, заместит его текстом из соответствующего идентификатора. Например:

 

 <    t id="1321">Вооружение</t>

  <    t id="1322">Корпус корабля</t>

  <    t id="1323">повреждён</t>

  <    t id="1324">{13,1322} {13,1323}</t>

 

В данном примере взятом из стандартного языкового файла 70001.xml со страницы 13 (Фразы бортового компьютера), видно что идентификатор 1324 содержит не текст, а ссылки на два предыдущих идентификатора с этой же страницы и соответственно обратившись к этому идентификатору мы получим фразу «Корпус корабля поврежден», составленную из текста находящегося в ID 1322 «Корпус корабля» и ID 1323 «поврежден».

 

 


Оглавление Сообщение об ошибках Ваше мнение о проекте E-Mail автору
Сайт создан в системе uCoz