Палуба  Кубрик Кают-компания Казна Гаупт-Вахта Камбуз Крюйт-камера Трюм   Якоря

  Использование внутренних команд
Сразу после появления информации о встроенных редакторах в «Корсарах» и появлении первых примитивных, но очень полезных утилит стало ясно, что все команды в игре представляют собой достаточно сложный внутренний язык, состоящий из различных операторов, которые к тому же разбросаны по разным файлам. Цель этой статьи – помочь любому желающему понять систему этих команд. Зачем? Ну, авось, пригодится…

С чего начинается игра? Правильно, с заставки, точнее с вступительного мультика. Редактировать его – дело весьма неблагодарное, к тому же требуются специальные редакторы, рассмотрение которых выходит за рамки этой статьи. Но вот на что стоит обратить внимание, так это на файлы, которые загружаются при начале новой игры. Это специальные командные файлы (action-файлы) add.medallion.a и Add_officer_money.a, которые вызываются из Корсары\RESOURCE\WORLDS\story_lines.idf. С помощью первого настаиваются изначальные установки игры, например, появляется медальон Малькольма Шарпа, подзорная труба и так далее. А второй определяет размер офицерской зарплаты на протяжении всей игры. Но об action файлах чуть позже…

В начале было слово… Да, и это в полной мере относится и к «Корсарам». Все действия по выполнению квестов вызываются с помощью слов, точнее вариантов ответов, которые выбираются из файлов диалогов. С этими файлами есть небольшая путаница. Дело в том, что файлы диалогов дублируются в двух разных папках - Корсары\RESOURCE\INI\DIALOGS и Корсары\RESOURCE\DIALOGS. Разница между папками только в том, что файлы из …INI\DIALOGS при запуске новой игры механически дублируются в папку …\DIALOGS, но здесь есть один нюанс – и по ходу игры и при использовании встроенного Character Editor диалоги берутся именно из последней папки. Почему именно так? Это уже вопрос не ко мне…

Что собой представляют файлы диалогов? Это обычные текстовые файлы, дополненные специальными тегами. Пожалуй, это самые простые по структуре файлы, поэтому начинать учиться редактированию лучше всего именно с них. Файл диалога, относящийся к определенному NPC всегда состоит из имени персонажа, имени диалога и имеет расширение d, то есть, например, файл albrecht zalpfer_complete.d вызывается при диалоге с Альбертом Цальпфером. Все файлы диалогов (файлы с расширением *.d) начинаются с реплики NPC. Все фразы NPC всегда начинаются с тега <N node_имя ветки диалога>, за которыми идет непосредственно текст реплики персонажа, заключенный в тег <T>. В качестве имени в оригинальной версии игры используются цифры, но вполне допустимы и более удобны для отладки любые сочетания латинских символов. Все ответные реплики всегда начинаются с тега <L link_имя ветки диалога,1,1,node_ответ NPC>. То есть, в зависимости от выбранного варианта ответа происходит переход на тот или иной вариант ответа NPC. Естественно, что различные варианты ответа могут ссылаться на одну и туже реплику node. Еще одна интересная особенность вариантов ответа - это возможность управлять их появлением. Не вдаваясь в подробности, стоит лишь заметить. Что в случае, если в ссылке после имени ветки диалога вторая цифра равна 1 ( то есть варианты 1,1 и 0,1), то этот вариант будет выведен на экран, если же эта цифра 0, то вывода не произойдет. Разумеется, что вариантов ответа может быть несколько. В конце тега <L> указывается ответная реплика NPC, которая будет выводится при выборе данного варианта диалога. Если вместо связки node_ответ NPC указать команду exit, то происходит завершение диалога. Между тегами <L> и <T> возможен вызов action файла с помощью команды <A имя файла>. Это основной тип файлов, с помощью которых происходят самые различные изменения в игре.

Action файлы – это основной способ управления характеристиками и ходом игры. С их помощью выполняются все основные операции по определению диалогов, внешнего вида и местоположения персонажей, вызов квестов, добавление и удаление предметов и так далее вплоть до смены корабля игрока. Соответственно велико и количество команд, применяемых в них. Большинство action файлов вызываются непосредственно из диалогов. Хотя некоторые из них запускаются из других файлов, например при выполнении квестов (файлы *.ql) или *.idf файлов (например, файлы запуска заставки смены флага вызываются из Корсары\RESOURCE\WORLDS\brd_moves.idf). Все команды можно разделить на несколько основных групп:

Команды изменения числовых характеристик игры.

Add expirience "количество" – добавить экспу.

Delete expirience "количество" – уменьшить экспу.

Add reputation "количество" – увеличить репутацию.

Delete reputation "количество" – снизить репутацию.

Add item "название предмета" "количество" – добавить предмет в заданном количестве. Сами названия предметов берутся из файла Корсары\RESOURCE\WORLDS\Items.idf. В этом файле в поле name указано имя предмета для а-файла, поле filename содержит ссылку на изображение предмета, которое должно находится в папке Корсары\RESOURCE\IMAGES\GOODS\ITEMS в виде файла tga формата 242х181 пикселей, 64К цветов. Поле description содержит ссылку на имена файлов описания предмета, которые находятся в Корсары\RESOURCE\TEXTS\RUSSIAN\GOODS\ITEMS. В качестве описания предмета используется текст из обычного txt файла, а файлы с расширением nme содержат само название предмета. С помощью этой команды также выполняется пополнение бюджета игрока.

Delete item "название предмета" "количество" – прямо противоположная команда, удаляет предмет из сундука или уменьшает количество денег.

Add goods "товар" "количество" – команда добавляет товары или в трюм или изменяет вооружение корабля. Формат этой команды аналогичен формату команды Add item, но используется файл Корсары\RESOURCE\WORLDS\Goods.idf, изображения берутся из Корсары\RESOURCE\IMAGES\GOODS\GOODS\, причем файла tga должно быть два: например для досок это будут файл Planks138.tga 138х138 пикселей 64К цветов и Planks64.tga 64х64 пикселей 64К цветов. Файлы описаний должны находится в Корсары\RESOURCE\TEXTS\RUSSIAN\GOODS\GOODS, их формат аналогичен формату item файлов. К слову, в Goods.idf определяются также и другие параметры товаров – их базовая цена, вес, а для пушек и пушечных зарядов еще и дальность стрельбы, время перезарядки и наносимый урон. Вот только для изменения этих параметров необходимо внести изменения и в файл Корсары\RESOURCE\WORLDS\Cannons.idf.

Delete goods "товар" "количество" – команда удаления товаров из трюма. Другая группа команд – это команды для работы с персонажами игры.

Add person "персонаж" – позволяет присоединить персонаж, причем если у NPC есть корабль, то соответственно он присоединяется к эскадре игрока. Имя персонажа берется из папки Корсары\RESOURCE\CHARACTERS.

Add officer "офицер" – аналогичная команда для NPC, которые имеют офицерские способности. Дополнительно на все время присоединения офицера из денег игрока ежемесячно будет вычитаться офицерская зарплата, указанная в файле Add_officer_money.a.

Delete person "персонаж" – удаляет персонаж, при этом его место положение становится неопределенным. Как его установить будет сказано ниже.

Delete officer "персонаж" – аналогичная команда для офицерского состава.

Set_for person "персонаж" ship "корабль" - команда. Позволяющая изменить корабль персонажа по ходу игры (причем не только NPC, но и Real Player). Имя персонажа также должно быть в виде файла mtx, а название корабля и его характеристики должны быть записаны в файле Корсары\RESOURCE\SHIPS\название_корабля.shp. Причем в качестве корабля может выступать любой из фортов, существующих в игре. Вот только рукопашная схватка с губернатором невозможна, так как для нее в игре используется совершенно другой файл анимации и файл модели персонажа ( надеюсь, что более подробное описание этих файлов, как и файлов текстур в скором времени также будет составлено).

Set_for person "персонаж" location "Остров.Место" Команда установки местоположения персонажа. В качестве местоположения можно указывать следующие значения:

Tavern – таверна.
Store – магазин.
Shipyard – верфь.
Townhall – дворец.
OutDoor/Street – улица.
Ship/Onboard – на борту корабля игрока.
Ship – на борту собственного корабля персонажа (у персонажа должен быть корабль).
Fort – форт.

Любой, даже необитаемый остров имеет возможность установки значения ship, но установить местоположение персонажа в таверне, на улице, в форте, верфи, магазине или дворце можно только при наличии соответствующей модели на выбранном острове. Название острова берется из поля name файла Корсары\RESOURCE\WORLDS\islands_x.idf. Если вместо сочетания "Остров.Место" указать «void», то персонаж становится недоступен, хотя если вызвать эту команду непосредственно из диалога с персонажем, он будет оставаться в месте диалога до тех пор. Пока не произойдет смена игрового пространства. Например, поговорив с NPC в таверне и указав для него после диалога location “void”, можно снова говорить с ним повторно до тех пор, пока Real Player не покинет таверну.

Set_for person "Персонаж" dialog "диалог" – команда смены диалога персонажа.

Set state "Х" Dlink "Диалог:NODE_фраза:LINK_вариант" – Команда так же связанная с диалогами, она позволяет разрешить (тогда Х=1) или запретить (Х=0) вариант ответа на фразу NPC.

Set_for person "Персонаж" item "название предмета" "количество" – команда, аналогичная Add item "название предмета" "количество", но предназначенная для передачи предметов NPC.

Set_for person "Персонаж" Playside «Нация» - установка стороны игры для персонажа. Эта команда используется при переходе персонажа от одной нации к другой. Все варианты наций перечислены в поле name файла Корсары\RESOURCE\WORLDS\nations.idf.

Set_for person "Персонаж" Model «Модель» - команда, позволяющая изменить внешний вид и анимацию персонажа игры. Файлы моделей перечислены в Корсары\RESOURCE\WORLDS\anim_types.idf.

Команды запуска квестов позволяют начать выполнение квестовых заданий, записанных в файлы *.ql, расположенные в папке D:\Корсары\RESOURCE\QUESTS.

Launch story_line "Имя файла" – запуск квестовой линии. При этом внутренний указатель ссылки квестов (а в одном файле находится как правило несколько квестовых заданий) устанавливается на первую запись в файле, которая должна быть типа «void» (о квестах – чуть ниже).

Set_for story_line " Имя файла " quest "Имя квеста" – команда выбора определенного квеста из сюжетной линии.

Close story_line " Имя файла" – команда, прекращающая проверку выполнения квестов указанной сюжетной линии и закрывающая соответствующий файл.

Дополнительно в action файлах применяются еще несколько разных команд.

Open location "Остров.Street" – команда для открытия на карте соответствующего острова. Название острова берется из поля name файла Корсары\RESOURCE\WORLDS\islands_x.idf.

Set_for location «Остров.street» Playside «Нация» - команда, позволяющая сменить национальную принадлежность указанного острова.

Launch Interface “Town” String «Помещение» - Эта команда используется для включения интерфейса верфи или магазина.

Add record "Запись" – команда добавления записи в журнал. Текст записи находится в файле Запись.rcd в папке Корсары\RESOURCE\TEXTS\RECORDS.

MESSAGE BOX String "строка" - Команда выводы строки сообщения.

Play engine_movie "Имя файла" – команда проигрывания файла анимации с расширением ani и находящемся в папке Корсары\RESOURCE\DESC.

Close game " Имя файла" - последняя команда игры. Игра заканчивается с проигрыванием указанного ani файла.

Файлы квестов отличаются от action файлов главным образом тем, что их выполнение происходит не непосредственно после вызова, а в течении длительного времени. Кроме того, квесты, входящие в разные сюжетные линии могут выполняться параллельно. Формат записи отдельных квестов в файл сюжетной линии *.ql, расположенный в папке D:\Корсары\RESOURCE\QUESTS должен быть построен так, чтобы между отдельными квестами был пустой квест «void», с него же должен начинаться файл сюжетной линии и им же заканчиваться. То есть общая структура файла сюжетной линии должна быть следующей:

void
Квест_1
void_1
Квест_2
void_2
.
.
.
void_N
Квест_N
void

Сама структура отдельных квестов следующая:

Команда
Begin
End

В качестве команды возможно использование следующих указаний:

No Commands – для квестов типа “void” указывает отсутствие команды.

No Condition – Отсутствие задания квест выполняется в любом случае.

Obtain Goods «товар» количество - Проверить наличие указанного товара в требуемом количестве.

Obtain Expirience количество – Проверить количество экспы.

Obtain Item «предмет» количество – проверить наличие предмета в заданном количестве.

Obtain Rank ранг - проверить ранг.

Obtain Reputation репутация - проверить репутацию.

Kill Person «персонаж» - квест будет считаться выполненным только в случае уничтожения указанного персонажа.

Escort Person «персонаж» Location «Остров» Onboard - доставить персонаж на указанный остров. Если у персонажа нет корабля, он присоединяется в качестве пассажира, если же корабль есть, то персонаж будет присоединен к флотилии игрока.

Секция Begin практически никак не используется. Из нее можно запускать action файл вне зависимости от результатов выполнения задания или проверки.

В секции End указывается action файл, который будет выполнен в случае выполнения квеста.