YTDB

YTDB (http://ytdb.ru/index.php)
-   Ядро (http://ytdb.ru/forumdisplay.php?f=25)
-   -   Написание патча (http://ytdb.ru/showthread.php?t=1409)

nuclear 15.12.2009 19:12

Написание патча
 
Интересует тема написания патчей исправляющих неработающие спеллы/таланты.
Подробнее.
Имеем краткий баг-репорт: "не работает талант Вестник войны"
Талант должен позволять использовать Рывок, Перехват и Вмешательство в любой стойке. Чего он собственно не делает.

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

ЗЫ надеюсь понятно расписал проблему:)

Konctantin 15.12.2009 19:39

Цитата:

Как само исправление написать я разберусь
и
Цитата:

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

По сути: откройте исходники мангоса, и посмотрите немного его структуру, а потом, загляните на http://github.com/mangos/mangos/commits/ посмотрите куда и что вносится, почитайте комментарии - для чего это делали, и часть вопросов отпадет сама собой.

nuclear 15.12.2009 19:58

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

Ну вот на примере, талант позволяет использовать спел не зависимо от стойки. Значит в коде где-то есть проверка на стойку.
Вот и не понятно где именно...И так в каждом таланте/спелле...

Комменты в гите не смотрел,спасибо,посмотрю.

tempura 16.12.2009 01:38

Цитата:

талант позволяет использовать спел не зависимо от стойки. Значит в коде где-то есть проверка на стойку.
Вот и не понятно где именно...
То есть вы хотите, чтобы я нашел - где именно проверка на стойку, и сказал вам? Юмор. Ценю.

Цитата:

терпения не хватает докопаться до того что мне нужно
и рядом
Цитата:

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

nuclear 16.12.2009 10:00

Тогда буду разбираться по-порядку, но без помощи не обойдусь.
Все насчет того же бага. Сделал проверку в самом начале функции Spell::CheckCast:
if(m_spellInfo->Id==11578 && m_caster->HasSpell(57499)) return SPELL_CAST_OK;
Но не помогло, такое чувство что когда клиент пишет "Нужно находится в такой-то стойке" он даже с сервером не связывается, вообщем не понятно где ловить этот спелл на проверку стойки.

nuclear 17.12.2009 17:03

Нашел ответ на англо-язычном форуме
Цитата:

Aura 262 isn't implemented yet. That's why Warbringer, Juggernaut and Sudden Death don't work.
ЗЫ не закрывайте пожалуйста топик, у меня еще есть много вопросов, самостоятельно в которых я разобраться не могу.

timmit 17.12.2009 18:41

Если так интересно, есть патч на эту ауру, поищите там же его

nuclear 17.12.2009 19:07

Спс большое, хоть применять его к серверу не буду,но зато изучу :)

KiriX 21.12.2009 14:24

Если вы понимаете код и логику кода мангоса - найти нужное место будет возможно (абсолютно точно для некоторых случаев) сложно, долго, но можно.
Если вы не имеете первого, браться за второе не имеет никакого смысла. Нереально расписать все классы, объекты и т.п. кода мангоса. Например я чуток знаю С++ и чуток понимаю логика кода мангоса. Я могу написать некоторые мелкие патчи, но я вам ни за что с ходу не скажу куда копать, т.к. структура мангоса очень разветвлённая и спелл может обрабатываться минимум в 5 файлах, а может и в нескольких сразу (вспоминаются мои попытки поправить скорость в Облике птицы у друидов - там затронуто минимум два файла, где обрабатываются данные спеллы.
В общем, понять логику и искать, искать и ещё раз искать... Без понимания же (и знания англ языка, т.к. все функции в коде очень понятно описаны) даже искать что-то бессмысленно, ибо будет "найти то, не знаю что".
Если проблема ещё актуальна - могу поискать дома. Точно помню, что в стойках выставляются опред флаги, позволяющие/не позволяющие кастовать опред спеллы. Стало быть есть такой обработчик, проверка. Значит, при условии наличия у игрока нужного талла - игнорить проверку.

nuclear 21.12.2009 17:30

Прочитайте пост #5, там я насчет проверки писал..Хотелось все же найти эту проверку на стойку )


Текущее время: 11:46. Часовой пояс GMT +4.

YTDB - MaNGOS DataBase