Тема: Спеллы
Показать сообщение отдельно
Старый 11.10.2014, 10:17   #1
Vai Konteh
Новичок
 
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Vai Konteh На верном пути
По умолчанию Спеллы

Подскажите, когда срабатывает спелл к примеру: безрассудство - ид1719,то я так понимаю ,что накладывается 3 ауры на игрока. Так вот как узнать в коде сервера выполняется ли они или узнать время выполнения?
В общем вот такая вот проблема, при срабатывании этого спелла мне удалось на 20% увеличить урон атакующему но как при окончании этого спелла вернуть базовое значение, если кто поможет с проблемой за ранее спасибо!
Код:
if (GetSpellProto()->Id == 1719)
{
    float minbasevalue, mindefferencevalue, minnewbasevalue;
    if(target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT))
    {
        SpellAuraHolder* holder = target->GetSpellAuraHolder(1719);
        Unit::AttackerSet attacker = target->getAttackers();
        for(Unit::AttackerSet::iterator itra = attacker.begin();itra != attacker.end(); ++itra)
        {
            minbasevalue = (*itra)->GetFloatValue(UNIT_FIELD_MINDAMAGE);
            mindefferencevalue = minbasevalue * 2000 /100;
            minnewbasevalue = minbasevalue + mindefferencevalue;
            (*itra)->SetFloatValue(UNIT_FIELD_MINDAMAGE, minnewbasevalue);
            if(!holder)
            {
                (*itra)->SetFloatValue(UNIT_FIELD_MINDAMAGE, minbasevalue);
                break;
            }
        }
    }
}

Последний раз редактировалось Konctantin; 21.10.2014 в 19:00. Причина: code tag
Vai Konteh вне форума   Ответить с цитированием