Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Принятые патчи (http://mangos.ytdb.ru/forumdisplay.php?f=5)
-   -   [10504][fix bug] урон петом по игроку на нейтральной територии (http://mangos.ytdb.ru/showthread.php?t=2386)

Chipleo 11.09.2010 15:53

[10504][fix bug] урон петом по игроку на нейтральной територии
 
Код:

@@ -533,7 +533,7 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
 
    //You don't lose health from damage taken from another player while in a sanctuary
    //You still see it in the combat log though
-    if(pVictim != this && GetTypeId() == TYPEID_PLAYER && pVictim->GetTypeId() == TYPEID_PLAYER)
+    if(pVictim != this && GetCharmerOrOwnerPlayerOrPlayerItself() && pVictim->GetCharmerOrOwnerPlayerOrPlayerItself()) //kia
    {
        const AreaTableEntry *area = GetAreaEntryByAreaID(pVictim->GetAreaId());
        if(area && area->flags & AREA_FLAG_SANCTUARY)      //sanctuary


SeT 11.09.2010 17:25

Вносить вместе с комментарием?
И в мангосе, в этой функции нет такого кода.

Chipleo 16.09.2010 17:40

Код:

uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDamage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask, SpellEntry const *spellProto, bool durabilityLoss)
{
    if (!pVictim->isAlive() || pVictim->IsTaxiFlying() || pVictim->GetTypeId() == TYPEID_UNIT && ((Creature*)pVictim)->IsInEvadeMode())
        return 0;

    //You don't lose health from damage taken from another player while in a sanctuary
    //You still see it in the combat log though
    if(pVictim != this && GetTypeId() == TYPEID_PLAYER && pVictim->GetTypeId() == TYPEID_PLAYER)
    {
        const AreaTableEntry *area = GetAreaEntryByAreaID(pVictim->GetAreaId());
        if(area && area->flags & AREA_FLAG_SANCTUARY)      //sanctuary
            return 0;
    }

- это оригинальный код. Мой патч взят из модифицированого кода с добавлнением логов боя и т.д., суть бага остается неизменной: например в Шатрате можно натравить пета на вражеского игрока и игрок не может ничего с петом сделать. А комментарий не нужен, я оставляю его чтобы знать что мною изменено и не соответствует основному коду.

Vladimir 19.09.2010 01:26

GetCharmerOrOwnerPlayerOrPlayerItself ущет указатель по guid который для проверки совершенно не нужен. Там есть специально функция IsCharmerOrOwnerPlayerOrPlayerItself которая не ищет указатель и ограничивается тестом guid-ов.

Добавил в [10504] с этим изменением во всех местах где эта проверка делается (3). Спасибо.

В mangos-0.12 перенесу при следующем моем проходе по переносу свежих коммитов из master.


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

ru-mangos.ru - Русское сообщество MaNGOS