XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Желтая пресса: обучающие статьи
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
remal
нечто
offline
Опыт: 2,087
Активность:
Реализация дополнительных данных в объектах карты
Реализация дополнительных данных в объектах карты


Вступление
На написание данной статьи меня подтолкнула наработка PitzerMike на WC3Jass.com – Interpreter Engine. В указанной теме он ссылается на "исследования" KaTTaNa – New Object Editor Fields. Я посчитал данную тему интересной и решил выложить сюда вольное истолкование-перевод.

Начало экспериментов
Есть native функция
Код:
native GetAbilityEffectById takes integer abilityId, effecttype t, integer index returns string
Она отлично работает для абил и баффов.
Берём файл Units\UnitMetaData.slk и добавляем в конец следующую строчку:
Код:
itar TargetArt Profile -1 art WESTRING_AEVAL_ATAT c1a02 modelList   0 1 1   0 1 1 1 1  1
Кидаем этот файл в директорию_вара\Units. Теперь для всех объектов в Р.О. у нас появляется поле Графика – Цель, в английской версии - Art - Target Effect. (ID поля по CRTL+D – TargetArt) Туда можно заносить модели эффектов. Мы же будем заносить туда произвольные строчки.

Поехали
Берём любую абилу. В Графика-Цель заносим что-нибудь типа "hello". Смотрим что вернёт в игре такой вызов:
Код:
GetAbilityEffectById('<ID нашей абилы>', EFFECT_TYPE_TARGET, 0)
Вернёт он, как и следовало ожидать, "hello".
Продолжаем. Заносим второй строкой в то же многострадальное поле нечто а-ля "TT". На этот раз в качестве последнего параметра в указанном выше вызове ставим 1. Результат ожидаем – "TT".
Вывод: последний параметр в функции указывает на номер строчки в нашем поле.
Дополнение: если последний параметр больше, чем максимальное кол-во строчек, то будет возвращаться последняя.

Едем дальше
Хочется поиметь дополнительных данных для предметов и юнитов. Пробуем. Повторяем эксперимент из предыдущего раздела. ОБЛОМ. Функция ничего не возвращает. Читаем указанные вверху ссылки и видим, что, если импортировать в карту измененный Units\UnitMetaData.slk, то всё начинает работать. Пробуем. Работает.

Теперь нюансы
MetaData slk-таблицы грузятся при подгрузке ПЕРВОЙ МАПЫ. Т.е., если человек играет в нашу карту после, например, доты, то у него ничего работать не будет, КРОМЕ АБИЛ И БАФФОВ. К сожалению, пока что не нашли способ это преодолеть.

Примеры
Карты из аттачей
  • ItemType – демонстрация, как можно реализовать типы предметов без огромной кучи if-ов. Карту загружать ПЕРВОЙ после запуска вара!
  • InterpreterEngine1a – маленький интерпретируемый язык в абилах от PitzerMike. Можно найти в самой первой ссылке в статье

Выводы
Технология хороша для абил. Например – есть в команде штатный абильщик. Для него разрабатывается небольшой скриптовый язык на примере PitzerMike-ого и он может делать, не влезая в триггеры, разные удобные вещи, типа добавления скрытых абил при изучении геройской. При этом можно использовать несколько полей для данных EFFECT_TYPE_AREA_EFFECT и т.п. (смотрим common.j) Если на каждое повесить какое-либо событие (добавление, увеличение уровня и тп), то можно очень сильно облегчить работу абильщика.
Если мы делаем мод, то тут перед нами открываются огромные возможности. Как пример – удобство при создании типов вещей.


ЗЫ: технология работает в мультиплеере.
ЗЗЫ: также в аттаче лежит пример такого UnitMetaData.slk
ЗЗЗЫ: этим двиглом форума из постов вырезаются табуляции!!!
Прикрепленные файлы
Тип файла: rar ItemsTypes.w3x.rar (23.3 Кбайт, 42 просмотров )
Тип файла: rar UnitMetaData.slk.rar (6.2 Кбайт, 39 просмотров )
Тип файла: rar InterpreterEngine1a.w3x.rar (55.7 Кбайт, 42 просмотров )

Отредактировано remal, 28.06.2006 в 19:47.
Старый 17.06.2006, 01:00
AnD
Weighted Companion Cube
offline
Опыт: 7,351
Активность:
О... я джас только изучаю, а вымне такую статью... =)
Ну ладно, не отвечай.

Отредактировано AnD, 17.06.2006 в 01:16.
Старый 17.06.2006, 01:10
remal
нечто
offline
Опыт: 2,087
Активность:
Цитата:
Сообщение от AnD
О... я джас только изучаю, а вымне такую статью... =)

извини, но статья не расчитана на новичков.
не так давно я писал NETRAT-y, что пусть напишет что-нить, что было бы интересно читать профи.... но вот написал я.

ЗЫ: на вопросы отвечу, но не на "мне ничего не понятно", а по конкретике.
Старый 17.06.2006, 01:12
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
про способности знаю давно, вещь очень полезная. сам использую для сохранения в абиле параметров жассового спелла. очень удобно особенно если потом другой человек будет балансить мапу. (чтобы не лезть в жасс-код самой абилы)
про итемы не знал. жаль только ограничение это, из-за которого не получится нормально использовать
Старый 17.06.2006, 02:28
DioD

offline
Опыт: 45,134
Активность:
Это пошло от витригизера
Старый 17.06.2006, 03:15
remal
нечто
offline
Опыт: 2,087
Активность:
беру пример с AnD-a.
АП.
Старый 17.06.2006, 19:26
vlad_C0M
Босс DarkSkyTeam
offline
Опыт: 10,459
Активность:
Ого! .... Ремал, все достаточно круто, непонятно.... Но можно по Русски? Из всего прочитанного, я понял , что ты открыл нечто новое замечательное, и знаешь как это использовать... А как это работает, и что из себя представляет ты это не упомянул...

Примеры смотреть - это отнимает много времени...Опиши подробней пожалуйста!
Старый 17.06.2006, 21:29
remal
нечто
offline
Опыт: 2,087
Активность:
vlad_C0M, ок. скажи где конкретно пояснить?
Старый 17.06.2006, 21:31
remal
нечто
offline
Опыт: 2,087
Активность:
короче, накатал карту-пример:)
из вулкана лезут уродцы, задача их не пустить к хумам. нага изначально принадлежит другому игроку, контроль дан, чтобы можно было нагляднее смотреть.
ЗЫ: да, я знаю, что каст старфола сбивается. исправить это легко, но тут главное пример, а не изыски:)
Прикрепленные файлы
Тип файла: w3x AI_tst.w3x (21.9 Кбайт, 31 просмотров )
Старый 21.06.2006, 21:26
remal
нечто
offline
Опыт: 2,087
Активность:
неужели никому не интересно?
Старый 22.06.2006, 03:52
remal
нечто
offline
Опыт: 2,087
Активность:
всего 5 просмотров 0 комментов. забавно:) даже на бру кто-то комментировал))))
Старый 23.06.2006, 19:18
DeT

offline
Опыт: 5,715
Активность:
да..я прокоментировал и еще рас скажу - что прикольно..дает неплохие возможности и уменьшает гемморой с триггерами условий..плюс еще парачка идей(кажем у спелла мона в графике-цель прописать что будет писаться над челом кастующим спел)и никаких условий=-)

DeT добавил:
это еще например для итемоФ...тока е ремал открыл а перевел=-)
(вроде так)
Старый 23.06.2006, 19:22
remal
нечто
offline
Опыт: 2,087
Активность:
Цитата:
Я посчитал данную тему интересной и решил выложить сюда вольное истолкование-перевод.
до просто "перевода" тут далеко:)
Старый 23.06.2006, 19:23
NETRAT

offline
Опыт: 83,712
Активность:
Неплохо, но, судя по всему стабильно работает только для баффов и абил. Гм, это может существенно уменьшить обьемы файлов конфигов, ибо в жассовом конфиге строка занимает
Код:
call A(B,C)
То есть не менее 11 байт, тогда как в w3o от 5 байт. Все таки мне бы понадобилась такого рода фича для айтемов и для юнитов
Старый 24.06.2006, 15:33

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 13:47.