Разработка модов. Глава 4
Материал из Pocket Fallout для КПК на PDA PC PPC Mobile.
Содержание |
Создание персонажей
Хоть и конвертер карт создает юнитов и распределяет их по карте, они все равно являются «болванчиками» с усредненными характеристиками.
Для создания, описания объектов на карте (юниты, интерактивные объекты, ящики, шкафы) создан служебный класс MapObject.
У класса MapObject есть 5 основных методов, при помощи которых можно добавить на карту необходимый объект. Все остальные методы (в большинстве) предназначены для указания характеристик созданным объектам.
- AddAsUnit() – добавить юнита(человекообразного персонажа) на локацию
- AddAsAnimation() – добавить анимацию на локацию. В качестве анимации может быть также и открывающиеся двери
- AddAsObject() – добавить на локацию объект, который быдет выделяться желтой аурой при взаимодействии с ним пользователем;
- AddAsMisc() - добавить на локацию не интерактивный объект (трава, дерево, коврик)
- AddAsBox() - добавить на локацию объект-контейнер в виде ящика/шкафа/полок
После того, как объект был добавлен на карту, ему необходимо указать характеристики по средствам методов класса MapObject.
Дополнительно
- Для доступа к ранее созданному объекту используйте метод GetObjectByName
- Для расчета базовых характеристик умений юнита, на основе параметров его характера, используйте метод CalculateSkillValues
- Для чтения/записи параметров характера персонажа используйте методы GetCharacterParam/SetCharacterParam
- Для чтения/записи параметров умений персонажа используйте методы GetSkillLevel/SetSkillLevel
- Для чтения/записи различных параметров объекта(в частности - юнита) используйте методы GetUnitParam/SetUnitParam
- Для манипуляции с инвентарем используйте функционал класса InventoryItem, а также дополнительные методы класса MapObject : isItemInInventory, DeleteItemFromInventory, MoveItemFromInventory, ClearInventory
Примеры реализации
Ниже приведены несколько примеров создания объектов и задания им характеристик.
Пример создания юнита
var gopnik = CreateObject("MapObject");
gopnik.AddAsUnit("man13", "gopnik3", 39, 44);
gopnik.SetObjectDirection(direction.SouthEast);
gopnik.SetTitle(300); //Заголовок объекта из description.txt
gopnik.SetUnitParam(UnitParam.Scrapper, true); //Данный юнит будет нападать первм
gopnik.UnitCanTalk(false); //Юнит НЕ может разговаривать
gopnik.Free();
Пример создания объекта-картейнера
var box = CreateObject("MapObject");
box.AddAsBox("locker_SE", “safe”, x, y, boxtype.safe, Direction.NorthEast);
box.Free();
Пример создания анимации
var firePit = CreateObject("MapObject");
firePit.AddAsAnimation("firepit", "big_fire", 20, 28, 0, 0);
firePit.SetAnimationParam(AnimationParamType.AnimateLoop, true);
//Анимация будет все время проигрываться
firePit.Free();
См. также
Класс MapObject
Разработка модов
Чтобы попасть в другие разделы материала кликните по любой из следующих ссылок:
Разработка модов. Введение
Разработка модов. Глава 1 "Основные теоретические данные о локациях"
Разработка модов. Глава 2 "Создание карты"
Разработка модов. Глава 3 "Автоматическая конвертация ресурсов"