Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Патчи > Принятые патчи

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

Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.

Повод для гордости.

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.08.2010, 20:10   #1
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию [10473][fix] SMSG_SPELLHEALLOG

Совершенно случайно обнаружил устаревшую структуру опкода.
Код:
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index db34012..6d53aad 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -5915,6 +5915,7 @@ void Unit::SendHealSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, uint32
     data << uint32(SpellID);
     data << uint32(Damage);
     data << uint32(OverHeal);
+    data << uint32(0);                                      // unk
     data << uint8(critical ? 1 : 0);
     data << uint8(0);                                       // unused in client?
     SendMessageToSet(&data, true);
Или pastebin: http://paste2.org/p/964008


Оказывается, еще и исправляет отображение критов хилящих спеллов (очевидно, почему), но что это за uint32 — не знаю. В сниффах с офа там везде нули.

Вот код, отвечающий за обработку этого пакета в клиенте: (спасибо TOM_RUS)
Код:
//----- (006D3C30) --------------------------------------------------------
signed int __usercall CombatLog__HandleSpellHealLog<eax>(int a1<eax>, int a2)
{
  int v2; // esi@1
  int v3; // eax@1
  signed int result; // eax@2
  int v5; // edi@3
  int v6; // esi@3
  int v7; // eax@4
  char v8; // [sp+8h] [bp-2D8h]@1
  int v9; // [sp+18h] [bp-2C8h]@3
  unsigned int v10; // [sp+24h] [bp-2BCh]@9
  DWORD v11; // [sp+2B0h] [bp-30h]@1
  DWORD v12; // [sp+2B4h] [bp-2Ch]@7
  int v13; // [sp+2B8h] [bp-28h]@1
  DWORD v14; // [sp+2BCh] [bp-24h]@9
  int v15; // [sp+2C0h] [bp-20h]@1
  int v16; // [sp+2C4h] [bp-1Ch]@1
  WGUID objectGuid; // [sp+2C8h] [bp-18h]@1
  int v18; // [sp+2D0h] [bp-10h]@1
  DWORD v19; // [sp+2D4h] [bp-Ch]@7
  DWORD v20; // [sp+2D8h] [bp-8h]@1
  char v21; // [sp+2DFh] [bp-1h]@1

  v2 = a1;
  CDataStore__GetWowGUID(a1, (int)&objectGuid);
  CDataStore__GetWowGUID(v2, (int)&v11);
  v18 = 0;
  CDataStore__GetInt32(v2, (int)&v18);
  v15 = 0;
  CDataStore__GetInt32(v2, (int)&v15);
  v13 = 0;
  CDataStore__GetInt32(v2, (int)&v13);
  v20 = 0;
  CDataStore__GetInt32(v2, (int)&v20);
  v21 = 0;
  CDataStore__GetInt8(v2, (int)&v21);
  LOBYTE(v16) = v21 != 0;
  v21 = 0;
  CDataStore__GetInt8(v2, (int)&v21);
  WowClientDB__GetRow(&v8);
  ClientDb__GetLocalizedRow(v18, &v8);
  if ( v3 )
  {
    v6 = v15;
    v5 = v20;
    if ( !(v9 & 0x100) )
    {
      v7 = (int)ClntObjMgrGetObjectPtr(objectGuid, TYPEMASK_UNIT);
      if ( v7 )
      {
        if ( !v6 )
        {
          if ( v5 )
          {
            v19 = v11;
            v20 = v12;
            sub_71F990(v7, (int)&v19, 10, (int)&v8, 1);
          }
        }
      }
      v19 = objectGuid.guid_low;
      v20 = objectGuid.guid_high;
      sub_513480((int)&v19, v6, v16);
    }
    v14 = v11;
    v20 = objectGuid.guid_high;
    v19 = objectGuid.guid_low;
    v15 = v12;
    sub_751F70((int)&v14, (int)&v19, v18, v6, v13, v5, v16, (v10 >> 25) & 1, a2);
    nullsub_3();
    result = 1;
  }
  else
  {
    nullsub_3();
    result = 1;
  }
  return result;
}
// 4CFD20: using guessed type double __stdcall ClientDb__GetLocalizedRow(_DWORD, _DWORD);

Последний раз редактировалось LordJZ; 25.08.2010 в 20:46.
LordJZ вне форума  
3 пользователя(ей) сказали cпасибо:
Fear (25.08.2010), KiriX (25.08.2010), Vladimir (12.09.2010)
Старый 25.08.2010, 20:48   #2
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Это absorb
zergtmn вне форума  
4 пользователя(ей) сказали cпасибо:
KiriX (25.08.2010), Konctantin (27.08.2010), LordJZ (25.08.2010), Vladimir (12.09.2010)
Старый 27.08.2010, 18:52   #3
Fmut
Пользователь
 
Регистрация: 20.06.2010
Сообщений: 42
Сказал(а) спасибо: 4
Поблагодарили 5 раз(а) в 5 сообщениях
Fmut На верном пути
По умолчанию

Пересмотрет снифы за дисца, всегда ноль в этом параметре, так что врядли абсорб.
Fmut вне форума  
Старый 27.08.2010, 19:44   #4
Lurker
Новичок
 
Регистрация: 08.03.2010
Сообщений: 13
Сказал(а) спасибо: 32
Поблагодарили 7 раз(а) в 6 сообщениях
Lurker На верном пути
По умолчанию

Абсорб хила ? есть вообще такое ?

Последний раз редактировалось Lurker; 27.08.2010 в 19:50.
Lurker вне форума  
Старый 27.08.2010, 19:51   #5
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Аура 301
zergtmn вне форума  
Пользователь сказал cпасибо:
ExC0tiC (28.08.2010)
Старый 27.08.2010, 19:54   #6
Fmut
Пользователь
 
Регистрация: 20.06.2010
Сообщений: 42
Сказал(а) спасибо: 4
Поблагодарили 5 раз(а) в 5 сообщениях
Fmut На верном пути
По умолчанию

Действительно, спасибо!

Это дебаф который кидает Лорд Джараксус в ИК (2й босс).
Код:
ID - 67051 Incinerate Flesh / RU: Испепеление плоти
-------------------------- Description --------------------------
EN: Burns the flesh off your bones! Absorbs the next $s1 healing received and decreases damage dealt by $66243s1% for $d.  If Incinerate Flesh is not removed before it expires it will cause a Burning Inferno.
RU: Ваша плоть обугливается у вас на глазах! Следующие $s1 ед. получаемого вами исцеления будет поглощено, а наносимый урон будет снижен на $66243s1% в течение $d. Если "Испепеление плоти" не будет снято до окончания времени действия, оно вызовет эффект "Пылающая геенна".
-------------------------- BuffDescription ----------------------
EN: Absorbs healing received.
Reduces damage dealt by $66243s1%.
Can cause a Burning Inferno.
RU: Получаемое исцеление поглощается.
Снижает наносимый урон на $66243s1%.
Может вызвать "Пылающую преисподнюю".
-----------------------------------------------------------------
SpellClass = 0 (SPELLCLASS_GENERIC)
InterruptFlags = 47 (SPELL_INTERRUPT_FLAG_MOVE, SPELL_INTERRUPT_FLAG_DAMAGE, SPELL_INTERRUPT_INTERRUPT, SPELL_INTERRUPT_FLAG_UNKNOWN_8, PROC_FLAG_KILLED)
AuraInterruptFlags = 4718592 (524288, 4194304)
IconID = 3173, ActiveIconID = 0, SpellVisual = 14089
Category = 1152
Speed = 20,00
SchoolMask = 4 (SCHOOL_FIRE)
SpellLevel = 0, BaseLevel = 0, MaxLevel = 0
ProcFlags = $00000000, ProcChance = 101, ProcCharges = 0
CastTime = 0 (idx = 1, unk_1 = 0, unk_1 = 0)
Cooldown = 0, CooldownCategory = 4000
Duration = 12000
Range = 0 - 50000
Attributes = 2048 ($800)
AttributesEx = 136 ($88)
AttributesEx2 = 4 ($4)
AttributesEx3 = 256 ($100)
SpellDifficulty = 304
-----------------------------------------------------------------
SpellEffect: (6) SPELL_EFFECT_APPLY_AURA, idx = 0
Target A (TARGET_SINGLE_ENEMY), Target B (TARGET_CUSTOM)
EffectBasePoints = 84999 + 1
EffectMiscValue = 127
   Aura (301) SPELL_AURA_UNKNOWN_301

SpellEffect: (6) SPELL_EFFECT_APPLY_AURA, idx = 1
Target A (TARGET_SINGLE_ENEMY), Target B (TARGET_CUSTOM)
EffectTriggerSpell = 66243
EffectBasePoints = -1 + 1
EffectMiscValue = 34801
   Aura (284) SPELL_AURA_UNKNOWN_284

SpellEffect: (6) SPELL_EFFECT_APPLY_AURA, idx = 2
Target A (TARGET_SINGLE_ENEMY), Target B (TARGET_CUSTOM)
EffectAuraPeriod = 12000
EffectTriggerSpell = 66242
   Aura (23) SPELL_AURA_PERIODIC_TRIGGER_SPELL

Последний раз редактировалось Fmut; 27.08.2010 в 20:02.
Fmut вне форума  
Пользователь сказал cпасибо:
Vladimir (12.09.2010)
Старый 12.09.2010, 00:29   #7
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

В [10473]. Спасибо

В [10475] реализована SPELL_AURA_HEAL_ABSORB (301)
__________________
Так как устал объяснять знайте ICQ не пользуюсь

Последний раз редактировалось Vladimir; 12.09.2010 в 01:47.
Vladimir вне форума  
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10473] Fix structure SMSG_SPELLHEALLOG for 3.5.5 newsbot CMaNGOS Commits 2 22.09.2010 16:49


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


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