Jump to content
Korean Random
Yupi

[HOWTO] Как сделать свой мод на XFW

Recommended Posts

А по факту спасайте - я уже реально всё, что можно попробовал.

Почитал тему, но так честно говоря и не понял, что конкретно ты хочешь сделать с чатом...

Share this post


Link to post

Short link
Share on other sites

Конкретно - ничего. Просто пытаюсь сделать свой первый мод.

 

P.S. Вроде разобрался

Edited by STREJlA

Share this post


Link to post

Short link
Share on other sites

Почитал тему, но так честно говоря и не понял, что конкретно ты хочешь сделать с чатом...

Лучше не лезть в реализацию чата от картохи)

Там у нее куча легаси кода...

 

P.S. чтобы было http://www.koreanrandom.com/forum/topic/32712-/

Edited by SkepticalFox

Share this post


Link to post

Short link
Share on other sites

Конкретно - ничего. Просто пытаюсь сделать свой первый мод.

 

P.S. Вроде разобрался

Разобрался - делись инфой! Всем поможет! )

Share this post


Link to post

Short link
Share on other sites

Разобрался - делись инфой! Всем поможет! )

Как я понял, в среде мододелов знаниями не особо делятся. Мне данная инфа в 500 рублей обошлась.

Share this post


Link to post

Short link
Share on other sites
Как я понял, в среде мододелов знаниями не особо делятся.

Делятся. Ну кроме школьников-неадекватов с болезнью собственничества. Если бы не делились, ты бы тут не оказался, так ведь? )

 

Но не надо путать "делиться инфой" и "искать ещё неизвестную инфу за других". Первое - общественно полезное дело, второе - услуга.

Edited by Yupi
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

в среде мододелов знаниями не особо делятся

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

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

кроме школьников-неадекватов с болезнью собственничества...

...на код, который писали даже не они.

Share this post


Link to post

Short link
Share on other sites

О. Я уже школьник неадекват =)

 

Не делятся в том плане, что сообщество мододелов очень небольшое. Нет толковых гайдов и доков.

Инфа разбросана по всему инету. И не смотря на то, что на данном форуме её наибольшая концентрация - разобраться самостоятельно и сделать свой первый мод крайне трудно.

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

Share this post


Link to post

Short link
Share on other sites

 

 

От тебя идет очень паршивый посыл - никто мне бедненькому помочь не хочет. И на этом педалируемом чувстве вины у других ты хочешь решить свои проблемы чужими руками.

 

Теперь по сути. 

Модами (конкретно под WoT) занимается относительно узкий круг людей. Занимаются они ими, в подавляющем числе случаев, как хобби (то есть интереса ради). Подумай, это очень интересно копаться в коде ради ЧУЖОГО интереса. Вот если это станет им интересно - они могу копать день и ночь. Если это не заинтересовало, тогда будет ответ в РАМКАХ имеющихся знаний. Упрощенно - если знают, то скажут. А если не знают - не скажут.

А по поводу гайдов и доков. Если ты будешь регулярно это делать - тебя будут хвалить и возносить (иногда). ТЫ БУДЕШЬ ДЕЛАТЬ ГАЙДЫ И ДОКИ? (опять же банальщина - люди любящие ковыряться в коде не любят такую нудную и скучную работу как написание гайдов и доков).

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

От тебя идет очень паршивый посыл - никто мне бедненькому помочь не хочет. И на этом педалируемом чувстве вины у других ты хочешь решить свои проблемы чужими руками.

 

Теперь по сути. 

Модами (конкретно под WoT) занимается относительно узкий круг людей. Занимаются они ими, в подавляющем числе случаев, как хобби (то есть интереса ради). Подумай, это очень интересно копаться в коде ради ЧУЖОГО интереса. Вот если это станет им интересно - они могу копать день и ночь. Если это не заинтересовало, тогда будет ответ в РАМКАХ имеющихся знаний. Упрощенно - если знают, то скажут. А если не знают - не скажут.

А по поводу гайдов и доков. Если ты будешь регулярно это делать - тебя будут хвалить и возносить (иногда). ТЫ БУДЕШЬ ДЕЛАТЬ ГАЙДЫ И ДОКИ? (опять же банальщина - люди любящие ковыряться в коде не любят такую нудную и скучную работу как написание гайдов и доков).

Я шарю в вебе. Гайды и доки по WG P API писал. Сам разбирался в методах и по ходу дела статьи писал. Здесь такого не наблюдаю.

Share this post


Link to post

Short link
Share on other sites

Здесь такого не наблюдаю.

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

Было б так просто, написал один раз и забыл на десятка полтора патчей. Ан нет, почти каждый патч приходится что-то править.

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

 

 

О. Я уже школьник неадекват =)

Тебя никто так не назвал. Мы обрисовали ситуацию, как она обстоит сейчас, но никто не говорил, что это про тебя.

 

 

 

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

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

Share this post


Link to post

Short link
Share on other sites

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

Было б так просто, написал один раз и забыл на десятка полтора патчей. Ан нет, почти каждый патч приходится что-то править.

Я не говорю, что все плохо и все плохие.

Я давно знал, что рано или поздно мне придется делать моды самостоятельно, но опасался, что это будет сложно.

Это сложно для новичка. Для новичка всегда и все сложно. Возникает множество негативных эмоций.

Я понимаю, что в каждой обнове меняют всё что можно. Я понимаю, что доки мододелов очень быстро устареют.

Но блин! Найти хоть какую то крупицу инфы адски сложно.

Даже мало-мальского список внутри-игровых событий нет.

 

Ладно. Не будем оффтопить. Это лишь мои впечатления за 4 дня. Я только начал разбираться и многого еще не читал/искал/пробовал.

Посмотрим как пойдет.

Share this post


Link to post

Short link
Share on other sites

Я шарю в вебе. Гайды и доки по WG P API писал. Сам разбирался в методах и по ходу дела статьи писал. Здесь такого не наблюдаю.

Про моды писать - это не гайд по паблик АПИ) Это ТИТАНИЧЕСКИЙ труд)

 

Гайдов много, но сколько ни пиши - всё равно найдётся тот, кому мало. Потому что тема огромная и задачи у всех разные.

 

Так что лучше писать, а не жаловаться, будто другие не пишут). Другие тоже пишут, когда могут)

 

 

Найти хоть какую то крупицу инфы адски сложно.

Так задавай вопросы! Для этого и существует форум) Чем точнее вопрос тем больше шансов, что получишь инфу)

Share this post


Link to post

Short link
Share on other sites

Про моды писать - это не гайд по паблик АПИ) Это ТИТАНИЧЕСКИЙ труд)

 

Гайдов много, но сколько ни пиши - всё равно найдётся тот, кому мало. Потому что тема огромная и задачи у всех разные.

 

Так что лучше писать, а не жаловаться, будто другие не пишут). Другие тоже пишут, когда могут)

 

 

Так задавай вопросы! Для этого и существует форум) Чем точнее вопрос тем больше шансов, что получишь инфу)

Как выполнить созданную мной функцию X при начале боя?

другими словами - повесить коллбек на событие.

 

P.S. Без XFW

Edited by STREJlA

Share this post


Link to post

Short link
Share on other sites

 

Без XFW не надо в теме про XFW )

 

Здесь сделай тему.

 

Но про то, что мы оффтопим я уже писал =)

Тему пока не создаю. Чукча все-таки читака. Вот уже час изучаю результаты поиска по запросу bigworld.callback

  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Вот уже час изучаю результаты поиска по запросу bigworld.callback

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

З.Ы. Колобок - это обратный вызов функции с задержкой. Колобок всегда идет в отдельном внутреннем потоке, поэтому используется либо для задержек (в том числе callback loop, использование которого и есть зло), либо для выноса выполнения функции за пределы текущего кода (нулевая задержка), т.е. когда выполнение функции сейчас вызовет нежелательную задержку.

Подробнее в доках к движку игры есть. Эти доки уже неоднократно выкладывались тут (на форуме).

Как выполнить созданную мной функцию X при начале боя?

Хукнуть соответствующий метод. BigWorld.player() в ангаре это экземпляр класса Account, в бою - PlayerAvatar, файл Avatar.py. Все методы, которые отвечают за старт боя, есть там. Дальше все зависит от того, на каком этапе инициализации тебе нужно выполнить свою функцию. Вообще, тот или иной мод к чему-то привязывается. Соответственно, туда и надо ставить хуки. В точку непосредственного взаимодействия с игрой. Это наиболее эффективный подход к реализации, и наименее затратный по вспомогательному, не типовому коду.

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

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

Где-то валялась папка с декомпилированными исходниками времен 13/14 годов, но в настоящее время очень многое, из того, что там есть, уже не актуально. Да и необходимость что-то декомпилить последние год/полтора в принципе отсутствует, ибо около половины модов - это такой говнокод, что даже обезьяна, ИМХО, напишет лучше (сказывается тот факт, что очень редко какой мододел является опытным программистом), и гораздо проще (при наличии скилла и знании повадок программистов картохи) найти нужный код в клиенте игры, чем пытаться понять, что там в моде сообразили ножноклавишным методом. А большая часть того, что написано адекватно, лежит на гитхабе/битбакете, ибо более-менее адекватный код не так стремно туда заливать.

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

  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

 

Спасибо!

Нагуглил такой код. Немного подправил - работает. В данном примере, как я понял, помимо вызова стандартного обработчика происходит вызов "левой" функции.

Такой подход есть смысл использовать?

 

from gui.Scaleform.battle_entry import BattleEntry

 

def MYM1():

    #мой код

   

def new_BattleEntry_afterCreate(self):

    MYM1()

    old_BattleEntry_afterCreate(self)

   

old_BattleEntry_afterCreate = BattleEntry.afterCreate

BattleEntry.afterCreate=new_BattleEntry_afterCreate

Edited by STREJlA

Share this post


Link to post

Short link
Share on other sites

Спасибо!

Нагуглил такой код. Немного подправил - работает. В данном примере, как я понял, помимо вызова стандартного обработчика происходит вызов "левой" функции.

Такой подход есть смысл использовать?

 

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

 

1. Код выше можешь выкинуть - он старый, вместо него юзай 

from Avatar import PlayerAvatar

def new__startGUI(self):
    old__startGUI(self)
    <твой код>

old__startGUI = PlayerAvatar._PlayerAvatar__startGUI
PlayerAvatar._PlayerAvatar__startGUI = new__startGUI

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

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...