Перейти к содержимому
Korean Random
John_Nash

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

Рекомендуемые сообщения

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

 

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

  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. Чисто конкретно

Изменено пользователем John_Nash

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пара внешних модулей есть в каждом проекте - это 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

Изменено пользователем John_Nash

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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>

 

Изменено пользователем John_Nash

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×