Структура файла stringtable.xml
Code
<Project name="Name">
<Package name="Second name">
<Container name="Breefing">
<Key ID="STR_Task1">
<Original>Первая задача</Original>
<German>Первая задача</German>
<Czech>Первая задача</Czech>
<Deutsch>Первая задача</Deutsch>
<Russian>Первая задача</Russian>
<Polish>Первая задача</Polish>
<Hungarian>Первая задача</Hungarian>
<Italian>Первая задача</Italian>
<Spanish>Первая задача</Spanish>
<French>Первая задача</French>
</Key>
<Key ID="STR_Task2">
<Original>Вторая задача</Original>
</Key>
</Container>
<Container name="Persons">
<Key ID="STR_Pers1">
<Original>Василий Пупкин</Original>
</Key>
</Container>
</Package>
</Project>
Здесь все достаточно просто, Container - видимо для удобства сортировки, а может быть эта хрень создавалась специальной прогой.
<Key ID="***"> - это тег стрингтейбла в контейнере, тот к которому обращаемся в миссии. Тут тоже ничего сложного, приоритет имеет <Original></Original>, поэтому для миссий только для русскоязычной аудитории можно использовать лишь его. Остальные - там видно по языкам.
Теперь вопрос - Package и Project в начале и в конце файла - имеет ли их имя специальное значение или это просто от балды и для удобства и называть можно как хочется? Я склоняюсь ко второму варианту.
Думаю не стоит напоминать что вся эта хрень в кодировке UTF-8
Далее брифинг
Едем дальше.
Вообщем брифинг теперь представляет собой совершенно дикую конструкцию, основанную на скриптовых файлах.
Вот подобная конструкция работает в sqf файле.
nul=[] execVM "briefing.sqf";
через init.sqf или любой стартовый файл, как я понимаю.
Code
task2 = player createSimpleTask [localize "STR_Task2"];
task2 setSimpleTaskDestination markerpos "obj2";
task1 = player createSimpleTask [localize "STR_Task1"];
task1 setSimpleTaskDestination markerpos "obj1";
player setCurrentTask task1;
_diary = player createDiaryRecord ["Diary", ["Записки идиота", "Дневник"]];
_log_briefing = player createDiaryRecord ["Diary", ["Специально для тупых", "Брифинг"]];
Тут - task1 = player createSimpleTask [localize "STR_Task1"]; - это типа создание задания.
Это - task1 setSimpleTaskDestination markerpos "obj1"; - указание на маркер отмечающий объект на карте.
player setCurrentTask task1; - это указание активного задания.
Code
_diary = player createDiaryRecord ["Diary", ["Записки идиота", "Дневник"]];
_log_briefing = player createDiaryRecord ["Diary", ["Специально для тупых", "Брифинг"]];
Здесь такая хрень которая помещается в раздел "Дневник" брифинга и может использоваться как угодно, т.е. можно всякую документацию настрогать туда и все такое. Русский текст заменяется ссылками на стрингтейбл, типа вот так
Code
_diary = player createDiaryRecord ["Diary", [localize "STR_Razdel1", localize "STR_text_razdel1"]];
_log_briefing = player createDiaryRecord ["Diary", [localize "STR_Razdel2", localize "STR_text_razdel2"]];
Далее - описание к задаче
Code
Task1 setSimpleTaskDescription[localize "STR_Desc1", localize "STR_Title1", localize "STR_Way1"];
STR_Desc1 - описание задачи
STR_Title1 - заголовок задачи, он же STR_Task1 в createSimpleTask (подменяется)
STR_Way1 - пометка на вейпоинте
Для того чтоб были выполнены задания(поставлены галочки)
Code
Task1 setTaskState "SUCCEEDED";
Task2 setTaskState "FAILED";
ну тут все понятно, я думаю
Автор: Wass