Последние статьи| Популярные файлы| Последние файлы
Главная » Статьи » Учебники по Dragon age toolset » Текстовые учебники

Cоздание персонажа-торговца и размещение его в лагере с помощью Dragon age toolset
Я думаю нам стоит перейти к более сложным вещам, таким как создание персонажа-торговца. Этот учебник будет из нескольких частей, будет весело)
В этом учебнике мы создадим торговца в лагерь игрока, и дадим ему предметы на продажу. Как и все остальные плагины этот плагин будет расширять однопользовательскую кампанию Dragon age origins.  Также мы покажем несколько способов соединения с одиночной кампанией.

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

Итак, что же мы хотим?-перед нами стоят следующие цели:

1)Создание
модуля, расширяющего Single player.
2)
Создание NPC который будет служить нашим торговцем.
3)Скрипт,
который будет создавать НПС в нашем лагере
4)Cоздание
маленького 2da файла, который больше известен как PRCSCR file, и который позволяет "hook into" в одиночную кампанию.

Если вы сделали урок, Упомянутый выше, то вы уже знаете как создать модуль). Помните, что существуют 2 этапа этого процесса. Во-первых вы должны поставить модуль расширением single player, а потом открыть модуль. Далее вы должны снять галочку с single player в hierarchy.

Также для нормальной работы мода мы должны убрать скрипт "Core script", для этого в настройках модуля кликаем на 3 точки и выбираем none.

Cоздание Npc для dragon age, который в будующем будет нашим торговцем.

Создание торговуа включает в себя несколько частей, и самой первой частью является создание Npc, для дальнейших манипуляций с ним. Для этого нам необходимо создать новый ресурс существа. Перейдите во вкладку creatures на панели, а потом создайте новый ресурс существа. Или вы можете сделать по-другому, вы можете нажать File-new-creature. Далее вводим нужное имя и папку с ресурсом, а потом ставим модуль на Core game resources, а owner module на наш с вами модуль.Вот скриншот с правильно заполненным окном

В параметрах существа есть множество настроек, однако о многих из них нам не стоит волноваться.
Спускаемся до Gender, и выбираем пол персонажа (male-мужчина, female-женщина).
Далее идет Group, и нам необходимо убедиться, что там стоит  _Neutral, если это не так, то исправьте. Это очень важно для нас,так как нам необходимо, чтобы персонаж не помогал нам в драке, а так же чтобы он на нас не напал.

Далее следует пункт Invenory, который является инвентарем персонажа в Dragon age.
Должно быть вы уже заметили, что наш персонаж голый. Нам следует его приодеть) Для этого нажмите на 3 тоячки рядом с Inventory, это откроет большое окно. Первым делом мы должны изменить его размер, сделав его шире. Это облегчит нам работу. Теперь слева выберите _Global, там вы найдете броню и одежду. Выбирайте что вам угодно) Лично я выбрал _Global -> Clothing -> Noble -> Human Female и дал моей торговке крутую робу. Кликните на предмет который вы хотите добавить, и нажмите на кнопку Add. И теперь, если вы растянули окно, то вы увидите справа "slot", который по умолчанию стоит на "Not Equipped”(не надето) Кликнув на это, вы сможете выбрать место для вашего предмета, в моем случае это "сhest" Это позволит надеть предмет на существо. После того, как вы наденете все что надо, кликайте Ок, и персонаж будет носить выбранные вами вещи.

Опустимся ниже, тут вы сможете назначить имя вашему персонажу. Далее идет раздел "внешний вид". Тут вы сможете назначить расу персонажу, я выбрал "human". Следующее, что мы должны сделать нашему персонажу, это Head morph (морфинг головы). Кликаем на 3 точки, и выбираем наиболее понравившийся вариант.
Последнее, что мы должны сделать, это Plot(аналог essental в обливион, делающий персонажа бессмертным). Мы поставим "True”, это значит, что этот персонаж важен  и не может случайно погибнуть или быть убитым.
Все, мы сделали существо. Сохранитесь и сделайте check in.

Написание скрипта для спавна нашего NPC.

Теперь, когда мы создали существо, нам необходимо разместить его в игровом мире. Для этого мы должны написать скрипт, который будет спавнить NPC в игровую локацию, после проверки того, есть ли npc в этой локации (во избежании бесконечного спавна). Продолжим и создадим скрипт: (cкрипт необходимо изменить под свой модуль).
#include "wrappers_h”
void main()
{
// Первое, что мы должны сделать, это проверить,
// имеем ли мы нашего npc в локации.
object oPlayer = GetMainControlled();
DisplayFloatyMessage(oPlayer, "tut_merchant_spawn”, FLOATY_MESSAGE, 16777215, 20.0);
object oMerchant = UT_GetNearestObjectByTag(oPlayer, "jwv_t_creature1″);
if (!IsObjectValid(oMerchant))
{
// Если мы дошли до этого кода, значит npc еще не спавнился в локации.
// Так давайте сделаем это.
// Поместим object pointer В лагерь
object oArea = GetObjectByTag("cam100ar_camp_plains”);
// Создаем локацию где наш NPC будет располагаться
location lMerchantLocation = Location(oArea, Vector(166.61, 124.77, -1.33), 85.4);
// Спавним NPC
CreateObject(OBJECT_TYPE_CREATURE, R”jwv_t_creature1.utc”, lMerchantLocation);
}
}

Первое, что делает этот скрипт, это поиск в локации вокруг игрока на предмет того, не спавнился ли еще NPC.
Если функция возвращает INVALID OBJECT, то это значит что NPC еще не спавнился в локации. После этого мы создаем location object который имеет X Y Z координаты и угол, там где мы хотим NPC, после чего спавним нашего NPC.
Вызов "GetObjectByTag (" cam100ar_camp_plains ")" нужен чтобы получить дескриптор объекта к лагерю игрока.

Сейчас вы скорее всего спросите:"Джон, откуда вы знаете координаты в локации для того, чтобы спавнить NPC в это место?", и это будет довольно здравый вопрос. Давайте ненадолго переведем тему разговора на то, как я узнал координаты.
Для облегчения определения координат я создал небольшой скрипт, я назвал его
"ShowLocation”, вот он:

#include "utility_h”
void main()
{
object oPC = GetHero();

location lLoc = GetLocation(oPC);
vector vPos = GetPositionFromLocation(lLoc);
vector vOrientation = GetOrientationFromLocation(lLoc);
float fAngle = GetFacing(oPC);

DisplayFloatyMessage(oPC, VectorToString(vPos), FLOATY_MESSAGE, 16777215, 20.0);
DisplayFloatyMessage(oPC, "————–”, FLOATY_MESSAGE, 16777215, 20.0);
DisplayFloatyMessage(oPC, FloatToString(fAngle), FLOATY_MESSAGE, 16777215, 20.0);
}


Создайте скрипт, сохранитесь, сделайте check in и экспортируйте его. Этот скрипт переносит object pointer к игроку, после чего узнает координаты и угол игрока и выводит их. Чтобы использовать это, вы должны включить developer console. Для этого создайте ярлык и впишите в поле объект " -enabledeveloperconsole” (без кавычек), как на скриншоте:

Это включит консоль. После чего запустите игру из этого ярлыка и включите консоль (по умолчанию-клавиша ~ (тильда))
Примечание:Я советую вам использовать мод, делающий консоль в dragon age origins видимой.
После того, как вы открыли консоль, введите в ней:"runscript showlocation”, это запустит мой скрипт.
Запускайте скрипт там, где вы хотите проспавнить вашего NPC, после чего запишите числа и вставьте их в первый скрипт.

Создание PRCSCR файла.

Итак, мы имеем существо, скрипт для спавна существа в локации, но сейчас ничто нам не говорит что скрипт действительно работает. Вы не можете просто создать скрипт и ждать что он заработает в игре, пока он (скрипт) не будет привязан к игре в некотором роде. Когда мы создавали предмет, мы связали скрипт с "module_core” скриптом. Однако в нашем случае, как игра должна знать, запускать ли ей наш скрипт. Тут то нам и понадобиться PRCSCR файл. PRSCR по существу является 2DA файлом, который позволит запустить определенный сценарий, когда определенная локация будет загружена.

Так как это 2da, мы прежде всего должны создать таблицу в microsoft exel.
Примечание:я не рекомендую использовать пакет OPEN OFFICE, так как некоторые сделанные в нем 2da файлы не работают.

Если вы совершенно не знакомы с созданием 2da файлов, советую вам сначала уделить пару минут туториалу по 2da файлам который я написал-2DA or not 2DA – Overriding 2DA Files. Этот учебник содержит важную информацию о том, как работают 2da файлы и о том как их сделать и экспортировать.

Файл очень прост, и для его создания нам понадобятся только 3 вещи:
-ID
-AreaListName
-Скрипт
Ид должен быть обязательно уникальным во избежании конфликтов и неправильной работы. Лично я записал свой ник числами и для меня мой ид 1710001, вот моя таблица:

Вот что это означает: "Когда локация cam100ar_camp_plains загрузится, скрипт tut_merchant_spawn запустится.
Когда вы создадите файл, скомпилируйте его и поместите сюда:
Documents\Bioware\Dragon Age\AddIns\<Имя вашего плагина>\core\override
РАСПОЛОЖЕНИЕ ФАЙЛА ОЧЕНЬ ВАЖНО.

Экспорт и тестирование.
На этом мы заканчиваем. Убедитесь что вы все сохранено и checked in, после чего нажмите export without dependent resources. После этого сгенерируйте ваш модуль и файлы manifest xml. После того, как вы с этим покончили, удалите ВСЕ из папки Dragon Age\Core\Override\Toolsetexport, во избежании порчи игры. все что нам нужно есть в addins папке вашего модуля.

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

Категория: Текстовые учебники | Добавил: Darkspawn (16.12.2009)
Просмотров: 3126 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]