Jump to content
Korean Random
John_Nash

[HOWTO] Коллекция материалов по созданию модов

Recommended Posts

Всё, что оказалось полезным на пути новичка. С краткими аннотациями. Буду расширять по мере знакомства с материалом. Буду благодарен, если подбросите пропущенное или просто полезное.

 

А. Официальные доки

  1. Документация XVM Framework 3.1.0 Абсолютно must read, но, к сожалению, крайне кратко и, возможно, давно не обновлялось. Для сборки под Windows необходим пакет MSYS2, который не работает под Win XP.
  2. xfw.hello_world Пример мода на основе XFW. Полностью на ActionScript.

B. Питоновская сторона силы.

  1. Доки к BigWorld -- часть питоновских  библиотек, за которые моды цепляются в клиенте игры (via ktulho). Это документация от "чистого" BigWorld 2.1.0. Там нет методов, которые добавлены разработчиками танков. Еще часть может отсутствовать.(thx 2 Monstrofil)
  2. Декомпилированные питоновские исходники из клиента игры (via ktulho). Там же инструмент (PjOrion от StranikS_Scan) и инструкции по декомпиляции. 
  3. Как я забыл скомпилировать питоновские файлы.  Заодно там ссылка на проект hello world для ангара. Чтобы моды запустились, достаточно поместить .pyc файл в папку scripts/client/gui/mods и название файла должно начинаться с mod_

C. Разное

  1. Создание Flash объектов и управление ими. Основы DAAPI. Про интероп между Питоном и AS. Требует минимального знакомства с обеими языками.
  2. Немного про среду для разработки модов Обсуждение IntelliJ IDEA, PyCharm, более легкие альтернативы. Рекомендации по настройке режима отладки.
  3. Как создать форму(Окно) в ангаре.  Питоновский файл складывать в res_mods\<wot_ver>\scripts/client/gui/mod, swf файл складывать в res_mods\<wot_ver>\gui\flash\
  4. Интеграция своего sfw файла в battle.sfw в патче 9.15.1

D. Всякое

  • В FlashDevelop файл с точкой входа для компилятора должен быть документом (ПКМ).
  • При редактировании питоновских проектов удобно скачать декомпилированные питоновские исходники (Питоновская сторона силы. - 2) и сделать их external lib. Это даст подсказку и исправление опечаток в IDE.

E. Чисто конкретно

Edited by Mixaill
  • Upvote 10

Share this post


Link to post

Short link
Share on other sites

Пара внешних модулей есть в каждом проекте - это wotres и wotswf, и они импортированы как зависимости. Это исходники клиента python и as3 из lobby/battle. Каждый под управлением git, любое обновление клиента отражается коммитами с номером версии, иначе сложно отслеживать ошибки, к сожалению, WG часто меняет базовый код.

 

    wotres содержит scripts из res и res_bw (последний содержит common/Lib, где можно посмотреть доступные пакеты python), я получаю исходники через uncompyle2
    wotswf содержит as3 из battle.swf, lobby.swf, common_i18n.swf, а так же библиотеки org.idmedia.as3commons, com.adobe.serialization.json и fl.*, которые можно скачать отдельно.

 

Для декомпиляции я использую jpexs-decompiler, далее пробую собрать swc-библиотеки из lobby и battle, исправляя ошибки декомпиляции. Этот процесс долгий, но требуется один раз - в итоге получаются lobby.swc и battle.swc, готовые для подключения как внешние библиотеки.

 

Таким образом, в правильно настроенной IDE появляется code hinting, автоимпорт и обнаружение ошибок, а так же можно легко гулять по коду клиента и исследовать его.

*******

 

BigWorld - это built-in модуль движка (как и GUI, Math, ResMgr, _Scaleform и может что-то еще), по сути это API для связи Python <---> Движок

 

В контексе флеша - BigWorld'а нет, флэш работает исключительно внутри Scaleform, который раскрыт в питоне модулем _Scaleform (смотрим scripts/client/gui/Scaleform/Flash.py)

 

Если непонятно, то Scaleform это аналог Adobe Flash Player, имеет свой движок и набор базовый AS3-классов для построения интерфейса (как у Flash есть Flex). Кроме того, Wargaming создал свой набор классов для построения интерфейса игры - окна, кнопки и т.д. (это как Spark у Flex). Вот эти два набора нам и нужны для успешного собирания своих флешек, неймспейсы scaleform.click, scaleform.net (это классы Scaleform) и net.wg.* (это классы Wargaming). lobby.swf содержит наиболее полный набор классов для лобби, поэтому берем его, и battle.swf для боя.

 

 

[Про питоновские скрипты]

В 9.10 добавили модлоадер, Чтобы моды запустились, достаточно поместить мод в папку scripts/client/gui/mods и название файла должно начинаться с mod_.

 

Если поставить в constants флаг IS_DEVELOPMENT на True, то будут грузится некомпилированные моды (*.py) с той-же маской имени.

 

Появилось некоторые методы, которые клиент вызывает у мода, например: init, fini, onAccountShowGUI... И в таком духе, найти их можно поиском в исходниках слова guiModsSendEvent или sendEvent. Чтобы они вызывались достаточно создать метод с соответствующим названием в моде.

 

 

https://koreanrandom.com/forum/topic/25955-http-запрос-json/#entry285225

Edited by John_Nash
  • Upvote 5

Share this post


Link to post

Short link
Share on other sites

mod_TestWindow.py изменим

def __init__(self):
    super(TestWindow, self).__init__()
    self.__config_section = ResMgr.openSection('../configs/config.xml')
и добавим метод

def py_getCustomConfig(self):
    return {
        'title': self.__config_section.readString('title'),
        'width': self.__config_section.readInt('width'),
        'height': self.__config_section.readInt('height')
    }
В TestWindow.as добавим

public var py_getCustomConfig : Function;
И изменим:

override protected function onPopulate() : void
{
    super.onPopulate();
    var _config : Object = py_getCustomConfig();
    width = _config.width;
    height = _config.height;
    window.title = _config.title;
}
Теперь проверим как это работает:

Создадим в папке res_mods/configs файл config.xml (кодировка UTF-8 (без BOM))

Содержимое файла:

<root>
    <title>Test Window</title>
    <width>600</width>
    <height>400</height>
</root>

 

Edited by John_Nash
  • Upvote 6

Share this post


Link to post

Short link
Share on other sites

Спасибо за топик,я уверен,что многим это интересно.

  • Upvote 2
  • Downvote 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...