|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.
Повод для гордости. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
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. |
25.08.2010, 20:48 | #2 |
MaNGOS Dev
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
|
Это absorb
|
4 пользователя(ей) сказали cпасибо: |
27.08.2010, 18:52 | #3 |
Пользователь
Регистрация: 20.06.2010
Сообщений: 42
Сказал(а) спасибо: 4
Поблагодарили 5 раз(а) в 5 сообщениях
|
Пересмотрет снифы за дисца, всегда ноль в этом параметре, так что врядли абсорб.
|
27.08.2010, 19:44 | #4 |
Новичок
Регистрация: 08.03.2010
Сообщений: 13
Сказал(а) спасибо: 32
Поблагодарили 7 раз(а) в 6 сообщениях
|
Абсорб хила ? есть вообще такое ?
Последний раз редактировалось Lurker; 27.08.2010 в 19:50. |
27.08.2010, 19:54 | #6 |
Пользователь
Регистрация: 20.06.2010
Сообщений: 42
Сказал(а) спасибо: 4
Поблагодарили 5 раз(а) в 5 сообщениях
|
Действительно, спасибо!
Это дебаф который кидает Лорд Джараксус в ИК (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. |
Пользователь сказал cпасибо: | Vladimir (12.09.2010) |
12.09.2010, 00:29 | #7 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
В [10473]. Спасибо
В [10475] реализована SPELL_AURA_HEAL_ABSORB (301)
__________________
Так как устал объяснять знайте ICQ не пользуюсь Последний раз редактировалось Vladimir; 12.09.2010 в 01:47. |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[10473] Fix structure SMSG_SPELLHEALLOG for 3.5.5 | newsbot | CMaNGOS Commits | 2 | 22.09.2010 16:49 |