Ru-MaNGOS

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

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

Патчи Если кто-то хочет выложить не свой готовый патч - не забудьте указать автора и источник.

Если кто-то хочет задать вопрос по патчу - велкам.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2012, 13:20   #1
Astoria
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 40
Сказал(а) спасибо: 12
Поблагодарили 4 раз(а) в 4 сообщениях
Astoria На верном пути
По умолчанию [patch/dev] Deathbringer's Will

Сильно не пинайте. Мой первый опыт программирования на мангосе, да и программирования вовсе.
Есть итем Deathbringer's Will со спелом Icecrown 25 Heroic Melee Trinket c дамми аурой. Написал следущее:
PHP код:
/*
600/700     Strength        71484/71561
1200/1400     Attack Power    71486/71558
600/700     Agility            71485/71556
600/700     Critical Strike    71491/71559
600/700     Haste Rating    71492/71560
*/
case 71562:
{
    
uint32 spell_id 0;
    switch(
target->getClass())
    {
        case 
CLASS_WARRIOR:
        case 
CLASS_DEATH_KNIGHT:
        case 
CLASS_PALADIN:
            switch(
urand(1,3))
            {case 
1spell_id 71561; break;case 2spell_id 71559; break;case 3spell_id 71560; break;}            }
            break;
        case 
CLASS_ROGUE:
        case 
CLASS_SHAMAN:
            switch(
urand(1,3))
            {case 
1spell_id 71558; break;case 2spell_id 71556; break;case 3spell_id 71560; break;}
            break;
        case 
CLASS_HUNTER:
            switch(
urand(1,3))
            {case 
1spell_id 71558; break;case 2spell_id 71559; break;case 3spell_id 71556; break;}
            break;
        case 
CLASS_DRUID:
            switch(
urand(1,3))
            {case 
1spell_id 71561; break;case 2spell_id 71556; break;case 3spell_id 71560; break;}
            break;
    }
    
target->CastSpell(targetspell_idtrue);
    return;

Но как понятно, она работает только при apply ауры. Как сделать так чтобы работала от прока спела?
Astoria вне форума   Ответить с цитированием
Старый 13.01.2012, 14:40   #2
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Эту штуку надо засунуть в HandleDummyAuraProc, а не в HandleAuraDummy, также по хорошему добавить запись на нее в таблицу spell_proc_event.
Amaru вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Astoria (13.01.2012)
Старый 13.01.2012, 14:51   #3
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

кроме того, там еще надо сильно мудрить с кулдауном а триггерные спеллы брать не по классам а по типам энергии... нормальную реализацию делал SeT, можно поискать в R2.
rsa вне форума   Ответить с цитированием
Старый 13.01.2012, 15:32   #4
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Спеллы надо брать с вовпедии, кулдауны вручную вешать на каждый триггер спелл, возможный для класса, иначе будет по 3 прока висеть... и выходить из обработчика ретурном.
Amaru вне форума   Ответить с цитированием
Старый 13.01.2012, 17:34   #5
Astoria
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 40
Сказал(а) спасибо: 12
Поблагодарили 4 раз(а) в 4 сообщениях
Astoria На верном пути
По умолчанию

Я руководствовался этим http://www.wowwiki.com/Deathbringer's_Will

Цитата:
триггерные спеллы брать не по классам а по типам энергии
Код:
The transformations the trinket provides are random, last 30 seconds each, and vary between classes.
Тут рандом кажется более логичным, кроме одного случая (формы друидов).

Цитата:
нормальную реализацию делал SeT, можно поискать в R2.
Посмотрю если дело будет совсем плохо, очень уж хочется сделать самому.

Последний раз редактировалось Astoria; 13.01.2012 в 18:05.
Astoria вне форума   Ответить с цитированием
Старый 13.01.2012, 18:36   #6
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Astoria Посмотреть сообщение
Тут рандом кажется более логичным, кроме одного случая (формы друидов).
вот именно. на друидах-то все колом и становится.

Цитата:
Сообщение от Astoria Посмотреть сообщение
Посмотрю если дело будет совсем плохо, очень уж хочется сделать самому.
вы бы бросили уже изобретенные велосипеды изобретать. действующих разработчиков (даже самого начального уровня) под мангос остались считанные единицы, а еще нерешенных (совсем или частями проблем) - немеряно, всем хватит по самые ушки.
попробуйте вон хоть один issue из R2 решить - вот то будет дело, а решать проблему которую решали уже раз 10 минимум (гугль дает минимум 10 разных кодов) - как-то тоскливо.
rsa вне форума   Ответить с цитированием
Старый 13.01.2012, 19:29   #7
Astoria
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 40
Сказал(а) спасибо: 12
Поблагодарили 4 раз(а) в 4 сообщениях
Astoria На верном пути
По умолчанию

Цитата:
вы бы бросили уже изобретенные велосипеды изобретать. действующих разработчиков (даже самого начального уровня) под мангос остались считанные единицы, а еще нерешенных (совсем или частями проблем) - немеряно, всем хватит по самые ушки.
Читайте второе предложение #1. Мне сразу лезть прикручивать велосипеды? Или придумать как обходить трабл с опкодами на кате?
Цитата:
попробуйте вон хоть один issue из R2 решить - вот то будет дело
Ваш форк меня мало интересует. И это не его форум.
Astoria вне форума   Ответить с цитированием
Старый 13.01.2012, 20:00   #8
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Astoria Посмотреть сообщение
Читайте второе предложение #1. Мне сразу лезть прикручивать велосипеды? Или придумать как обходить трабл с опкодами на кате?
попробуйте. хотя лично я в этом не вижу совсем никакого трабла, но если вы хотите сами изобретать себе трудности, а потом их героически преодолевать - пробуйте.
Цитата:
Сообщение от Astoria Посмотреть сообщение
Ваш форк меня мало интересует. И это не его форум.
это ваше личное дело. у кого некрофилия, у кого нарциссизм, у кого хуже. тем более судя по письмам, вам не то что решать эти проблемы, понимать их еще рановато будет. идите на гетмангос, там сейчас как раз просто нашествие спамботов и вопросчиков такого уровня.
rsa вне форума   Ответить с цитированием
Старый 13.01.2012, 20:25   #9
Astoria
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 40
Сказал(а) спасибо: 12
Поблагодарили 4 раз(а) в 4 сообщениях
Astoria На верном пути
По умолчанию

Цитата:
идите на гетмангос
В таком случае и я вам вправе указать направление дальнейшего развития. Поставте свой форум, и устраивайте демагогии там.
Astoria вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
virusav (13.01.2012)
Старый 13.01.2012, 20:46   #10
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Опять пиар mangosR2
zergtmn вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
virusav (13.01.2012)
Старый 13.01.2012, 20:56   #11
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Отсутствие активности на чистом мангосе провоцирует подобные высказывания (о сторонних репозитариях).
virusav вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Mayss (14.01.2012), rsa (13.01.2012)
Старый 13.01.2012, 21:12   #12
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от zergtmn Посмотреть сообщение
Опять пиар mangosR2
и даже здесь пиар видите?!! хотя конечно, в сравнении с эпохальными достижениями, имеющимися в главной ветке в крайние полгода, даже упоминание про возню пионеров на вовж...е выглядит мощным пиаром
так что можно априори считать любое мое сообщение пиаром R2. ибо я, в отличие от, еще не сдох

Добавлено через 14 минут
Цитата:
Сообщение от Astoria Посмотреть сообщение
В таком случае и я вам вправе указать направление дальнейшего развития. Поставте свой форум, и устраивайте демагогии там.
По факту оно так и есть. Суточный траффик комментариев на гитхабе (не буду говорить где) уже давно превышает месячный траффик на этом форуме. Правда на 6 языках
Все, кому еще интересен вопрос развития мангоса (именно мангоса, а не вопрос поднятия ЧСВ отдельных членов mangos team) давно уже перешли на другие площадки, и хорошо если не на ТС.
rsa вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Mayss (14.01.2012)
Старый 14.01.2012, 07:56   #13
Mayss
Ученый
 
Аватар для Mayss
 
Регистрация: 08.03.2010
Адрес: Россия, Сибирь, Новокузнецк
Сообщений: 137
Сказал(а) спасибо: 194
Поблагодарили 19 раз(а) в 13 сообщениях
Mayss На лучшее можно только надеяться...
Отправить сообщение для Mayss с помощью Skype™
По умолчанию

Этот "холивар" по моему всегда будет на ru-mangos, ну и что с того что не все пошли по одному пути развития, т.к основная ветка проекта просто не развивается как раньше, когда был Владимир, видно ему одному только это нужно было...
Mayss вне форума   Ответить с цитированием
Старый 15.01.2012, 22:15   #14
Astoria
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 40
Сказал(а) спасибо: 12
Поблагодарили 4 раз(а) в 4 сообщениях
Astoria На верном пути
По умолчанию

Конечный вариант, проверил - работает.

Код:
diff --git a/src/game/UnitAuraProcHandler.cpp b/src/game/UnitAuraProcHandler.cpp
index f56885e..052bfaa 100644
--- a/src/game/UnitAuraProcHandler.cpp
+++ b/src/game/UnitAuraProcHandler.cpp
@@ -1004,6 +1004,45 @@ SpellAuraProcResult Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura
                     }
                     break;
                 }
+				case 71519:
+				case 71562:
+				{
+					if(((Player*)this)->HasSpellCooldown(dummySpell->Id))
+						return SPELL_AURA_PROC_FAILED;
+
+					switch(getClass())
+					{
+						case CLASS_WARRIOR:
+						case CLASS_DEATH_KNIGHT:
+						case CLASS_PALADIN:
+						{
+							uint32 proc_spells[] = {71491, 71492, 71484, 71559, 71560, 71561};
+							triggered_spell_id = (dummySpell->Id) == 71519 ? proc_spells[urand(0,2)] : proc_spells[urand(3,5)];
+							break;
+						}
+						case CLASS_ROGUE:
+						case CLASS_SHAMAN:
+						{
+							uint32 proc_spells[] = {71485, 71486, 71492, 71556, 71558, 71560};
+							triggered_spell_id = (dummySpell->Id == 71519) ? proc_spells[urand(0,2)] : proc_spells[urand(3,5)];
+							break;
+						}
+						case CLASS_HUNTER:
+						{
+							uint32 proc_spells[] = {71485, 71486, 71491, 71556, 71558, 71559};
+							triggered_spell_id = (dummySpell->Id) == 71519 ? proc_spells[urand(0,2)] : proc_spells[urand(3,5)];
+							break;
+						}
+						case CLASS_DRUID:
+						{
+							uint32 proc_spells[] = {71485, 71492, 71484, 71556, 71560, 71561};
+							triggered_spell_id = (dummySpell->Id) == 71519 ? proc_spells[urand(0,2)] : proc_spells[urand(3,5)];
+							break;
+						}						
+					}
+					((Player*)this)->AddSpellCooldown(dummySpell->Id, 0, time(NULL) + cooldown);
+					break;
+				}
             }
             break;
         }
Вложения
Тип файла: patch deathbringers_will.patch (1.8 Кб, 3 просмотров)

Последний раз редактировалось Astoria; 15.01.2012 в 22:18.
Astoria вне форума   Ответить с цитированием
Старый 15.01.2012, 23:45   #15
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Работать конечно будет, но по логике проков - кулдаун устанавливается не на ауру, которая от которой прокает, а на спелл, который кастуется
Возможно даже если прокнуть триню, потом ее снять и одеть, то дамми аура не повесится, т.к. будет на кд
Amaru вне форума   Ответить с цитированием
Старый 16.01.2012, 06:47   #16
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Хороший пример велосипеда, изобретением которого хвастаться не надо. 1) кулдаун на 71519/ вешать бессмысленно, по крайней мере таким образом. почему - изучаем сами, поскольку учиться на чужих ошибках не хотим. 2) логика перебора спеллов неверна для шамана (в ... спеках) пала (в 1 спеке) друида (в ... обликах). почему - опять же изучаем сами. 3) результат стака трансформов на чистом мангосе приведет к потере оригинального вида, но это уже отступление, тут никому не интересное.
rsa вне форума   Ответить с цитированием
Старый 16.01.2012, 17:17   #17
Astoria
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 40
Сказал(а) спасибо: 12
Поблагодарили 4 раз(а) в 4 сообщениях
Astoria На верном пути
По умолчанию

А откуда данные о том, как выбираются спеллы в зависимости от спека? Я сомневаюсь что на офе кто то бы отдал волю кастерам, чтобы проверить то, что прокать будет только хаст. Дайте пруф.
Astoria вне форума   Ответить с цитированием
Ответ


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

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



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


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