PDA

Просмотр полной версии : Написание патча


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, там я насчет проверки писал..Хотелось все же найти эту проверку на стойку )