Ru-MaNGOS

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

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

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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.11.2010, 15:00   #1
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию [10706]Манакорм[30326]

Описание: "Когда вы получаете ману при помощи заклинаний "Похищение маны" или "Жизнеотвод", ваш питомец получает 100% от полученной вами маны".
Жизнеотвод восстанавливает ману пета, а Похищение маны - нет.

Патч:
Код:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 3975e1e..42ba154 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -6879,6 +6879,10 @@ void Aura::PeriodicTick()
             if(gain_amount)
             {
                 int32 gain = pCaster->ModifyPower(power, gain_amount);
+                if (pCaster->GetTypeId() == TYPEID_PLAYER && spellProto->Id == 5138 && pCaster->HasSpell(30326))
+                    if (Unit* pPet = pCaster->GetPet())
+                        int32 temp = pPet->ModifyPower(power, gain_amount);
+                
                 target->AddThreat(pCaster, float(gain) * 0.5f, pInfo.critical, GetSpellSchoolMask(spellProto), spellProto);
             }
             break;
Второй вариант патча (с использованием вспомогательного спелла):
Код:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 320fef2..f6fa41c 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -6881,6 +6881,9 @@ void Aura::PeriodicTick()
             if(gain_amount)
             {
                 int32 gain = pCaster->ModifyPower(power, gain_amount);
+                if (pCaster->GetTypeId() == TYPEID_PLAYER && spellProto->Id == 5138 && pCaster->HasSpell(30326))
+                    pCaster->CastCustomSpell(pCaster, 32554, &gain_amount, NULL, NULL, true, NULL);
+
                 target->AddThreat(pCaster, float(gain) * 0.5f, pInfo.critical, GetSpellSchoolMask(spellProto), spellProto);
             }
             break;
virusav вне форума  
5 пользователя(ей) сказали cпасибо:
ANTOMA (10.11.2010), Den (07.11.2010), evilstar (07.11.2010), Insider42 (07.11.2010), KiriX (07.11.2010)
Старый 07.11.2010, 18:01   #2
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

только вот зачем там "int32 temp = "?
__________________
Если ты видишь это сообщение то ты просто обязан нажать "Спасибо"
Insider42 вне форума  
Старый 07.11.2010, 19:51   #3
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Раз от 'Жизнеотвода' работает, скорее всего - это должен быть прок, ну и модификация маны - какой-то из http://www.wowhead.com/search?q=Mana+Feed#spells
MaS0n вне форума  
Старый 07.11.2010, 20:48   #4
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Писал по образу и подобию строки
Код:
int32 gain = pCaster->ModifyPower(power, gain_amount);
Не знаю, как себя поведет сишник, если вызвать метод, который возвращает значение, без присваивания его в переменную.

Добавлено через 55 минут
Цитата:
Сообщение от MaS0n Посмотреть сообщение
Раз от 'Жизнеотвода' работает, скорее всего - это должен быть прок, ну и модификация маны - какой-то из http://www.wowhead.com/search?q=Mana+Feed#spells
Посмотрел спеллы жизнеотвода варлока, но не нашел в них прокфлагов, сплошные думми.
В SpellEffects.cpp есть блок обработки группы спеллов жизнеотвода, там же идет каст спелла 32553 с указанием количества передаваемой маны.
Для спеллов жизнеотвода использовался CastCustomSpell.

По идее, для спелла "Похищение маны" можно было сделать также через CastCustomSpell, но раз уж для кастера сделано через ModifyPower, то и для пета сделал точно также.

Решающий ответ за ядерщиками, как правильно.
virusav вне форума  
Старый 07.11.2010, 21:05   #5
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

ID - 32554 Mana Feed - Drain Mana
Effect 0: Id 30 (SPELL_EFFECT_ENERGIZE)
BasePoints = 1
Targets (5, 0) (TARGET_PET, NO_TARGET)
?
SeT вне форума  
Старый 07.11.2010, 21:44   #6
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Да, спелл 32554.
Об этом я и писал, что можно использовать его в CastCustomSpell, а можно, как в патче.

О правильности пусть судят разработчики.
virusav вне форума  
Старый 07.11.2010, 21:52   #7
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Если есть спелл, значит его надо использовать.
SeT вне форума  
Пользователь сказал cпасибо:
KiriX (07.11.2010)
Старый 07.11.2010, 23:47   #8
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Добавил в первый пост второй вариант патча, хотя мне первый больше нравится.
virusav вне форума  
Старый 08.11.2010, 01:21   #9
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от virusav Посмотреть сообщение
Добавил в первый пост второй вариант патча, хотя мне первый больше нравится.
Чувствую, ближе к снифам как раз второй вариант со спеллом и будет, спасибо
KiriX вне форума  
Старый 08.11.2010, 08:23   #10
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от virusav Посмотреть сообщение
Не знаю, как себя поведет сишник, если вызвать метод, который возвращает значение, без присваивания его в переменную.
это нормально, если результат вызываемой функции не нужен, можно не присваивать его никакой переменной.

То есть вместо
Код:
int32 temp = pPet->ModifyPower(power, gain_amount);
можно смело писать
Код:
pPet->ModifyPower(power, gain_amount);
Если результат возвращаемый ModifyPower() не нужен.
Йоха вне форума  
3 пользователя(ей) сказали cпасибо:
ANTOMA (10.11.2010), KiriX (08.11.2010), virusav (08.11.2010)
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10706] Implement talent 30326 for spell 5138. newsbot CMaNGOS Commits 0 09.11.2010 04:12


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


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