|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Вопросик по поводу Spell.dbc |
Вопросик по поводу Spell.dbc |
Доброго времени суток обыватели портала, в виду своей некомпетентности по ТС возникло несколько вопросов:
1) по поводу пары столбцов в данной dbc( а именно столбцы с 86 по 91 EffectImplicitTarget и 110 - 112 EffectMiscValue если считать колонку id за 0)за что они отвечают и колонка атрибуты. Видел много тем по поводу Spell.dbc но вот именно эти столбцы вызвали сложности на том же Тринити нет описания, а на WOW dev непонятно со значениями. И про атрибуты мне интересно как они складываются например: https://wowdev.wiki/Spell.dbc/Attributes в этой табличке приведены примерные значения, но в некоторых спелах значения совсем другие, соответственно они как то складываются. ("грязные делишки " имеет атрибут 0x1D0.) 2) "грязные делишки " талант имеет 3 эффекта SPELL_AURA_ADD_FLAT_MODIFIER - как я понят отвечает за расход энергии и два SPELL_AURA_OVERRIDE_CLASS_SCRIPTS, вот с ним и неясности, где для него находятся значения. Если с предыдущим все проще( значения нашел), то для этого я просто их найти не могу и в описании таланта нету ссылок на ячейке( ни $s, ни любой другой) там просто указанно процентами. Думаю что они в каком то .cpp? Эффекты привязал к нему 6 SPELL_EFFECT_APPLY_AURA 31 SPELL_EFFECT_WEAPON_PERCENT_DAMAGE 80 SPELL_EFFECT_ADD_COMBO_POINTS все указал как надо с учетом того что в dbc (0 считается за 1) в итоге аура вешается а КП не идут в чем может быть проблема? В любые .Cpp не лазил вообще, все делал через DBC. Сравнивал с хемо, но у хемо вообще в эффектах нету добавление кп....там только 121 SPELL_EFFECT_NORMALIZED_WEAPON_DMG 31 SPELL_EFFECT_WEAPON_PERCENT_DAMAGE 6 SPELL_EFFECT_APPLY_AURA Помогите разобраться П.С. с Кп разобрался |
Вики то есть но там как то непонятно c описанием с тем же EffectImplicitTarget (Type of implicit target(s) of according effect.) что за косвенные цели? да и про атрибуты толком нечего не сказано... Можно поподробней разжевать) EffectMiscValue за что отвечает? по описанию она использует какие то значения для группировки? или не угадал?
Сообщение # 3 написано 25.07.2018 в 11:15
|
Можно и разжевать.
1) по поводу пары столбцов в данной dbc( а именно столбцы с 86 по 91 EffectImplicitTarget и 110 - 112 EffectMiscValue если считать колонку id за 0)за что они отвечают и колонка атрибуты. Видел много тем по поводу Spell.dbc но вот именно эти столбцы вызвали сложности на том же Тринити нет описания, а на WOW dev непонятно со значениями. И про атрибуты мне интересно как они складываются например:https://wowdev.wiki/Spell.dbc/Attributes в этой табличке приведены примерные значения, но в некоторых спелах значения совсем другие, соответственно они как то складываются. Нумерация колонок в примерах начинается с единицы (по канонам). - Выбор целей для эффекта осуществляется на основе нескольких параметров, основными из которых являются Targets(17, общий для всей способности), а также EffectImplicitTargetA(87-89, для каждого эффекта) и EffectImplicitTargetB(90-92, для каждого эффекта). Targets можно считать отправной точкой для обработки целей способности. Этот параметр задает способ проверки и выбора первичной цели способности (со всеми возможными вариантами можно ознакомиться по ссылке). Так или иначе, именно здесь определяется, как выбирать цель с точки зрения UI (unit selection, area selection, mouseover tap), а также осуществляется ее первичная фильтрация. Параметр в принципе можно назвать ExplicitTarget, по-скольку клиент имеет абсолютный (явный) контроль над выбором цели на данном этапе. Далее информация о цели передается на примитивный двухэтапный (при необходимости) конвеер для дополнительной обработки. Название ImplicitTarget призвано отметить неспособность игрока отследить процесс выборки целей на данном этапе (неявные цели), т.к. способ определения закодирован в .dbc в виде 1-2 типов и не подвержен изменению извне. Способность может использовать как один, так и оба параметра для точной настройки фильтрации целей. Рассмотрим несколько примеров. -- ID = 30283, Name = "Неистовство Тьмы"/"Shadowfury": Targets = 64 (0x40, TARGET_FLAG_DEST_LOCATION) // Игроку необходимо иметь возможность выбирать зону, на которой применять способность; RangeIndex = 4 (30 yd) // Но не далее, чем на 30 ярдов. В способности определено два эффекта, однако значения нижеследующих параметров одинаковы для обоих. ImplicitTargetA = 16 (0x10, TARGET_UNIT_DEST_AREA_ENEMY; целевая сущность -- Unit, источник поиска -- DEST_AREA (получить из Targets), критерий поиска -- противник) // Извлечь значение из Targets, найти всех противников в радиусе RadiusIndex = 14 (8 yds) // 8 ярдов -- ID = 33325, Name = "Темное восстановление"/"Shadowmend": Targets = 0 // Конвеер не учитывает "явные" цели RangeIndex = 1 (0 yds) // n/a ImplicitTargetA = 22 (0x16, TARGET_SRC_CASTER) // Извлечь данные источника (заклинатель), передать дальше ImplicitTargetB = 30 (0x1E, TARGET_UNIT_SRC_AREA_ALLY) // Получить данные источника, определить зону вокруг него, отфильтровать дружественные ему цели RadiusIndex = 18 (15 yds) // 15 ярдов Таким образом два приведенных примера отличаются тем, что в первом случае игрок выделяет обрабатываемую зону явно, тогда как во втором она неявно извлекается из позиции заклинателя. За списком возможных значений полей ImplicitTarget обращаться сюда (ссылка может инвалидироваться по мере добавления в файл кода (в строки, предшествующие целевой; на момент написания сообщения список был определен как enum Targets { /*...*/ };)). - EffectMiscValue тоже разделен на две составляющие (A и B) для каждого эффекта. Интерпретация значений в этих колонках целиком зависит от того, за каким эффектом они закреплены. В них может передаваться любая дополнительная информация, для которой одного столбца (EffectBasePoints) оказалось недостаточно (например EntryID НИПа, в которого нужно превращать или битовую маску школ, к которым нужно даровать сопротивление). - Атрибуты применяются совершенно различным образом. По большому счету это опции поведения способности, для настройки которых достаточно простейшего переключателя (true/false). Каждый флаг в битовой маске является соответствующем переключателем. Переключатели внутри групп (коими и являются поля Attributes) зачастую не имеют семантической связи (например в AttributesEx флаг 0x20 (SPELL_ATTR1_NOT_BREAK_STEALTH, переключатель в шестой позиции) позволяет применению способности не снимать невидимость, в то время как флаг 0x80 ( SPELL_ATTR1_CANT_BE_REFLECTED, переключатель в восьмой позиции) - обозначает способность, которую можно отразить). По сути каждое поле можно представить в двоичном виде: оно является x32 Int'ом, соответственно 32 двоичных разряда. Порядковый номер разряда отражает одну опцию, а значение в ней - настройку (1 - установлена, 0 - сброшена). Помните, что один шестнадцатеричный разряд может адресовать сразу 4 двоичных (отсюда и берутся 0x1, 0x2, 0x4, 0x8 и т.д; побитовое ИЛИ нескольких опций может дать маску, например 0x4 | 0x8 = 0xC, что означает установленные 3 и 4 бит при сброшенных 1 и 2). Ваш пример (0x1D0) означает установленные 0x100, 0x80, 0x40, 0x10 переключатели (соответственно все значение будет иметь следующий двоичный вид: 0d00000000`00000000`00000001`11010000). Если до сих пор возникает вопрос "как это так?" - отправляйтесь в гугл с запросом "bitwise logical operations" / "битовые логические операции" (в зависимости от лингвистических предпочтений). 2) "грязные делишки " талант имеет 3 эффекта SPELL_AURA_ADD_FLAT_MODIFIER - как я понят отвечает за расход энергии и два SPELL_AURA_OVERRIDE_CLASS_SCRIPTS, вот с ним и неясности, где для него находятся значения. Если с предыдущим все проще( значения нашел), то для этого я просто их найти не могу и в описании таланта нету ссылок на ячейке( ни $s, ни любой другой) там просто указанно процентами. Думаю что они в каком то .cpp? Базы на руках нет, но да, название SPELL_AURA_OVERRIDE_CLASS_SCRIPTS намекает на ссылку в ядро. |
| |||
| |||