Добавлен , опубликован
Раздел:
3. Редактор данных

Вступление

Разобравшись наконец с редактором объектов решил написать самую подробную и простую статью для новичков. Эта первая моя статья по редактору объектов, и я хочу рассказать о такой вещи как предметы и инвентарь.
Прежде всего хочу сказать что статья очень подробная, и дабы её понять нужно не только читать но и прямо сейчас открыть редактор и создать там новую карту. Да сделайте это прямо сейчас..

Инвентарь

Откройте редактор объектов и перейдите во вкладку ItemContainers.
Выберите там Wow Character.
Пояснение: Контейнер это некий «ящик» в котором можно хранить предметы. Каждый предмет занимает одну ячейку контейнера. Сами ячейки могут ограничивать свое содержимое классом. Например в первую ячейку можно положить только оружие а во вторую шлем. Забегая вперед скажу что каждый предмет привязан только к одному классу, а ячейки могут хранить предметы любых выбранных классов.
Ячейки имеют несколько примитивных свойств. Первое и главное это положение в ящике. Положение определяется по строкам и столбцам ящика. Например, командная панель с приказами и способностями тоже состоит из такой сетки. Самая верхняя ячейка находится на нулевой строке и нулевом столбце.
Когда вы добавите в ящик новую ячейку вы можете определить не только где она будет находится относительно левого верхнего угла ящика, ну и что в неё можно будет положить.

Итак переходим к практике.

Поставьте в поля Model Width и Model Height значение 0. Это ширина и высота модели персонажа вокруг которого располагаются ячейки. Таким образом, по умолчанию окно инвентаря похоже на его аналог из WoW.
Теперь зайдем в меню slots+
В этом меню можно создать ячейки для нашего ящика (инвентаря).
  • Сначала нужно удалить все уже существующие ячейки.
  • Теперь можно создать первую из них.
Немного отойдя скажу сразу что мы сделаем инвентарь из 6 ячеек, 3 в высоту и 2 в ширину.
У нас получиться такой сундук:
1 2
3 4
5 6
для предметов с классом head (шлем)
для предметов с классом weapon (оружие)
В остальные 4 ячейки можно будет положить любой предмет.
Создайте первую ячейку.
В поле column (колонка) укажите 0.
В поле row (строка) тоже укажите 0.
В поле classes (классы ячейки) нажмите add value и выберите там head.
Это значит что в эту ячейку можно будет положить предметы с классом head, и никаких другие.
Вторая ячейка будет находится в положение column=1, row=0. (т.е правее на одну позицию чем первая).
Третья и четвертая имеют параметры, как и у первой и второй соответственно, но поле row у них равно 1. Это значит что они на одну позицию ниже первой и второй ячейки.
Аналогично создадим и пятую с шестой. Параметры row будут равны 2.
Как вы видите он идентичен тому что есть в варкрафте, за исключением использования классов (которые мы используем чуть позже). На данный момент давайте первой ячейке установим класс head (уже установили ранее), а второй класс (weapon). Остальные оставьте без явного указания класса, тогда в них можно будет положить любом предмет.
Итак, контейнер (сундук) у нас создан. Давайте теперь добавим его герою. Инвентарь в редакторе объектов является способностью.

Способность инвентарь

Перейдите во вкладку Abilitys (способности). Нажмите Add Ability. В поле имя укажите "Инвентарь", в поле Id поставьте HeroInventory.
Найдите значение Ability: Info.
Там у нас хранится информация о используемых сумках. Т.е у одного героя может быть несколько сумок или как я раньше назвал их сундуком с ячейками в которых содержатся предметы.
Удалим там все и добавим только одно поле.
Conteiner – Тут укажите ранее созданный или измененный контейнер (например WoW Character).
Empty Face – здесь можно указать кнопку. Кнопки создаются в соответствующей вкладке. Она отвечает за отображение кнопки с соответствующей иконкой в игре по нажатию на которую откроется наш инвентарь. (предварительно я создал кнопку hero – Инвентарь).
Дайте эту способность (инвентарь) любому юниту и протестируйте в игре.
Если вы все сделали правильно на этом этапе то у вас получится это:

Предметы

С инвентарем вроде разобрались, в него можно помещать любые предметы и все будет работать. Но есть одна проблема у нас нет предметов..
Перед тем как сделать предмет вдумчиво посмотрите на этот рисунок.
Как видно из рисунка предмет состоит с кучи разных составляющих. Но чтобы было понятно, четко разделим, как и что работает.
Все что описано выше создает предмет пустышку. А наделяет его свойствами следующие виды объектов:
  • Эффект – Эффект основной тип объектов в starcraft2, обычно используется для создания всяких способностей.
  • Алгоритм – Некий постоянный эффект. Проще говоря, бафф. Можно сделать общие алгоритмы для предметов и комбинировать их в свойствах предмета. Например, Алгоритм +10 к атаке и Алгоритм +10 к здоровью.
  • Оружие – Оружие это тип атаки боевой единицы. Можно вообще убрать атаку у героя, и добавлять её через это свойство. Например, герой подбирает огненный меч и получает соответствующую стандартную атаку.
Все это только теория, теперь шаг за шагом реализуем первый предмет дающий герою 20 единиц здоровья.

Реализуем наш предмет, шаг-1.

Подготовка

Перед работой установите для удобства отображение данных только из ресурсов карты.

Предмет

Сам предмет это невидимый игровой объект, которые может модифицировать любые свойства героя носящего этот предмет. Предмет содержит список эффектов и алгоритмов в виде списка, которые получит герой сразу после того как наденет этот предмет.
Перейдите во вкладку Items. Создайте новый объект.
В поле name (имя) укажите «Нано Броня».
В поле id укажите nanoarmor
В поле ItemType (тип предмета) укажите Generic
В поле itemclass (класс предмета) можно указать chest (туловище).

Кнопка

Второй объект эта кнопка. Она отвечает за иконку и описание предмета, отображается в инвентаре героя. Кнопка можно привязать к предмету через свойства предмета, для этого есть специальное поле.
Теперь создайте в разделе buttons (кнопки) новый объект. Укажите тоже имя и тот же индификатор. Если id у предмета и кнопки будет один, то игра автоматически привяжет этот объект к предмету.
Установите любую иконку, в поле описание можно добавить что-нибудь вроде такого «Дает 10 ед. здоровья.»

Юнит

Третий объект это юнит. Юнит отвечает за то как предмет будет отображаться в игровом мире, например если герой выкинет его из инвентаря. Причем важно знать, что это не юнит привязывается к предмету, а наоборот. Указать какой предмет вы хотите привязать к юниту можно в свойствах юнита (Stats: Item). Также если вы создадите юнит и предмет с одинаковым индификатором то предмет автоматически будет привязан к юниту.
Создавать юнита желательно с таким же id и именем. В поле based on (основан на) нужно указать Default Settings (Item). Это создаст юнита с изначальным наклоном под настройку предмета и со специальными полями. Теперь в поле object type установите Item. Нажмите OK и увидите только что созданный юнит пустышку.
Если вы указали тот же id что и у предмета то сразу увидите связь между ними. В поле описание у юнита автоматически скопируется описание из кнопки.

Актер

Ну и конечно сам юнит это только логика игры, для отображения в мире нужно еще создать актера. В качестве модели для актера можно указать сундук. Юнит к актеру привязывается через актера. В самом верху свойств актера есть поле Unit Token. Именно там нужно указать к какому юниту, вы хотите привязать этого актера.
Создавая актера для юнита (предмет) можно указать тоже имя и id что и везде (в предмете, юните, кнопке). Не смотря на тот же id актер в отличие от остального не будет привязан к юниту автоматически. В самом верху свойств актера найдите поле Unit Token и укажите нашего юнита «Нано Броня».
В поле actor type укажите Unit.
В поле based on укажите GenericUnitStandart
После создания актера в поле art model (модель) можно указать сундук (ShapeTreasureChestOpen).
В поле unit icon скопируйте текстуру иконки из кнопки для предмета.

Заключение первой части

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

Алгоритм

Перейдите во вкладку Behaviors (Алгоритмы) и создайте новый алгоритм.
В поле имя укажите Health +10
В поле id укажите itemHealth10
Based on (основан на) укажите buff.
В поле behavior modifications+ найдите Unit -> Vital Max Bonus -> Life и установите значение 10.
Теперь если дать этот алгоритм любому юниту его здоровье увеличится на 10, но мы дадим наш алгоритм предмету.
Перейдите во вкладку Items (предметы), найдите наш предмет Нано Броня и в поле behaviors+ добавьте только что созданный алгоритм.
Пробуем в игре. Без предмета у героя 310 ед. здоровья
Теперь подбираем предмет:
Как вы увидели у героя прибавилось 10 ед. здоровья. Кстати обратите внимание на небольшую иконку, она убирается в свойствах алгоритма. Нужно просто поставить галочку «скрытый». (Flags: Hidden)

Классы предметов

Классы это просто группа предметов. Указать класс можно как предмету, так и ячейку в сундуке (инвентаре героя). Нельзя поместить предмет одного класса в ячейку другого класса, но можно помещать предметы любых классов в ячейки без указания класса у ячейки.
Класс предмета выбирает при создание самого предмета в поле item class. А класс ячейки при создание инвентаря (мы разобрали это в самом начале).
При желание можно создать свои классы предметов, для этого есть специальная вкладка item classes. Хоть в большинстве случаев это не нужно. По умолчанию классы в игре нигде не отображаются и нужны только для правильной работы системы предметов и инвентаря.

Готовая карта

Прикрепляю готовый результат, там есть 3 предмета. первый это наша броня, второй также дает здоровье и третий добавляет атаку герою.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Этот комментарий удален
0
14
12 лет назад
0
Неплохо бы статью на подстатьи разбить. А то слишком большая какая-то.
0
21
12 лет назад
0
NixEon, а на кой черт нужна лицензия?У меня редактор пашет и на пиратке,а прямые руки мультиплеер прикрутят.
0
6
12 лет назад
0
Местами трудновато на практике, особенно таким странным людям, которые используют русский редактор О_о (Про меня)
0
34
12 лет назад
0
используют русский редактор О_о (Про меня)
что мешает его не использовать? )
0
6
12 лет назад
0
Hellcore:
используют русский редактор О_о (Про меня)
что мешает его не использовать? )
Плохо владею англ. :)
0
15
12 лет назад
0
Может это нюанс 1.5, но мне пришлось связывать группы Юнит-Актер и Предмет-Кнопка-Алгоритм вручную, указав предмет в поле Stats:Item у Unit'а.
Без этого предмет был неликвидным.
0
34
12 лет назад
0
указав предмет в поле Stats:Item у Unit'а.
так и есть.
Обычно остальное связывается автоматически при одинаковых ид.
0
15
12 лет назад
0
Еще нюанс:
Если нужно класть в одну ячейку предметы разных классов (например оружие в правую руку), то при создании Item Container'a делается несколько ячеек с одинаковыми координатами (row и cow), но для разных классов вещей.
В игре, если герой будет экипирован мечом, и ему дать топор, то последний экипируется, а меч окажется в курсоре.
0
1
11 лет назад
0
так все работает, только модель предмета не отобраэается, когда он земле. в общем сундука открытого нет на земле.
0
34
11 лет назад
0
CRYbit:
так все работает, только модель предмета не отобраэается, когда он земле. в общем сундука открытого нет на земле.
значит не правильно настроен актер, либо вообще он не присвоен юниту-предмету.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.