Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Отвергнутые патчи (http://mangos.ytdb.ru/forumdisplay.php?f=50)
-   -   Облик стремительной птицы (http://mangos.ytdb.ru/showthread.php?t=401)

xmolex 21.03.2010 07:45

Облик стремительной птицы
 
Я уже давно дружу с Mangos, но до сих пор никак не могу понять одной вещи, поэтому решил всетаки спросить:
Вот есть такой спелл: Облик стремительной птицы (http://ru.wowhead.com/?spell=40120), скорость в этой форме у персонажа не меняется. Эта ошибка уже наверное пол года, хотя я не могу сказать, что это неважный баг. Но суть не в этом. На getmangos.com есть патч, повышающий скорость до нужной.
Код:

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 18b4af6..e752927 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -256,7 +256,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
    &Aura::HandleNoImmediateEffect,                        //203 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE  implemented in Unit::CalculateMeleeDamage and Unit::SpellC
    &Aura::HandleNoImmediateEffect,                        //204 SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::SpellC
    &Aura::HandleNoImmediateEffect,                        //205 SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_DAMAGE  implemented in Unit::SpellCriticalDamageBonus
-    &Aura::HandleNULL,                                      //206 SPELL_AURA_MOD_SPEED_MOUNTED
+    &Aura::HandleAuraModIncreaseFlightSpeed,                //206 SPELL_AURA_MOD_SPEED_MOUNTED
    &Aura::HandleAuraModIncreaseFlightSpeed,                //207 SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED
    &Aura::HandleAuraModIncreaseFlightSpeed,                //208 SPELL_AURA_MOD_SPEED_FLIGHT, used only in spell: Flight Form (Passive)
    &Aura::HandleAuraModIncreaseFlightSpeed,                //209 SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index fbcf302..83bef21 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -10784,7 +10784,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
            if (IsMounted()) // Use on mount auras
                main_speed_mod  = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED);
            else            // Use not mount (shapeshift for example) auras (should stack)
-                main_speed_mod  = GetTotalAuraModifier(SPELL_AURA_MOD_SPEED_FLIGHT);
+                main_speed_mod  = GetTotalAuraModifier(SPELL_AURA_MOD_SPEED_FLIGHT) + GetTotalAuraModifier(SPELL_AURA_MOD_SPEED_MOUNTED);
            stack_bonus    = GetTotalAuraMultiplier(SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS);
            non_stack_bonus = (100.0f + GetMaxPositiveAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK))/100.0f;
            break;

Так вот сам вопрос. Патч ведь рабочий и вроде по коду нормальный. Но так как его не добавляют, то разумно предположить, что это хак. Либо офф команде не хватает людей, чтобы его заметить. Хотя за такое количество времени думаю его видели, поэтому скорее всего верно первое.
1) Если это хак, то как вы поняли, что это хак?
2) Кто, вообще, решает быть этому или не быть частью ядра?
3) Если допустим Vladimir добавит некий код в исходники, другие разработчики из сообщества наврятли будут его проверять. Или будут?
4) Тоесть, если ты хочешь, чтобы твой патч попал в проект, нужно не только его грамотно написать, но и указать на его кому-нибудь из сообщества? Или просто разработчиков, которые смотрят патчи других людей не так много, а вернее один Vladimir?

Mixnsk 21.03.2010 08:54

Кстати замечу что с патча 3.2, облик стремительной птицы может давать скорость 310% при наличии у вас хотя одного маунта 310%

xmolex 21.03.2010 09:00

Цитата:

Сообщение от Mixnsk (Сообщение 2754)
Кстати замечу что с патча 3.2, облик стремительной птицы может давать скорость 310% при наличии у вас хотя одного маунта 310%

Тоесть, поэтому это хак?

Fedia22 21.03.2010 10:42

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

Mixnsk 21.03.2010 10:56

Цитата:

Сообщение от xmolex (Сообщение 2756)
Тоесть, поэтому это хак?

Нет, я просто уточнил механику спела

xmolex 21.03.2010 10:58

Понимаете, я говорю сейчас не про русскоязычный форум, я говорю про весь проект. Я хотел бы внести свою лепту в развитие проекта, но мне непонятен отбор. Что-то не так меня не устраивает, я хочу писать патчи, которые будут приняты. Вышеуказанный патч написан не мной и висит уже полгода на getmangos.com. Все его используют, но добавить его не добавляют. Поэтому я и хотел выяснить, почему? Что не так?

YuruY 21.03.2010 11:09

http://ru-mangos.ru/showthread.php?t=31

xmolex 21.03.2010 11:22

Цитата:

Сообщение от YuruY (Сообщение 2763)

"Тема не существует или не указан идентификатор (номер)."

YuruY 21.03.2010 11:25

У меня открывает:
Цитата:

Ru-MaNGOS > Ядро > Патчи > Патчи на рассмотрении
Тема: "Шанс по рассмотрению патчей" (на 2 странице раздеа)

xmolex 21.03.2010 11:43

Наверное у меня прав недостаточно или нужны какие-то хитрые настройки в профиле, но темы нет. Даже поиск ее не выдает.
Под гостем темы также нет, значит наверное прав всетаки нет.

tempura 21.03.2010 11:55

Цитата:

Сообщение от xmolex (Сообщение 2770)
Наверное у меня прав недостаточно или нужны какие-то хитрые настройки в профиле, но темы нет. Даже поиск ее не выдает.
Под гостем темы также нет, значит наверное прав всетаки нет.

исправлено. читайте пожалуйста.

xmolex 21.03.2010 12:34

Я прочитал.
Дело в том, что вышеизложенный патч и так висит пол года в under review на getmangos.com. Как раз поэтому я и хочу поинтересоваться, что это - нехватка рук на проверку или кривой патч? Я бы задал вопрос там, но не очень изъясняюсь на английском, поэтому решил здесь.
Просто что толку писать патчи, если их всеравно никто рассматривать не будет или писать так, что ты будешь думать, что все вроде нормально, а на самом деле что-то не так. Вот я взял рабочий, вроде не хаковый патч, который висит уже пол года и эти пол года он нормально выполняет свою функцию и хочу ответов, что не так?

DiffuSer 21.03.2010 13:26

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

xmolex 21.03.2010 13:33

Цитата:

Сообщение от DiffuSer (Сообщение 2783)
Если решение, предложенное в патче, не очевидно и возможны какие-то отклонения от корректной работы (используемые методы неверны) - патч не будет принят до тех пор, пока его не переработают и обоснованно не опишут каждый элемент, чтобы сомнений о принятии в мастер-ветку не оставалось.

Это все обстрактные точки зрения, которые и так понятны. Я привел конкретный патч, в котором кода с гулькин нос, специально, чтобы разобраться. Просто если патч нормальный, но на него тупо забили, то это наводит на некоторые мысли.

Fedia22 21.03.2010 17:56

перечитайте ещё раз пост DiffuSer'а... и читайте до тех пор пока не поймёте

xmolex 21.03.2010 18:50

Цитата:

Сообщение от Fedia22 (Сообщение 2815)
перечитайте ещё раз пост DiffuSer'а... и читайте до тех пор пока не поймёте

Тоесть конкретно в этом патче нет комментариев, и поэтому его пол года шлют лесом?
Или вы предлагаете приглашать к себе Vladimir'а, угощать его пивом и в процессе поглощения сего напитка, объяснять каждую строку своего патча? :-)

Меня не устраивает ответ: "наверное с ним что-то не так". Я хочу знать, ЧТО не так конкретно с этим патчем! Я выбрал его не случайно. Я считаю, что он вполне нормален и достоин того, чтобы быть добавленным в проект. Но раз его не добавляют, значит есть причина. И эта причина - священная тайна. Извините, но если это священная тайна, то как другим писать патчи, если их будут просто посылать лесом без аргументов?

Я заинтересован в проекте не меньше официального сообщества, но как играть по правилам, если эти правила от тебя скрывают?

Vladimir 21.03.2010 18:54

в getmagos.com under review ~400 патчей, и если вы заметили по логам github.com последние дни я не работал практически над master-веткой, а занимался переносом коммитов из mangos0.12 -> mangoszero. Для увереного ответа правильный или нет этот патч надо смотреть другие спелы с этой аурой и т.д. Я этого не делал.

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

xmolex 21.03.2010 18:58

Цитата:

Сообщение от Vladimir (Сообщение 2820)
п-о-ч-е-м-у не приведен на нее хотя-бы линк...

Извините.
http://getmangos.com/community/showt...id-Flight-Form
Я никого не обвиняю, я просто хочу ответов.

YuruY 21.03.2010 19:01


tempura 22.03.2010 08:41

Цитата:

Сообщение от xmolex (Сообщение 2822)
Извините.
http://getmangos.com/community/showt...id-Flight-Form
Я никого не обвиняю, я просто хочу ответов.

Не извиняю. Вы именно всех вокруг обвиняете, и полностью отказываетесь от каких-либо ответов.
Если бы вы хотели получить ответ - вы должны были верно задать вопрос. На ваш вопрос "вот какой-то патч, какого хрена он не в репо?" - последовали вполне закономерные ответы. Если бы вы изволили вместо этого заняться поиском ВСЕХ подобных патчей, реализующих данную возможность, выложили бы ссылки на них и к каждому приложили свое описание как именно они работают, в чем их положительные стороны, и в чем отрицательные - не сомневайтесь, с самого начала ветка выглядела бы совершенно иначе.

xmolex 22.03.2010 08:53

Цитата:

Сообщение от tempura (Сообщение 2843)
Не извиняю.

Дело не совсем так. Мне на этот патч параллельно. Просто это частный случай. Я посчитал, что лучше привести что-то, чем вообще ничего.
Я бы хотел отдать часть своего времени на помощь проекту в виде написания и публикации функционала в виде патчей, т.к. писать и постоянно подгонять их под новые ревизии просто надоело. Хочу начать публиковаться. Но хочу в начале выяснить, а стоит ли? Может мои патчи будут также лежать где-нибудь и пылиться, хоть они и будут нормальными и вся моя помощь переедет в подгонку их под новые ревизии в надежде, что когда-нибудь их заметят. Жизнь одна и тратить ее нужно мудро.

tempura 22.03.2010 09:04

Это как раз конкретный случай. Для общих случаев уже есть описание и объяснение: http://ru-mangos.ru/showthread.php?t=31

А насчет вопроса "будут ли мои патчи приняты в репо"... Знаешь, твой подход "если примут - то буду писать, а если не примут - не буду" выглядит лично для меня как-то странно. Давай лучше так - ты полностью с нуля все сам напишешь, у тебя все будет работать лучше всех, и ты сам будешь решать что тебе куда принимать, а что нет?
Я не разбираюсь в проекте, но я вижу на гетмангос-ком количество принятых-отклоненных патчей, и патчей на рассмотрении. Какую-то экстраполяцию я могу сделать. Если бы разбирался - открыл бы в отвергнутых патчах тему у которой внизу есть ответ "принят альтернативный патч", взял бы их два и сравнил - почему один принят, а второй нет.

virusav 22.03.2010 09:05

Не все так плохо, как кажется.

Я, например, решил писать скрипты на СД2, заодно начать изучения Си++.
В итоге первые 2 патча были признаны разработчиками СД2 рабочими, но не были приняты по их собственным причинам.
Но меня это не остановило, продолжаю дальше работу и выкладываю скрипты им, использую их сам.

Если хотите внести свой вклад в проект, вносите, пишите патчи, скрипты и т.д.

xmolex 22.03.2010 09:22

Цитата:

Сообщение от tempura (Сообщение 2847)
...

Если нам нужно получить результат сложения 1 и 2 и есть патч с кодом a=1+2; ,который будет лежать пол года на getmangos.org и на вопросы почему его не применяют все будут говорить, "выложили бы ссылки на них (другие патчи реализующие такой же функционал) и к каждому приложили свое описание как именно они работают, в чем их положительные стороны, и в чем отрицательные", то я не хочу в этом участвовать.

Я специально привел патч, который:
1) Лежит уже долгое время без принятия
2) Который минимум в коде и все в нем интуитивно понятно даже не программисту
3) Который используется почти во всех сборках и реализует то, что должен уже очень продолжительное время

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

Мне обидно за скорость развития проекта. Ее можно было бы очень повысить, если выработать правила игры.

tempura 22.03.2010 09:30

Мне почему-то кажется, что добиваться одного эффекта сложением двух аур - это как-то не совсем прилично. Вероятно должен быть какой-то иной путь для реализации. Как я понимаю - основной идеей проекта является не "воткнем что попало как-нибудь и пусть работает". Тут наверное реализация какая-то требуется.

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

xmolex 22.03.2010 09:35

Цитата:

Сообщение от tempura (Сообщение 2857)
Мне почему-то кажется, что добиваться одного эффекта сложением двух аур - это как-то не совсем прилично. Вероятно должен быть какой-то иной путь для реализации. Как я понимаю - основной идеей проекта является не "воткнем что попало как-нибудь и пусть работает". Тут наверное реализация какая-то требуется.

Вот это другой разговор, спасибо.

xmolex 22.03.2010 13:54

Цитата:

Сообщение от tempura (Сообщение 2857)
...

Ваше пожелание учтено. По вашим словам если патчи будут вида, как ниже, то их не будут динамить. Я вас правильно понял?

Код:

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 3ee1892..87e3787 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -256,7 +256,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
    &Aura::HandleNoImmediateEffect,                        //203 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE  implemented in Unit::CalculateMeleeDamage and Unit::SpellC
    &Aura::HandleNoImmediateEffect,                        //204 SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::SpellC
    &Aura::HandleNoImmediateEffect,                        //205 SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_DAMAGE  implemented in Unit::SpellCriticalDamageBonus
-    &Aura::HandleNULL,                                      //206 SPELL_AURA_MOD_SPEED_MOUNTED
+    &Aura::HandleAuraModIncreaseFlightSpeed,                //206 SPELL_AURA_MOD_SPEED_MOUNTED
    &Aura::HandleAuraModIncreaseFlightSpeed,                //207 SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED
    &Aura::HandleAuraModIncreaseFlightSpeed,                //208 SPELL_AURA_MOD_SPEED_FLIGHT, used only in spell: Flight Form (Passive)
    &Aura::HandleAuraModIncreaseFlightSpeed,                //209 SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index b9af5d0..451b6a2 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -10781,7 +10781,12 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced, float ratio)
            if (IsMounted()) // Use on mount auras
                main_speed_mod  = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED);
            else            // Use not mount (shapeshift for example) auras (should stack)
-                main_speed_mod  = GetTotalAuraModifier(SPELL_AURA_MOD_SPEED_FLIGHT);
+            {
+              if (Unit::HasAuraType(SPELL_AURA_MOD_SPEED_MOUNTED)) // shapeshift
+                  main_speed_mod  = GetTotalAuraModifier(SPELL_AURA_MOD_SPEED_MOUNTED);
+              else
+                  main_speed_mod  = GetTotalAuraModifier(SPELL_AURA_MOD_SPEED_FLIGHT);
+            }
            stack_bonus    = GetTotalAuraMultiplier(SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS);
            non_stack_bonus = (100.0f + GetMaxPositiveAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK))/100.0f;
            break;

Цитата:

В SpellAuras.cpp указываем что ауру SPELL_AURA_MOD_SPEED_MOUNTED нужно обрабатывать в Aura::HandleAuraModIncreaseFlightSpeed

В Unit.cpp определяемся со скоростью. Из Aura::HandleAuraModIncreaseFlightSpeed мы получили mtype MOVE_FLIGHT для функции Unit::UpdateSpeed. Соответственно, если этот mtype, то выполняем блок. В блоке два условия, если мы примонтированы и нет. При shapeshift мы не монтируемся, поэтому попадаем в блок else. Ну и теперь мы смотрим, если у нас есть аура SPELL_AURA_MOD_SPEED_MOUNTED (if (Unit::HasAuraType(SPELL_AURA_MOD_SPEED_MOUNTED))) , то мы получаем для нее скорость. Если нет, то работаем как и работали ранее.

Патч работает корректно, протестировал Облик стремительной птицы (http://ru.wowhead.com/?spell=40120) и Облик птицы (http://ru.wowhead.com/?spell=33943). Скорость высталяется пропорционально скиллам.

tempura 22.03.2010 16:46

Цитата:

Сообщение от xmolex (Сообщение 2878)
Ваше пожелание учтено. По вашим словам если патчи будут вида, как ниже, то их не будут динамить. Я вас правильно понял?

Первое, что следовало бы понять по моим словам - что я не разбираюсь в программировании в общем, и в проекте мангос в частности. :) Я специально делал упор на этом. :)
Патчи рассматриваю совсем не я, так что считать "если темпура сказала, то все побежали делать" - глубочайшее заблуждение. :)

Однако в той области, где я работаю, принято представлять свои варианты именно в таком видет. Чтобы человек не просто увидел текст и сказав "шоза фигня" закрыл и забыл, а получил удовольствие от того, что для него, для его понимания, все расписано досконально. :)

Когда ко мне приходят со словами "ничего не трогал - само сломалось" - мне просто впадлу что-то делать. А когда сообщают "сделал то-то, получилось то-то, и тут все как грохнуло!" - тогда я делаю все с удовольствием.

ANTOMA 22.03.2010 17:01

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

xmolex 22.03.2010 17:03

Хотелось бы чтобы всетаки Vladimir хоть намекнул, что же всетаки не то в патче, т.к. вторая версия - это просто более красивая первая, а суть то одна.

Warlord123 22.03.2010 17:30

Понятно, что Vladimir'у просмотреть и проверить более 100 патчей на ru-mangos.ru и более 400 на getmangos.com нет возможности. По-моему, ускорить принятие патчей в основное ядро поможет предварительный отбор для рассмотрения. На сайте RMDC есть люди, которые уже давно известны своими работами. Если сделать еще одну категорию, например, Проверенные патчи, куда будут переноситься работы, которые уже готовы к внесению в основную ветку. Чтобы Vladimir'у и другим пользователям с правами внесения в ядро уже не нужно было проверять заведомо хаковые патчи. Конечно, работа по предварительному одобрению, требует времени. Да и в большинстве случаев каждому хочется сделать свое решение, а не разбираться в чужом.

Laise 22.03.2010 20:40

Цитата:

Сообщение от Warlord123 (Сообщение 2889)
По-моему, ускорить принятие патчей в основное ядро поможет предварительный отбор для рассмотрения. На сайте RMDC есть люди, которые уже давно известны своими работами. Если сделать еще одну категорию, например, Проверенные патчи, куда будут переноситься работы, которые уже готовы к внесению в основную ветку. Чтобы Vladimir'у и другим пользователям с правами внесения в ядро уже не нужно было проверять заведомо хаковые патчи. Конечно, работа по предварительному одобрению, требует времени. Да и в большинстве случаев каждому хочется сделать свое решение, а не разбираться в чужом.


MaS0n 22.03.2010 22:23

Ну во-первых здесь не сложение аур, а сложение модификаторов, т.е численных значений аур, что вполне допустимо, см. код
Во-вторых, внимательно прочитать пост Владимира и я с ним согласен на 100%.
Надо проверять другие спеллы с этой аурой, нельзя по одному спеллу судить об ауре.
В типовом наименовании вообще о флай ничего не говорится, я встречал эту ауру и на нелетающих вехиклах

KiriX 23.03.2010 22:51

Ну раз уж зашло обсуждение патча, который "сваял" (не иначе) я, то я позволю себе прокомментировать:
1) Странно, что я не поднял вопрос о том, что он до сих пор не принят =) (Если у кого возникают сомнения - я не xmolex, это не мой дубль и т.д и т.п.)
2) Патч писался (положа руку на сердце) на скорую руку лично для себя (в названии тема это отражено в скобках)
3) Сложение аур... В общем совершенно верный ответ дал MaS0n - такая ситуация действительно вполне возможна, поэтому я не стал убирать старый модификатор (GetTotalAuraModifier(SPELL_AURA_MOD_SPEED_FLIGHT)), а просто добавил в старый обработчик новый тип модификатор нового типа ауры
4) На момент написания патча не было клёвой проги - SpellWork, чтобы понять есть ли другие спеллы с такой аурой. Позже появилась возможность проверки, я её проводил, насколько помню - все спеллы подходят под данную реализацию. Сейчас нужно пересмотреть, но см. запись в моём дневнике...
5) Частично согласен с автором, действительно зачастую не хватает комментариев разработчиков, почему не принимается тот или иной патч. Лично для меня это не критично - все мы люди и понимаем объёмы работ разработчиков...

P.S: ХЗ когда смогу самостоятельно что-то просмотреть... И если уж вы указываете патч чей-то, как-то более прилично было бы сразу указать автора =)))


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

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