YTDB

Вернуться   YTDB > Корзина / Trash > Архив MaNGOS (пока не было ru-mangos) > Ядро

Ядро Здесь форум по базе, но иногда случается, что вопросы пересекаются.

Но это форум не по ядру Мангос!

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.01.2010, 14:36   #1
punk
Guest
 
Сообщений: n/a
Unhappy Вопрос AURA_REMOVE

Уважаемые знатоки вам пишет человек который начал разбираться в коде и у него возник вопрос.
т.к. вики мангос.ру лежит, как собственно и он сам спрашиваю тут.
Собственно вопрос:
Кто может описать подробно про AURA_REMOVE какие есть зачем почему как и что делают
  Ответить с цитированием
Старый 24.01.2010, 14:45   #2
NeatElves
YTDB dev
 
Аватар для NeatElves
 
Регистрация: 05.11.2009
Сообщений: 5,920
Сказал(а) спасибо: 91
Поблагодарили 5,383 раз(а) в 4,847 сообщениях
NeatElves Репутация неоспоримаNeatElves Репутация неоспоримаNeatElves Репутация неоспоримаNeatElves Репутация неоспоримаNeatElves Репутация неоспоримаNeatElves Репутация неоспоримаNeatElves Репутация неоспоримаNeatElves Репутация неоспоримаNeatElves Репутация неоспоримаNeatElves Репутация неоспоримаNeatElves Репутация неоспорима
По умолчанию

http://udbwiki.webhop.net/index.php/Main_Page
NeatElves вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 24.01.2010, 14:59   #3
punk
Guest
 
Сообщений: n/a
По умолчанию

только там по базе wiki если я не ошибаюсь.
  Ответить с цитированием
Старый 24.01.2010, 15:11   #4
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 06.11.2009
Сообщений: 677
Сказал(а) спасибо: 592
Поблагодарили 690 раз(а) в 289 сообщениях
Konctantin Великолепный пример подражанияKonctantin Великолепный пример подражанияKonctantin Великолепный пример подражанияKonctantin Великолепный пример подражанияKonctantin Великолепный пример подражанияKonctantin Великолепный пример подражания
По умолчанию

Какие есть? (режимы)
Код:
enum AuraRemoveMode
{
    AURA_REMOVE_BY_DEFAULT,
    AURA_REMOVE_BY_STACK,                                   // at replace by similar aura
    AURA_REMOVE_BY_CANCEL,
    AURA_REMOVE_BY_DISPEL,
    AURA_REMOVE_BY_DEATH,
    AURA_REMOVE_BY_DELETE,                                  // use for speedup and prevent unexpected effects at player logout/pet unsummon (must be used _only_ after save), delete.
};
вот тут прочитать можно кое что про "что делает", пройдитесь по коду, там вроде нормально прокомментировано:
Код:
void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode)
{
    Aura* Aur = i->second;
    SpellEntry const* AurSpellInfo = Aur->GetSpellProto();

    Aur->UnregisterSingleCastAura();

    // remove from list before mods removing (prevent cyclic calls, mods added before including to aura list - use reverse order)
    if (Aur->GetModifier()->m_auraname < TOTAL_AURAS)
    {
        m_modAuras[Aur->GetModifier()->m_auraname].remove(Aur);
    }

    // Set remove mode
    Aur->SetRemoveMode(mode);

    // if unit currently update aura list then make safe update iterator shift to next
    if (m_AurasUpdateIterator == i)
        ++m_AurasUpdateIterator;

    // some ShapeshiftBoosts at remove trigger removing other auras including parent Shapeshift aura
    // remove aura from list before to prevent deleting it before
    m_Auras.erase(i);

    // now aura removed from from list and can't be deleted by indirect call but can be referenced from callers

    // Statue unsummoned at aura remove
    Totem* statue = NULL;
    if(IsChanneledSpell(AurSpellInfo))
        if(Unit* caster = Aur->GetCaster())
            if(caster->GetTypeId()==TYPEID_UNIT && ((Creature*)caster)->isTotem() && ((Totem*)caster)->GetTotemType()==TOTEM_STATUE)
                statue = ((Totem*)caster);

    sLog.outDebug("Aura %u now is remove mode %d",Aur->GetModifier()->m_auraname, mode);
    if (mode != AURA_REMOVE_BY_DELETE)                      // not unapply if target will deleted
        Aur->ApplyModifier(false,true);

    if (Aur->_RemoveAura())
    {
        // last aura in stack removed
        if (mode != AURA_REMOVE_BY_DELETE && IsSpellLastAuraEffect(Aur->GetSpellProto(),Aur->GetEffIndex()))
            Aur->HandleSpellSpecificBoosts(false);
    }

    // If aura in use (removed from code that plan access to it data after return)
    // store it in aura list with delayed deletion
    if (Aur->IsInUse())
        m_deletedAuras.push_back(Aur);
    else
        delete Aur;

    if(statue)
        statue->UnSummon();

    // only way correctly remove all auras from list
    if( m_Auras.empty() )
        i = m_Auras.end();
    else
        i = m_Auras.begin();

}
Konctantin вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 24.01.2010, 15:42   #5
punk
Guest
 
Сообщений: n/a
По умолчанию

А в каком файле вы нашли
Код:
{
    AURA_REMOVE_BY_DEFAULT,
    AURA_REMOVE_BY_STACK,                                   // at replace by similar aura
    AURA_REMOVE_BY_CANCEL,
    AURA_REMOVE_BY_DISPEL,
    AURA_REMOVE_BY_DEATH,
    AURA_REMOVE_BY_DELETE,                                  // use for speedup and prevent unexpected effects at player logout/pet unsummon (must be used _only_ after save), delete.
};
  Ответить с цитированием
Старый 24.01.2010, 17:10   #6
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 06.11.2009
Сообщений: 677
Сказал(а) спасибо: 592
Поблагодарили 690 раз(а) в 289 сообщениях
Konctantin Великолепный пример подражанияKonctantin Великолепный пример подражанияKonctantin Великолепный пример подражанияKonctantin Великолепный пример подражанияKonctantin Великолепный пример подражанияKonctantin Великолепный пример подражания
По умолчанию

Unit.h
Konctantin вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по почте Mr.Grom Ядро 4 03.02.2010 23:34
Вопрос по зонам Dasexler Ядро 11 25.01.2010 12:17
[вопрос] Как повернуть го по вертикали ? NeatElves Ядро 2 20.01.2010 20:50


Текущее время: 05:29. Часовой пояс GMT +4.


YTDB - MaNGOS DataBase

Русский форум Мангос - официальный форум RMDC

Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума YTDB будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot
Punk's On-Air - Punk, Folk, Blues, Ska Bascinet - реконструкция denw IL-2 Training Книготорговая Компания «А-5» - художественная, учебная литература, скидки, опт и мелкий опт, доставка, дешево, низкие цены издательства