Ru-MaNGOS

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

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

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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.06.2012, 19:25   #1
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию [12018] [patch][spell=51519]Death Knight Initiate Visual

Спелл 51519 должен менять модель в зависимости от расы и пола.
Патч во вложении.
Дублирую:
Код:
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 4e88889..848198b 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -7338,6 +7338,34 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx)
 
                     return;
                 }
+                case 51519:                                 // Death Knight Initiate Visual
+                {
+                    if (!unitTarget)
+                        return;
+
+                    uint8 gender = unitTarget->getGender();
+                    uint8 race = unitTarget->getRace();
+                    uint32 spellId = 0;
+                    switch (race)
+                    {
+                        case RACE_HUMAN:            spellId = (gender == GENDER_MALE ? 51520 : 51534); break;
+                        case RACE_DWARF:            spellId = (gender == GENDER_MALE ? 51538 : 51537); break;
+                        case RACE_NIGHTELF:         spellId = (gender == GENDER_MALE ? 51535 : 51536); break;
+                        case RACE_GNOME:            spellId = (gender == GENDER_MALE ? 51539 : 51540); break;
+                        case RACE_DRAENEI:          spellId = (gender == GENDER_MALE ? 51541 : 51542); break;
+                        case RACE_ORC:              spellId = (gender == GENDER_MALE ? 51543 : 51544); break;
+                        case RACE_UNDEAD:           spellId = (gender == GENDER_MALE ? 51549 : 51550); break;
+                        case RACE_TAUREN:           spellId = (gender == GENDER_MALE ? 51547 : 51548); break;
+                        case RACE_TROLL:            spellId = (gender == GENDER_MALE ? 51546 : 51545); break;
+                        case RACE_BLOODELF:         spellId = (gender == GENDER_MALE ? 51551 : 51552); break;
+                        default:
+                            return;
+                    }
+                    if (spellId)
+                        unitTarget->CastSpell(unitTarget, spellId, true);
+
+                    return;
+                }
                 case 51770:                                 // Emblazon Runeblade
                 {
                     Unit* caster = GetAffectiveCaster();
Вложения
Тип файла: diff SPELL_DEATH_KNIGHT_INITIATE_VISUAL.diff (2.2 Кб, 20 просмотров)
virusav вне форума  
5 пользователя(ей) сказали cпасибо:
Astoria (19.06.2012), Den (19.06.2012), partizanes (19.06.2012), rsa (19.06.2012), schmoozerd (24.06.2012)
Старый 20.06.2012, 20:16   #2
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

Small note: with this implemented we need to remove the hacks from the sd2 scripts.
I assume you tested without them?
schmoozerd вне форума  
Старый 21.06.2012, 09:10   #3
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Я тестировал на чистом ядре, без СД2.
I tested it on a clean kernel without SD2.
virusav вне форума  
Старый 21.06.2012, 19:55   #4
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

Actualy this patch seems to be wrong:

Код:
    // equal to player Race field, but creature does not have race
    SetByteValue(UNIT_FIELD_BYTES_0, 0, 0);
NPCs have no race, hence the fix won't work!
schmoozerd вне форума  
Старый 22.06.2012, 09:37   #5
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Если спелл кастует игрок, то меняем условие
Код:
if (!unitTarget)
на
Код:
if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
virusav вне форума  
Старый 22.06.2012, 10:14   #6
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Цитата:
Сообщение от schmoozerd Посмотреть сообщение
Actualy this patch seems to be wrong:

Код:
    // equal to player Race field, but creature does not have race
    SetByteValue(UNIT_FIELD_BYTES_0, 0, 0);
NPCs have no race, hence the fix won't work!
Why then getRace is on Unit level ?
Amaru вне форума  
Старый 22.06.2012, 20:44   #7
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

maybe it was unclear in the beginning if npcs can have a race.
and it uses UNIT_FIELD_BYTES_1(0), so it is with some reason on unit-level.

About this patch.
I see no other way then to use the way sd2 handles this (by display-id) - which could be ported to mangos-code.
This would actually be nicer as it would then be a script-effect. But move something rather ugly to mangos.

Hence I think the ugly code is better left in sd2 even if it must be considered a hack there
schmoozerd вне форума  
Пользователь сказал cпасибо:
KiriX (23.06.2012)
Старый 23.06.2012, 01:05   #8
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Код:
struct CreatureDisplayInfoExtraEntry
{
    uint32 DisplayExtraId; // 0 m_ID CreatureDisplayInfoEntry::m_extendedDisplayInfoID
    uint32 Race; // 1 m_DisplayRaceID
You can get race by display id with extanded info

[Added]
In fact, in DBCStores.h exist special function for this:
Код:
MANGOS_DLL_SPEC uint32 GetCreatureModelRace(uint32 model_id);
__________________
Так как устал объяснять знайте ICQ не пользуюсь

Последний раз редактировалось Vladimir; 23.06.2012 в 01:21.
Vladimir вне форума  
4 пользователя(ей) сказали cпасибо:
KiriX (23.06.2012), lovepsone (23.06.2012), rsa (24.06.2012), schmoozerd (24.06.2012)
Старый 24.06.2012, 20:41   #9
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

In [12018] Thank you
schmoozerd вне форума  
2 пользователя(ей) сказали cпасибо:
KiriX (25.06.2012), Ranger (28.06.2012)
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[12018] Implement spell 51519 newsbot CMaNGOS Commits 0 24.06.2012 20:41
[11685] Death Knight T9 Melee 2P Bonus newsbot CMaNGOS Commits 0 27.06.2011 15:40
[11685][fix] Death Knight T9 Melee 2P Bonus Den Принятые патчи 1 27.06.2011 15:34
Реализация Death Knight T8 Melee 4P Bonus + упрощение расчетов бонусов от болезней ДК Warlord123 Патчи на рассмотрении 0 22.10.2010 19:01


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


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