Урок 13. Языковые файлы и новая команда Все вы наверно не раз слышали ...
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

На сайте онлайн (человек): 91



 



Урок 13. Языковые файлы и новая команда Все вы наверно не раз слышали ...

Terran Conflict (X3TC) / Форум / Скрипты и моды для X3 Terran Conflict / Учимся простейшим скриптам

Учимся простейшим скриптам
(http://x3tc.net/x3_forum/?tid=672)
Автор: Malstrime
(30.04.2010 16:39:12)

Урок 13. Языковые файлы и новая команда


Все вы наверно не раз слышали о языковых файлах и новых командах в различных меню...
Здесь я попытаюсь все объяснить. Что и как устроено. Ах да, для правки рекомендую использовать XML Notepad. Итак, начнем!

Для начала рассмотрим языковой файл.
Все языковые файлы носят определенный формат имени. Например имя 1234-L007 говорит нам о том, что номер языкового файла 1234, а регион 7-ой (Россия). Т.е. Языковой файл имеет формат ХХХХ-L0YY, где XXXX - ID текстового файла, а YY - язык (07 - Российский, 44 - Английский). Игра в зависимости от локализации сама выберет нужный файл. Рассмотрим структуру языкового файла, открыв его в блокноте:
 Код:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <language id="7">
  3.   <page id="1" name="name">
  4.     <t id="1">text</t>
  5.   </page>
  6. </language>
 

В первой стороке указывается версия xml и кодировка введенного текста.
Во 2 и последней теги "языка". Во второй указывается язык., соответствующий названию файла.
3&5 строки - теги страницы. В 3 третьей строки указывается id страницы (pageid).
В 4 строке тег текста, где указывается номер текста (textid или просто id). Кол-во страниц и тестов неограниченно (или в крайнем случае достаточно велико). Как видите в XML Notepad'e намного удобнее работать:

Абсолютно весь текст, включая цифры и символы, хранится в языковых файлах игры.
Языковые файлы могут модифицировать друг друга. Если в языковых файлах используются одинаковые страницы, то будет отображаться та страница, которая загрузится позже, однако, если вы не заменяете тексты игры, то можете спокойно создавать страницы, будучи уверенным(ой), что ни с кем в конфликт языковой файл не вступит. Посмотреть список используемых игрой страниц Вы можете, открыв 0001-L007.xml (он запакован в cat/dat).

Для сегодняшнего урока нам понадобятся страницы 2010, 2011 и 2022. ID текстов (они должны совпадать на всех трех страницах) Вы можете выбрать из таблицы:

РазделID страницыРасположениеКоманда (в зависимости от id страницы)
Navigation200-261Командное меню, НавигацияCOMMAND_TYPE_NAV_00 to 61
Combat300-361Командное меню, БоевыеCOMMAND_TYPE_FIGHT_00 to 61
Trade400-461Командное меню, ТорговыеCOMMAND_TYPE_TRADE_00 to 61
Special500-561Командное меню, СпециальныеCOMMAND_TYPE_SPECIAL_00 to 61
Piracy600-661Командное меню, ПиратскиеCOMMAND_TYPE_PIRACY_00 to 61
Custom700-761Командное меню, ВыборочныеCOMMAND_TYPE_CUSTOM_00 to 61
General800-861Командное меню, ОбщиеCOMMAND_TYPE_GENERAL_00 to 61
Turret900-961Меню турелей (из основного меню)COMMAND_TYPE_TURRET_00 to 61
Station1100-1161Командная консоль станцийCOMMAND_TYPE_STATION_00 to 61
Ship1200-1261Дополнительные корабельные командыCOMMAND_TYPE_SHIP_00 to 61


Я выбрал COMMAND_TYPE_NAV_55. Значит и нужная мне страница будет 255

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


Текст можно раскрашивать... Для этого перед текстом укажите соответствующие символы. Вот таблица:
СпецсимволЦвет
\033BСиний
\033CГолубой
\033GЗеленый
\033MМалиновый
\033RКрасный
\033WБелый
\033XЯрко-белый (стандарт для меню)
\033YЖелтый
\033ZСерый
\nПеревод строки (форматирующий, не для цвета!)


Итак, редактируем свой языковой файл. Пусть команда будет называться "Первая команда". В блокноте:

 Код:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <language id="7">
  3.   <page id="2010" name="name">
  4.     <t id="255">Первая команда</t>
  5.   </page>
  6.   <page id="2011" name="name">
  7.     <t id="255">Перв. ком.</t>
  8.   </page>
  9.   <page id="2022" name="name">
  10.     <t id="255">Это описание моей первой команды.</t>
  11.   </page>
  12. </language>
 


Попробуем добавить команду всем истребителям за исключением М5, у которых установлен БПМ-1.

Итак, запускаем игру. Заходим в редактор скриптов и создаем скрипт. Желательно с префиксом setup.

Для начала игра должна знать какой файл ей читать. В общих командах находим команду load text: id=<Перем/Число> в ней указываем номер языкового файла. У меня 1234 :)
Во второй строке для нашего удобства присваиваем переменной $comand значение COMMAND_TYPE_NAV_55
В третьей мы должны зарегистрировать команду. Общие команды -> Команды/Сигналы -> global script map: set: key=<Перем/Сигнал>, class= <Перем/Класс>, race=<Перем/Раса>, script=<Имя скрипта>, prio=<Перем/Число> Здесь key - переменная $comand, class - Истребител, race - Игрок, скрипт - произвольный (или какой-либо Ваш), prio - Приоритет? Я всегда ставлю 1
Так как мы должны исключить класс М5, в четвертой строке в тех же командах строчкой ниже находим команду global script map: ignore: key=<Перем/Сигнал>, class= <Перем/Класс>, race=<Перем/Раса> все аналогично третьей строке, только в классе надо указать М5
Теперь команда зарегистрирована, но еще не создана.
В строке ниже находим команду set script command upgrade: command=<Перем/Сигнал> upgrade=<Перем/Товар> на месте первого значения опять же переменная $comand, а на втором выбираем БПМ-1 (если поставить [TRUE], то команда будет появляться всегда).
Вот то, что у меня в скрипте:

Теперь сохраняем и запускаем его.
Теперь сидя на М4 или М3 и имея БПМ-1, заходим в консоль навигации...
И, преисполняясь радостью, со щенячьим визгом идем рассказывать семье о том, что Вы сделали! 

Удачи!
Урок закончен.

дерево темы → Учимся простейшим скриптам Учимся простейшим скриптам »
Список игр