John_Nash 41 Posted February 8, 2017 (edited) Всё, что оказалось полезным на пути новичка. С краткими аннотациями. Буду расширять по мере знакомства с материалом. Буду благодарен, если подбросите пропущенное или просто полезное. А. Официальные доки Документация XVM Framework 3.1.0 Абсолютно must read, но, к сожалению, крайне кратко и, возможно, давно не обновлялось. Для сборки под Windows необходим пакет MSYS2, который не работает под Win XP. xfw.hello_world Пример мода на основе XFW. Полностью на ActionScript. B. Питоновская сторона силы. Доки к BigWorld -- часть питоновских библиотек, за которые моды цепляются в клиенте игры (via ktulho). Это документация от "чистого" BigWorld 2.1.0. Там нет методов, которые добавлены разработчиками танков. Еще часть может отсутствовать.(thx 2 Monstrofil) Декомпилированные питоновские исходники из клиента игры (via ktulho). Там же инструмент (PjOrion от StranikS_Scan) и инструкции по декомпиляции. Как я забыл скомпилировать питоновские файлы. Заодно там ссылка на проект hello world для ангара. Чтобы моды запустились, достаточно поместить .pyc файл в папку scripts/client/gui/mods и название файла должно начинаться с mod_ C. Разное Создание Flash объектов и управление ими. Основы DAAPI. Про интероп между Питоном и AS. Требует минимального знакомства с обеими языками. Немного про среду для разработки модов Обсуждение IntelliJ IDEA, PyCharm, более легкие альтернативы. Рекомендации по настройке режима отладки. Как создать форму(Окно) в ангаре. Питоновский файл складывать в res_mods\<wot_ver>\scripts/client/gui/mod, swf файл складывать в res_mods\<wot_ver>\gui\flash\ Интеграция своего sfw файла в battle.sfw в патче 9.15.1 D. Всякое В FlashDevelop файл с точкой входа для компилятора должен быть документом (ПКМ). При редактировании питоновских проектов удобно скачать декомпилированные питоновские исходники (Питоновская сторона силы. - 2) и сделать их external lib. Это даст подсказку и исправление опечаток в IDE. E. Чисто конкретно Название танка Как создать сообщение с кнопками в центре уведомлений? Edited October 1, 2019 by Mixaill 10 Quote Share this post Link to post Short link Share on other sites
John_Nash 41 #378961 Posted February 9, 2017 (edited) Пара внешних модулей есть в каждом проекте - это 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 March 1, 2017 by John_Nash 5 Quote Share this post Link to post Short link Share on other sites
John_Nash 41 #379934 Posted February 16, 2017 (edited) 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 February 16, 2017 by John_Nash 6 Quote Share this post Link to post Short link Share on other sites
Slava7572 1,684 #379953 Posted February 16, 2017 Спасибо за топик,я уверен,что многим это интересно. 2 2 Quote Share this post Link to post Short link Share on other sites