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)
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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


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


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


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