|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.
Повод для гордости. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
25.08.2010, 20:10 | #1 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
[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); Оказывается, еще и исправляет отображение критов хилящих спеллов (очевидно, почему), но что это за 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. |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[10473] Fix structure SMSG_SPELLHEALLOG for 3.5.5 | newsbot | CMaNGOS Commits | 2 | 22.09.2010 16:49 |