О вечном: Брифинг Only for ARMA2 (Специально для новичков, во всех интимных подробностях)
О статье
Представляю Вашему вниманию мой мануал по созданию заданий, дневников, записей и пр. текстовой ерунды в ARMA2 CO (поскольку, работать я буду именно через нее), но, я думаю, это также подходит и для AA2, и для OA, поскольку база одна – ARMA2. Рекомендую ставить лицензию и последний патч для всех версий игры. Первое можно приобрести за смехотворные деньги – 350 руб, потолок – 400 наших деревянных, второе же на оф. cайте ARMA2. Спросите зачем? Отвечу: чтоб кучу нервов сберечь – лично у меня обилие ошибок в «пиратке» вообще отбило желание что-либо делать в редакторе.
Мануал написан специально жутко подробно, что бы вызвать как можно меньше вопросов. Я хочу донести до Вас суть создания сего чуда, запустить Ваши мозги. Поверьте, поняв, как это делается, Вы потом можете хоть 10 способов придумать, и все будет работать. А я поделюсь с Вами своими скромными знаниями. Но это лирика… теперь к нашим баранам.
Вступление
Брифинг – под этим словом подразумевается «меню», отображающееся перед миссией, в котором выведена информация о задачах, дневники, сводки о погоде с yandex, справки (больничные и не только) и т.д. – вот именно это мы и будем делать. Но всетаки о баранах.
Нам понадобятся: голова, руки, монитор, мышь (компьютерная, разумеется), клавиатура, хорошо бы еще системный блок, так же элементарный winows-овский блокнот, можно notepad – нам нужен текстовой редактор с поддержкой UTF-8, все остальные функции по желанию, для удобства.
О баранах:
Брифинг (см. определение выше), сразу предупреждаю, можно создавать разными способами, и мой не является одним единственным, на котором весь свет сошелся.
Способы создания: буржуазные, русские.
Соответственно выбираем «русский» способ (миссии мы ведь не на интернационале делать будем). В свою очередь, «русских» способов существует несколько, я вывел один, удобный для меня. Соответственно его мы и рассмотрим в этой статье (в первый раз, крайне рекомендую все делать самому, ручками - лучше запомнится). Понеслась…
Глава 1
Запускаем игру, заходим в редактор, выбираем многострадальный остров «Утес», запускаем карту. Далее: жмем F1, тыкаем в любом месте карты 2 раза – создаем юнита, пускай будет американо-наркомана. Теперь ставим недалеко от себя еще одного амера и пишем в «название»: ded. Теперь опять же недалече от себя ставим триггер. В нем ставим Ось Х,Y: 10, «активация»: Кто угодно. «Тип»: Конец #1. Теперь на месте юнита с именем «ded» ставим любой маркер и в названии пишем «mar1», и ставим еще один любой маркер с именем «mar2» посередине триггера.
Далее: жмем «Сохранить», пишем имя файла «aaaa» (на инглише (куда уж без него), если не хотите потом кракозябру с процентами увидеть) и сохраняем. Все.
Не, не в смысле мы создали Брифинг, мы поставили нужные для выполнения задания юнит и маркеры и создали в Ваших (и Наших) документах, в папке пользователя, папку aaaa.utes, а в ней один файл mission.sqm
Пример: C:\Users\Max\Documents\ArmA 2 Other Profiles\Muv\Missions\aaaa.utes
Считайте эту папку платформой для создания своей миссии. Сюда Вы уже можете добавлять др. файлы, необходимые для создания разных элементов игры. В принципе, на сегодня можно закончить, если Вы утомились. В следующей главе мы будем работать со скриптами и пр. заумной фигней.
Если Вы не знаете, что такое программирование, скрипты, синтаксис, *.sqs, классы – дальше можете не читать. Если Вы не знаете ничего (или часть вышеперечисленного), но готовы шевелить мозгами, узнавать что-то новое, создавать – тогда следующая глава для Вас!
Глава 2
Если Вы читаете эту главу, то Вы, как минимум, любознательный, любопытный или Вам просто нечего делать. В любом случае рекомендую к прочтению информацию ниже.
Итоги предыдущих работ: 1. Мы создали папку со своей миссией (aaaa.utes).
Да, не густо, но это только начало! Все интересное впереди. Пришло время наполнить нашу миссию жизнью (русским языком, короче).
Stringtable.xml – файл, содержащий весь текст миссии (можно даже кампании, игры), некий сборник ссылок для ярлычков, выражаясь образно. Лично я считаю, что это удобно (все в одном месте).
Создаем этот файл первым в нашей папке aaaa.utes. Для начала просто кликаем правой кнопкой мыши в папке, выбираем «Создать», Текстовой документ, и сохраняем имя, как есть – это не столь важно. Открываем созданный файл и видим… Да, ни черта мы там не видим, пусто. Ничего, сейчас наполним. Stringtable написан на языке программирования «xml», соответственно файл имеет расширение *.xml. Чтобы все работало, настоятельно рекомендую соблюдать синтаксис языка. Т.е. если надо написать вот такую *;?№)% кракозябру, то лучше напишите.
Файл «Stringtable.xml» имеет следующую структуру: (Начало документа)
(Расшифровываем строчки по порядку) Имя проекта (то, что находиться в кавычках, можно изменять на свое значение), можно написать шо хошь, но крайне рекомендую на английском, чтоб потом не разбираться «где же я ошибся». Далее идет что-то типа «подраздела», также можно написать шо хошь, но рекомендую на английском, чтоб потом не разбираться «где же я ошибся». А еще рекомендую оставить эти строчки нафиг в покое и не трогать их. Роли существенной они не несут. Едем дальше.
(Расшифровываем строчки по порядку) Имя «контейнера» - еще один подраздел, можете использовать для себя, как содержание. Но по мне, так лучше писать все в одном разделе. <Key ID="STRD_Task1">, а вот это как раз и есть имя строки с текстом, на которое ссылается «ярлычок» (до них мы дойдем). <Original>Первая задача</Original>, <German>Первая задача</German>. По умолчанию Брифинг можно создавать на разных языках, в том числе и на немецком, как видно из отрывка кода. Но у нас все на одном языке, Рашин, поэтому оставляем <Original>Первая задача</Original>, и вместо «Первая задача» пишем текст, который будет выводиться по команде STRD_Task1. </Key> - это окончание отрывка кода. Писать обязательно. У БИС-ов это видимо все проще, поскольку, как я думаю, они это пишут прогой. Но а мы по старинке.
Обратите внимание, я пишу "STRD_Task1" и "STRD_Task1_1", чтобы было понятно, что к чему относится. Еще Вы должны заметить вставленный мною маркер. Я думаю, Вы знаете, что это такое. Маркер имеет следующий вид <marker name="mar1">пердуна</marker>, где "mar1" – это имя маркера, на который будет ссылаться игра. «пердуна» - слово, которое будет ссылкой на данный объект.
По тому же принципу, что и Задачи, мы пишем и описания для дневников, разведок и пр. муры. Вообще, тут все жутко просто, но когда этого кода не одна страница, как-то становится страшновато и не понятно. Миссию я придумал вообще простую. Задача: убить дядьку и все.
По описанному мною принципу, немного подкорректировав, дописал свой стрингтейбл:
<Key ID="STRD_Plan_Title"> <Original>План</Original> </Key> <Key ID="STRD_Plan"> <Original>Знач валишь деда и мотаешь от туда</Original> </Key> <Key ID="STRD_Plan_Title1"> <Original>Дневник</Original> </Key> <Key ID="STRD_Plan1"> <Original>Ну жизнь, как жизнь</Original> </Key> <Key ID="STR_end1"> <Original>Победа, блин! =)</Original> </Key> </Container> </Package> </Project>
Вот и весь текст нашей миссии, который будет отображаться в Брифинге и в конце миссии (дебрифинге ("STR_end1")).
Теперь его надо правильно сохранить. Жмем в нашем блокноте: Файл, Сохранить как. Имя файла: Stringtable.xml. Далее выбираем формат «Все файлы» (All Files), кодировка UTF-8 и жмем «Сохранить». В папке появится файл Stringtable.xml, текстовой аналог пока не удаляйте. С этим все. Хорошо потрудились, а теперь можно и чайку хлебнуть.
Глава 3
Лично я считаю самым сложным подключения брифинга к игре, т.к. там необходимо знать скрипты и, хошь не хошь, а мозгами шевелить придется. Но если Вы взялись делать Брифинг для своего задания, то Вам море по колено!
Итоги предыдущих работ: 1.Мы создали папку со своей миссией (aaaa.utes). 2.Создали файл, содержащий весь текст миссии (Stringtable.xml).
Это уже хорошо. Теперь пришло время подключить наш текст в саму игру. Приступим. Помните «текстовой документ», созданный в самом верху этой статьи? Открывайте его. Выделяйте весь текст и удаляйте к чертовой бабушке – танки идут.
Теперь самостоятельная работа, смотрим код и описание к нему, и стараемся проняться пониманием сего чуда:
_log_briefing = player createDiaryRecord ["Diary", [localize "STRD_Plan_title", localize "STRD_Plan"]]; наш план _log_briefing = player createDiaryRecord ["Diary", [localize "STRD_Plan_title1", localize "STRD_Plan1"]]; наш дневник task1 = player createSimpleTask [localize "STRD_Task1"]; появляется 1 задача task1 setSimpleTaskDescription[localize "STRD_Task1_1", localize "STRD_Task1", localize "STRD_Task1"]; ее описание task1 setSimpleTaskDestination markerpos "mar1"; указание на маркер «mar1» player setCurrentTask task1; выбор 1 задачи, как активной @ ! alive ded; Условие на смерть деда. ~5 пауза Task1 setTaskState "SUCCEEDED"; выполнение задачи1 ("FAILED" - провалено) endMission "END1"; завершение миссии
Это и все, что надо для появления всяких записок, и непосредственно Задач в Брифинге. Со 2 Задачей все аналогично, как с 1, только понятно, что вместо значения «1» будет «2».
Ах да, скриптовые команды… «@ ! alive ded; Условие на смерть деда.» Поставленные задачи Вы можете реализовать разными способами. В данном случае я прописал условие выполнения 1 Задачи непосредственно тут же, хотя это можно было сделать и через триггер. Для ознакомления с различными командами, для начала, рекомендую почитать «ruscomref» - хватит выше крыши. Именно в нем я и нашел используемые мной команды (активно их использовал в своей миссии «Один день»). Расшифрую код: «@» - задает условие. «!» -является отрицанием, «не», если по-русски. «alive» - игра проверяет, является ли указанный юнит, техника или здание уничтоженным / разрушенным. «ded» -имя цели (в данном случае).
Как видите, все состоит из маленьких кодов, но если их объединить, то получается аж целое условие.
Итак, поколдовав над «Текстовым документом», я написал следующее:
_log_briefing = player createDiaryRecord ["Diary", [localize "STRD_Plan_title", localize "STRD_Plan"]]; _log_briefing = player createDiaryRecord ["Diary", [localize "STRD_Plan_title1", localize "STRD_Plan1"]];
task2 = player createSimpleTask [localize "STRD_Task2"]; task2 setSimpleTaskDescription[localize "STRD_Task2_1", localize "STRD_Task2", localize "STRD_Task2"]; task2 setSimpleTaskDestination markerpos "mar2"; player setCurrentTask task2;
Как видите, все довольно красиво, по порядку – очень удобно. Теперь обращу внимание: При выполнении 1 Задачи я написал условие, при котором Задача будет считаться выполненной (простите за жуткую тавтологию), а при выполнении 2 Задачи никакого условия нет, код оканчивается активацией 2 Задачи (еще раз мои извинения).
Цель здесь проста: я хочу показать Вам, как можно задать условие разными способами. В данном случае это через скриптовые команды (1 Задача) и с помощью триггера (2 Задача).
По этому файлу вроде все. Теперь сохраняем. Опять идем: Файл, Сохранить как. Имя: init.sqs. Тип файла: «все документы» (All Files), кодировка UTF-8 и жмем «Сохранить». В папке появится файл init.sqs.
Почему именно «init», спросите Вы? То, что мы записали в «init.sqs», может быть записано в файл с любым названием – хоть «lox». Но файл с именем «init» игра сканирует сама, при запуске миссии. В этом случае мы избавляемся от прописывания запуска этого файла в инит объекта в самом редакторе. Могу поздравить с проделанной работой!
Глава 4
В этой небольшой главе мы с Вами подобьем итоги, а так же подключим к игре файл-дебрифинг: Briefing.html.
Итоги предыдущих работ: 1.Мы создали папку со своей миссией (aaaa.utes). 2.Создали файл, содержащий весь текст миссии (Stringtable.xml). 3.Создали файл, «подключающий» текст к игре (init.sqs).
Ну что ж, почти финиш, осталось только сделать дебрифинг. Что же это? Помните, при окончании миссии выскакивает окно с результатами, текстом и игровыми очками? Вот это и есть дебрифинг. Чтобы увидеть такое окошко в своей миссии, нужно, соответственно, написать текст и подключить его к игре. Однако, дебрифинг подключается не так, как текст в файле «init.sqs».
Все, что нам нужно, у нас почти есть. Помните в стрингтейбле
Нас интересует «<h2><a name="Debriefing:End1"><localized id="STR_end1"/></a></h2>». Именно это (<localized id="STR_end1"/>) и есть ссылка на нашу строчку с текстом, в остальном коде нет никакого смысла разбираться вообще – он нам не нужен.
Теперь сохраняем: Файл, Сохранить как. Имя briefing.html. Тип файла: «все документы» (All Files), кодировка UTF-8 и жмем «Сохранить». В папке появится файл briefing.html. Как видите, Брифинг можно создать посредством всего 3-х файлов: stringtable.xml, init.sqs и briefing.html.
Вот теперь могу однозначно сказать «ВСЕ». Вы создали свой Брифинг. Можете запускать игру и наслаждаться результатом.
P.S.
Теперь, как и полагается ссылка на миссию, сделанную мной и, не большой бонус. В архиве Вы найдете чистые шаблоны для создания Брифинга. Файлы рабочие и связанны друг с другом, поэтому можете просто вставлять в них текст и кидать в папку с миссией. Все файлы в нужных форматах и кодировках. Приятного мододеланья!
По этому файлу вроде все. Теперь сохраняем. Опять идем: Файл, Сохранить как. Имя: init.sqs. Тип файла: «все документы» (All Files), кодировка UTF-8 и жмем «Сохранить». В папке появится файл init.sqs.
Muv, молодец, что без дела не сидишь, а руководства делаешь! Вот это радует, так как чаще всего люди ленятся. Я вот тоже долго раньше с брифингом сидел, потом как выучил тоже через некоторое время пример сделал. Вот глядишь скоро накопится достаточно примеров и проще будет понять.
А то я раньше очень долго искал информацию по брифингу, а почти нигде не было, а где было - не понятно. Ну в итоге как-то разобрался, но не очень быстро
s229, объясни, в чем не грамотность заключается? Исправлюсь, босс
leh2012, спасибо на хорошем слове:) они только подталкивают к работе.
Вот как раньше было - информации не где не было... А сейчас ее море, а подробностей с объяснениями - шиш в масле По себе знаю, читаешь-читаешь, делаешь и что-то да не получается. Вот я и написал, для таких, как сам, в подробностях, даже шаблон сделал, вообще теперь "думать" не надо было
Но эт не все время чуток освободится, я создание диалогов, как в оригинале освою и мануал еще накатаю, подробный А потом, думаю приступать к созданию своей кампании для АРМА2 В общем-то из-за этого я и полез модмейкрить
Я вот тоже так думал, но вот теперь сохраняю в UTF-8 без проблем. Однако подозреваю, что дело в блокноте который я использую(Notepad2). Мне кажется, что он как раз правильно сохраняет UTF-8. Надо будет попробовать сейчас обычным блокнотом сохранить
s229, leh2012, а мне почему-то думается, что дело в патчах. Играть в Арму начал только где-то с год с лишним назад. Поиграв в пиратки расстроился, накопил деньжат, купил лицухи АРМА2, а потом и АРМА2 "Операция стрела". Как-то так попало, что когда я полез в Инет за патчами, то наткнулся на патч 1.51, а потом и 1.60, поставил. В итоге не обнаружил ни одной ошибки, как при игре, так и при работе в редакторе. Про .sqs вообще молчу - любые файлы в своих модах храню в UTF-8 и никаких косяков ни разу не было... Парадокс?...
Сообщение отредактировал Muv - Четверг, 16.02.2012, 23:34