Jump to content
Korean Random
Mr A

[Окно взвода / Squad window]

Recommended Posts

Или наоборот?

 

Такие детали оставим до реализации. Спорить что кому лучше толку нет. Вспоминаем концепцию ХВМ-а - много чего настраивается\конфигурится.

Share this post


Link to post

Short link
Share on other sites

Вот линк с успешным инжектом в рамках ХВМ-а. Минимум отвлекающего кода.

 

http://code.google.com/p/wot-xvm/source/detail?r=1445



Граждане, в этой теме мы публично попробуем намодить это дело. Дядя MrA согласился потрудиться.

 

, или ладно. Прямо здесь можно.

 

Насколько я понимаю мод будет зависеть от части кода XVM. Балансный вес тут. http://code.google.com/p/wot-xvm/source/browse/trunk/src/xvm/src/wot/utils/VehicleInfoData.as

Уровни в каком-то из похожих файлов рядом.

Эти файлы делал Сирмакс. Думаю в актуальном состоянии их поддерживать не проблема.

 

Поехали.

) Установить FD, cygwin и какой-нибудь svn. Tortoise, например.

) Выгрузить XVM по svn-у куда-нибудь. Права ридонли есть у всех.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

1.3) Установить какой-нибудь svn.
TortoiseSVN скачан, установлен

- check


2) Выгрузить XVM по svn-у куда-нибудь.
Новая папка XVM - контекстное меню - SVN Checkout... - Url введен - Нажата OK - репозиторий выгружен

- check

post-6871-0-50171400-1361801059_thumb.png

post-6871-0-09400600-1361801060_thumb.png

post-6871-0-70891300-1361801060_thumb.png

Edited by MrA

Share this post


Link to post

Short link
Share on other sites

Мы начали с пути компиляции ХВМ-а, а не с поиска где мод втыкается, но всё равно необходимо.

 

) swfmill поставить ещё обязательно.

В моём мане, кажется, про него тоже написано.

Зачем он нужен понятно?

 

) запустить make patched swf в проге cygwin. Находится скрипт в папке swf. Он создаёт флешки подготовленные к инжекту.

Что делает скрипт понятно?

Share this post


Link to post

Short link
Share on other sites

3) swfmill поставить ещё обязательно.

Swfmill - скачан, положен в %WINDIR%(папку Windows), проверено, что без библиотеки libiconv-2.dll в той же папке не запускается.

Он вытащит нам код, зашитый в swf, в виде удобочитаемого xml.

- check, имя скачиваемой библиотеки было libiconv2.dll, а не libiconv-2.dll - пришлось переименовать

post-6871-0-40745000-1361800993_thumb.png

post-6871-0-83955000-1361801854_thumb.png

 

4) запустить make patched swf в проге cygwin. Находится скрипт в папке swf.

Автоматизирует работу с swfmill, делая повторяющиеся действия(вызов swfmill для каждого из файлов swf) за нас.

- uncheck: командная строка windows не подходит? слово patch не нравится, переменная не объявлена, похоже

cygwin установлена, как запускать bat-файлы? Напрямую нельзя.

post-6871-0-89173500-1361801780_thumb.png

post-6871-0-33757400-1361804535_thumb.png

post-6871-0-27226500-1361804540_thumb.png

Edited by MrA

Share this post


Link to post

Short link
Share on other sites

 

Граждане, в этой теме мы публично попробуем намодить это дело. Дядя MrA согласился потрудиться.

Ачуметь!  Ушел за попкорном....

Share this post


Link to post

Short link
Share on other sites
- uncheck - командная строка windows не подходит? слово patch не нравится, переменная же не объявлена, похоже cygwin установлена, как запускать bat-файлы? Напрямую нельзя

 

Да. Виндовый терминал не знает патчей\диффов.

 

) Запустить cygwin.

) В cygwin перейти в директорию что-то вроде /cygdrive/c/xvm.

) ./qwert.bat

 

cygwin умеет bat-ы.

cygwin, если не знает кто такой patch или diff, надо устанавливать соответствующий пакетик через установщик cygwin.



Про запуск прог в никсявых шеллах:

post-6681-0-48528400-1361810379_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

если cygwin не знает, "кто такой" patch или diff, надо устанавливать соответствующий пакетик через установщик cygwin

Подтвердилось, выдает ошибку на слово patch

post-6871-0-99742400-1361810777_thumb.png

ушел ставить пакетик.

 

В установщикe cygwin найден пакет patch

post-6871-0-76982200-1361811157_thumb.png

запущена установка.

 

Перезапустив окно терминала, выполняю те же команды

post-6871-0-22932600-1361811340_thumb.png

Успех :) В наших руках появились swf.

 

4) запустить make patched swf в проге cygwin. Находится скрипт в папке swf.

- check

Edited by MrA

Share this post


Link to post

Short link
Share on other sites
1.make-patched-swfs.bat

 

) Разбирает оригинальные флеш файлики от ВарГейминга посредством swfmill.

) Патчит полученные XML-и *.diff файлами. Вызовы некоторых классов подменяются + мелкие правки для успешной сборки swfmill.

) Собирает патченные XML-и обратно в SWF. В такие файлы остаётся теперь только инжектнуть код посредством FlashDeveloper.

Share this post


Link to post

Short link
Share on other sites

Изменено: MrA, 6 минут назад

 

 

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

 

 

 

4) запустить make patched swf в проге cygwin. Находится скрипт в папке swf. - check

 

 

) Теперь можно собирать все файлы проектов XVM-a. Выбрасываются они в директорию bin.

 

Новая ачивка: XVM скомпилен! :flag: В теории можно наконец-то начинать заниматься крайне увлекательным занятием - править баги.

 

 

 

Не горит, но вот скрипт для деплоя http://code.google.com/p/wot-xvm/source/browse/trunk/utils/deploy.sh

 

 

Мои переменные окружения на эту тему:

post-6681-0-57212900-1361895113_thumb.png

 

Ладно. После всего что было разобраться скомпилить проект не проблема.

 

 

 

Акт второй. Найти файл под мод.

 

) Поставить декомпилер по вкусу.

Я пользую Sothink SWF Decompiler 7.2. Экспорт в папочку даёт удобную структуру кода.

) Распаковать файл D:\WoT\res\packages\gui.pkg как zip архив куда-нибудь.

) Найти там файл, отвечающий за окошко взвода.

Edited by █XlebniDizele4ku

Share this post


Link to post

Short link
Share on other sites

5) Теперь можно собирать все файлы проектов XVM-a. Выбрасываются они в директорию bin.

вот скрипт для деплоя

Посмотрев, что в скрипте используются либо переменные окружения, либо дефолтные значения, перехожу к установке собственных переменных среды.

Устанавливаю переменные командой set.

set WOT_DIRECTORY=/cygdrive/d/games/World_of_Tanks

set GAME_VER="0.8.3"

Копирую *.swf из XVM\src\xvm\swf в XVM\bin. Перехожу в папку со скриптом, запускаю.

post-6871-0-05438800-1361901925_thumb.png

post-6871-0-39644500-1361901988_thumb.png

Успешно. Но в папке с игрой их нет - они в дефолтной папке D:\work\games\WoT\res_mods\0.8.3\gui\flash. Неверно задал переменные среды.

- check

 

6) Поставить декомпилер по вкусу.

Sothink SWF Decompiler 7.3 скачан, установлен.

- check

 

7) Распаковать файл %папка_с_игрой%\res\packages\gui.pkg как zip архив куда-нибудь.

Распакован на D:\.

- check

 

8) Найти файл, отвечающий за окошко взвода.

Взвод на английском - squad.

Найдено в D:\gui\flash\ два файла, включающее это слово: SquadChannelPage.swf, SquadMemberRenderer.swf. Заглянув с помощью декомпилера в каждый из них, вижу, что первый файл рисует окошко взвода, а второй - строчки с ником и, очевидно, техникой, взятой бойцом. Он нам и нужен: SquadMemberRenderer.swf.

- check

Edited by MrA

Share this post


Link to post

Short link
Share on other sites
SquadMemberRenderer.swf

 

) Получить примерное представление как он работает. Файл, наверняка, крошечный. не сложно.

) Найти подходящий класс. Какой-нибудь самый главный. Может так и называется SquadMemberRenderer.

) Разобрать SquadMemberRenderer.swf с пом-ю swfmill.

) Подменить вызов класс в разобранном файле.

Пример http://code.google.com/p/wot-xvm/source/browse/trunk/src/xvm/swf/lo

bby_messenger.xml.patch?spec=svn1445&r=1445

Или любой другой файл патча смотри. Везде одна метода основная.

) Собрать измененный SquadMemberRenderer.swf с пом-ю swfmill

 

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

http://code.google.com/p/wot-xvm/source/detail?r=1445

) Создать файл проекта FlashDeveloper. Мне проще скопировать текущий и, открыв файл проекта, подредачить местами вручную. Формат файла простой. Файлы проектов у нас одни и теже.

) Создать директории как надо под проект, исходя из двух пунктов ниже.

) Создать класс который расширяет тот, что нашли ранее как подходящий.

В моём примере это src/wot/LobbyMessenger/LobbyMessenger.as

) Создать файл расширяемого класса. intrinsic. Своеобразная обещалка компилеру, что этот класс в файле инжекта уже есть.

В моём примере это classes/net/wargaming/messenger/LobbyMessenger.as

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

Utils.TraceXvmModule("MrA was here");

Выбрасывается это, конечно в лог и в терминал xvm-stat.exe



Держим в голове Гайд по изменению и добавлению логики swf.

http://www.koreanrandom.com/forum/topic/1780-%D0%B3%D0%B0%D0%B9%D0%B4-%D0%BF%D0%BE-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8E-%D0%B8-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8E-%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8-swf/



Да. Если с чем-то разобраться не получается более 15-20 минут, пиши.

Share this post


Link to post

Short link
Share on other sites

Новая ачивка: XVM скомпилен! :flag: В теории можно наконец-то начинать заниматься крайне увлекательным занятием - править баги.

Пора медали вводить.

 

 

Мои переменные окружения на эту тему:

attachicon.gifdepl.png

 

 

Все гораздо проще - c:\cygwin\bin в PATH и c:\cygwin\bin\bash.exe на ассоциации к sh. 

GAME_VER и WOT_DIRECTORY можно в виндовык переменные окружения добавить

 

Я пользую Sothink SWF Decompiler 7.2. Экспорт в папочку даёт удобную структуру кода.

Рекомендую Portable

 

) Создать файл проекта FlashDeveloper. Мне проще скопировать текущий и, открыв файл проекта, подредачить местами вручную. Формат файла простой. Файлы проектов у нас одни и теже.

Кстати, я тут обнаружил, что можно выделить в дереве все проекты, ПКМ и собрать все сразу. А то раньше перебирал все по одному, а сейчас их много, так что запаришься перебирать. Вообще надо посмотреть, может можно батником все собирать, будет еще лучше.

Edited by sirmax

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...