Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Новичкам

Важная информация

Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.09.2010, 21:50   #1
fedr
Новичок
 
Аватар для fedr
 
Регистрация: 11.03.2010
Сообщений: 10
Сказал(а) спасибо: 13
Поблагодарили 4 раз(а) в 3 сообщениях
fedr На верном пути
По умолчанию Маски спеллов

Запутался с масками/флагами, помогите разобраться.

Имеем талант http://ru.wowhead.com/spell=18275, который имеет эффект SPELL_EFFECT_APPLY_AURA, aura SPELL_AURA_ADD_PCT_MODIFIER, misc = SPELLMOD_DAMAGE.
SpellModifier имеет поле uint64 mask, которая указывает на какие группы спеллов распространяется аура (?).
На MZ есть таблица `spell_affect`, которая сопоставляет спеллам их `SpellFamilyMask`, однако в поздних версиях такой таблицы нету. В Spell.dbc нашел такие столбцы:
125 EffectSpellClassMaskA1 uint
...
133 EffectSpellClassMaskC3 uint
Отсюда они и берутся? о_О
fedr вне форума   Ответить с цитированием
Старый 13.09.2010, 22:16   #2
NeatElves
YTDB Dev
 
Аватар для NeatElves
 
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
NeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранита
По умолчанию

Как вариант подсказки - http://wiki.ytdb.ru/index.php/Spell_...pellFamilyMask )

Последний раз редактировалось NeatElves; 13.09.2010 в 22:19.
NeatElves вне форума   Ответить с цитированием
Старый 13.09.2010, 22:42   #3
fedr
Новичок
 
Аватар для fedr
 
Регистрация: 11.03.2010
Сообщений: 10
Сказал(а) спасибо: 13
Поблагодарили 4 раз(а) в 3 сообщениях
fedr На верном пути
По умолчанию

212 SpellFamilyFlagsLow uint
213 SpellFamilyFlagsHigh uint
214 SpellFamilyFlags2 uint

Получается отсюда.

Чего-то я совсем запутался:

Код:
bool SpellModifier::isAffectedOnSpell( SpellEntry const *spell ) const
{
    SpellEntry const *affect_spell = sSpellStore.LookupEntry(spellId);
    // False if affect_spell == NULL or spellFamily not equal
    if (!affect_spell || affect_spell->SpellFamilyName != spell->SpellFamilyName)
        return false;

    if (mask & spell->SpellFamilyFlags) // !!!
	return true;
	 
    return false;
}
Как я представляю: для каждой FamilyName есть группы спеллов (64). При этом у каждого спелла должен быть флаг причастности к одной из групп, и я полагал это и называется SpellFamilyFlags. Маска же содержит группы на которые распространяется действие данного эффекта и результат конъюкции будет >0, если флаг спелла содержится в ней... Поправьте, что не так %)
fedr вне форума   Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Каст триггерных спеллов virusav Баг-репорты 1 08.12.2010 16:54
Обработка эффектов спеллов virusav Баг-репорты 6 27.08.2010 10:50
[patch]Маски классов для квестов virusav Отвергнутые патчи 5 19.08.2010 22:26
Каст спеллов объектами virusav Запросы 9 30.05.2010 10:01
Реализация спеллов бомб и т.д frenk Баг-репорты 0 20.03.2010 00:32


Текущее время: 09:54. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot