Показать сообщение отдельно
Старый 01.06.2010, 10:14   #6
Prefect
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
Unit.cpp - HandleDummyAuraProc
прокаем ауру, висящую на мече, от кастов, каст игрока в данном случае будет procSpell, и ничего не мешает задать маску в spell_proc_event для конкретных спеллов и написать что-то вроде
Код:
            // Dancing Rune Weapon
            if (dummySpell->Id == 49028)
            {
                // 1 dummy aura for dismiss rune blade
                if (effIndex!=2)
                    return false;
                
                if (!pVictim)
                    return false;

                if (!procSpell)
                    return false;

                Unit * caster = triggeredByAura->GetCaster();
                if (!caster || caster != this)
                    return false;

                Unit * rune_weapon = caster->GetPet();
                if (!rune_weapon)
                    return false;

                rune_weapon->CastSpell(caster->getVictim(), procSpell->Id, true);
                break;
            }
На скорую руку накатал как пример - возможно где-то лишние или недостающие проверки
Попробывал сделать так, оружие меня игнорирует

Может что не так в табличке с проками?
Там изначально было в поле "procFlags" <65552>, так и должно быть? <65536> + <16>, тоесть PROC_FLAG_DODGE и PROC_FLAG_CRIT_SPELL, или я что-то не так понял?
В "ProcEx" <65536>, тоесть PROC_EX_EX_TRIGGER_ALWAYS - ну тут вроде верно.

Как я понимаю SpellFamilyMask из DBC брать, посмотрел, поля нашол , дальше так и заполнить 0-1-1 в таблицу ?

И ещё вопрос можно ли сделать через код, есть сильная разница?
Я имею введу дюжину подобных условий...
Код:
				if(procSpell && procSpell->Id == H_STRIKE)
				{
					rune_weapon->CastSpell(caster->getVictim(), procSpell->Id, true);
				}
Так просто глазам приятнее, и понятнее.

Последний раз редактировалось Prefect; 01.06.2010 в 11:03.
  Ответить с цитированием