Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Патчи (http://mangos.ytdb.ru/forumdisplay.php?f=6)
-   -   [patch/dev] Deathbringer's Will (http://mangos.ytdb.ru/showthread.php?t=5165)

Astoria 13.01.2012 13:20

[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 ауры. Как сделать так чтобы работала от прока спела?

Amaru 13.01.2012 14:40

Эту штуку надо засунуть в HandleDummyAuraProc, а не в HandleAuraDummy, также по хорошему добавить запись на нее в таблицу spell_proc_event.

rsa 13.01.2012 14:51

кроме того, там еще надо сильно мудрить с кулдауном а триггерные спеллы брать не по классам а по типам энергии... нормальную реализацию делал SeT, можно поискать в R2.

Amaru 13.01.2012 15:32

Спеллы надо брать с вовпедии, кулдауны вручную вешать на каждый триггер спелл, возможный для класса, иначе будет по 3 прока висеть... и выходить из обработчика ретурном.

Astoria 13.01.2012 17:34

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

Цитата:

триггерные спеллы брать не по классам а по типам энергии
Код:

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

Цитата:

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

rsa 13.01.2012 18:36

Цитата:

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

вот именно. на друидах-то все колом и становится.

Цитата:

Сообщение от Astoria (Сообщение 26066)
Посмотрю если дело будет совсем плохо, очень уж хочется сделать самому.

вы бы бросили уже изобретенные велосипеды изобретать. действующих разработчиков (даже самого начального уровня) под мангос остались считанные единицы, а еще нерешенных (совсем или частями проблем) - немеряно, всем хватит по самые ушки.
попробуйте вон хоть один issue из R2 решить - вот то будет дело, а решать проблему которую решали уже раз 10 минимум (гугль дает минимум 10 разных кодов) - как-то тоскливо.

Astoria 13.01.2012 19:29

Цитата:

вы бы бросили уже изобретенные велосипеды изобретать. действующих разработчиков (даже самого начального уровня) под мангос остались считанные единицы, а еще нерешенных (совсем или частями проблем) - немеряно, всем хватит по самые ушки.
Читайте второе предложение #1. Мне сразу лезть прикручивать велосипеды? Или придумать как обходить трабл с опкодами на кате?
Цитата:

попробуйте вон хоть один issue из R2 решить - вот то будет дело
Ваш форк меня мало интересует. И это не его форум.

rsa 13.01.2012 20:00

Цитата:

Сообщение от Astoria (Сообщение 26068)
Читайте второе предложение #1. Мне сразу лезть прикручивать велосипеды? Или придумать как обходить трабл с опкодами на кате?

попробуйте. хотя лично я в этом не вижу совсем никакого трабла, но если вы хотите сами изобретать себе трудности, а потом их героически преодолевать - пробуйте.
Цитата:

Сообщение от Astoria (Сообщение 26068)
Ваш форк меня мало интересует. И это не его форум.

это ваше личное дело. у кого некрофилия, у кого нарциссизм, у кого хуже. тем более судя по письмам, вам не то что решать эти проблемы, понимать их еще рановато будет. идите на гетмангос, там сейчас как раз просто нашествие спамботов и вопросчиков такого уровня.

Astoria 13.01.2012 20:25

Цитата:

идите на гетмангос
В таком случае и я вам вправе указать направление дальнейшего развития. Поставте свой форум, и устраивайте демагогии там.

zergtmn 13.01.2012 20:46

Опять пиар mangosR2 :(

virusav 13.01.2012 20:56

Отсутствие активности на чистом мангосе провоцирует подобные высказывания (о сторонних репозитариях).

rsa 13.01.2012 21:12

Цитата:

Сообщение от zergtmn (Сообщение 26071)
Опять пиар mangosR2 :(

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

Добавлено через 14 минут
Цитата:

Сообщение от Astoria (Сообщение 26070)
В таком случае и я вам вправе указать направление дальнейшего развития. Поставте свой форум, и устраивайте демагогии там.

По факту оно так и есть. Суточный траффик комментариев на гитхабе (не буду говорить где) уже давно превышает месячный траффик на этом форуме. Правда на 6 языках :)
Все, кому еще интересен вопрос развития мангоса (именно мангоса, а не вопрос поднятия ЧСВ отдельных членов mangos team) давно уже перешли на другие площадки, и хорошо если не на ТС.

Mayss 14.01.2012 07:56

Этот "холивар" по моему всегда будет на ru-mangos, ну и что с того что не все пошли по одному пути развития, т.к основная ветка проекта просто не развивается как раньше, когда был Владимир, видно ему одному только это нужно было...

Astoria 15.01.2012 22:15

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

Код:

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;
        }


Amaru 15.01.2012 23:45

Работать конечно будет, но по логике проков - кулдаун устанавливается не на ауру, которая от которой прокает, а на спелл, который кастуется
Возможно даже если прокнуть триню, потом ее снять и одеть, то дамми аура не повесится, т.к. будет на кд

rsa 16.01.2012 06:47

Хороший пример велосипеда, изобретением которого хвастаться не надо. 1) кулдаун на 71519/ вешать бессмысленно, по крайней мере таким образом. почему - изучаем сами, поскольку учиться на чужих ошибках не хотим. 2) логика перебора спеллов неверна для шамана (в ... спеках) пала (в 1 спеке) друида (в ... обликах). почему - опять же изучаем сами. 3) результат стака трансформов на чистом мангосе приведет к потере оригинального вида, но это уже отступление, тут никому не интересное.

Astoria 16.01.2012 17:17

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


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

ru-mangos.ru - Русское сообщество MaNGOS