Разработка модов. Глава 4

Материал из Pocket Fallout для КПК на PDA PC PPC Mobile.

Содержание

Создание персонажей

Хоть и конвертер карт создает юнитов и распределяет их по карте, они все равно являются «болванчиками» с усредненными характеристиками. Для создания, описания объектов на карте (юниты, интерактивные объекты, ящики, шкафы) создан служебный класс MapObject.
У класса MapObject есть 5 основных методов, при помощи которых можно добавить на карту необходимый объект. Все остальные методы (в большинстве) предназначены для указания характеристик созданным объектам.

  • AddAsUnit() – добавить юнита(человекообразного персонажа) на локацию
  • AddAsAnimation() – добавить анимацию на локацию. В качестве анимации может быть также и открывающиеся двери
  • AddAsObject() – добавить на локацию объект, который быдет выделяться желтой аурой при взаимодействии с ним пользователем;
  • AddAsMisc() - добавить на локацию не интерактивный объект (трава, дерево, коврик)
  • AddAsBox() - добавить на локацию объект-контейнер в виде ящика/шкафа/полок

После того, как объект был добавлен на карту, ему необходимо указать характеристики по средствам методов класса MapObject.

Дополнительно

  1. Для доступа к ранее созданному объекту используйте метод GetObjectByName
  2. Для расчета базовых характеристик умений юнита, на основе параметров его характера, используйте метод CalculateSkillValues
  3. Для чтения/записи параметров характера персонажа используйте методы GetCharacterParam/SetCharacterParam
  4. Для чтения/записи параметров умений персонажа используйте методы GetSkillLevel/SetSkillLevel
  5. Для чтения/записи различных параметров объекта(в частности - юнита) используйте методы GetUnitParam/SetUnitParam
  6. Для манипуляции с инвентарем используйте функционал класса 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 "Автоматическая конвертация ресурсов"

Личные инструменты