Перейти к содержимому
Для публикации в этом разделе необходимо провести 1 боёв.
STL1te

Правка Unbound XML

В этой теме 20 комментариев

Рекомендуемые комментарии

175
STL1te
92 публикации

Всем привет!

В патче 0.5.5.0 мы избавились от двойной интерпретации ActionScript кода в XML-файлах.

Это значит, что выражения типа:

toUpperCase(tr('IDS_PRO'))
!(isAllowedToVote) || (isAllowedToVote && data.myVoice != (-1)) || data.voteState != VoteTypes.VOTE_STATE_PROCESS

Больше не выполняются во время разбора XML-файла. Данные выражения заранее скомпилированы в файл под названием USSExpressions.swf.

Это значит, что изменяя в любом XML файле такие выражения мы не добьемся их изменения в игре. Чтобы как-то сгладить эту проблему был разработан набор инструментария.

 

Необходимые файлы (тут всегда лежат файлы для текущей версии): https://share.wargaming.net/d/40af508aa9/

 

Начнем с xml2as.zip

Внутри архива имеется файл xml2as.bat, внутри которого прописан запуск приложения, которое скомпилирует выражения из вашего XML-файла в готовый .swf файл.

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

Стандартный путь до FlexSDK, указанный в xml2as.bat - "C:/FlexSDK". Вы можете изменить путь до папки с распакованным SDK.

Так же в xml2as.bat прописаны следующие параметры:

"-i dock.xml game_menu.xml" - это названия XML-файлов, выражения из которых нужно собрать в один .swf файл. Можно указать один или несколько файлов.
"-n MySuperMod" - это название итогового .swf файла вашего мода.

Прописываем нужные вам значения и запускаем xml2as.bat. После его успешной работы в папке с ним появится файл "<УказанноеИмяМода>.swf".

 

Следующий архив 0.5.8.0/USSExpressionsLoader.zip. Внутри имеется три файла:

consumer_main_scene.swf и consumer_main_scene_low.swf - это оригинальные файлы с вшитым в них кодом загрузки .swf из модов.
USSExpressionsLoader.xml - это конфигурационный файл, в котором указываются имена .swf файлов модов, полученные в результате предыдущего шага.

Копируем эти файлы в папку "res_mods/<версия игры>/". В папку "res_mods/<версия игры>gui/flash" кладем файлы, полученные из шага "xml2as" и прописываем их имена в USSExpressionsLoader.xml.

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

 

ВНИМАНИЕ. Данный способ не избавляет от необходимости изменения оригинальной XML с версткой. Данным методом мы лишь получаем и компилируем выражения из вашей модифицированной XML. Т.е для полноценной работы мы модифицируем XML, прогоняем её через данный метод и затем в готовом моде получаем измененную XML с версткой и работающий с ней SWF файл с выражениями.

 

Запускаем игру и радуемся рабочим кастомным выражениям.

Изменено пользователем STL1te
  • Плюс 4

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
Коллекционер
1 366 публикаций
3 971 бой

В скайпе вопрос этот поднимался, но похоже пропустили мимо.

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

Любую xml'ку, которую мы начиним какими-то своими условиями/функциями надо будет "обработать" скриптом выше для получения нашей swf'ки-словарика.

Скрипту можно скормить и пачку xml'ек и на выходе получим одну swf'ку-словарик.

Возник один вопрос - если указывать пачку xml'ек, в которых имеются однотипные проверки - в swf'ки они ведь не будут "дублироваться" как если бы мы скриптом обработали каждую xml'ку отдельно, сформировав по swf'ке на каждую xml'ку.

Т.е. как пример:

Имеется у нас 5 xml'ек от разных мододелов, в которых используются 50 неких условий, которые присутствуют во всех 5 xml'ках и при этом в каждой из них есть еще по 5 уникальных для каждой конкретной xml'ки.

Что будет оптимальней в плане производительности и итогового объёма данных:

1) подгружать 5 этих swf'ок

2) "скормить" скрипту все 5 xml'ек сразу и получить на выходе одну swf'ку

Я склонен полагать, что второй вариант будет самым оптимальным и в плане итого объёма "сборки" мода как и в плане производительности в целом. Правильно мыслю?

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
175
STL1te
92 публикации

В скайпе вопрос этот поднимался, но похоже пропустили мимо.

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

Любую xml'ку, которую мы начиним какими-то своими условиями/функциями надо будет "обработать" скриптом выше для получения нашей swf'ки-словарика.

Скрипту можно скормить и пачку xml'ек и на выходе получим одну swf'ку-словарик.

Возник один вопрос - если указывать пачку xml'ек, в которых имеются однотипные проверки - в swf'ки они ведь не будут "дублироваться" как если бы мы скриптом обработали каждую xml'ку отдельно, сформировав по swf'ке на каждую xml'ку.

Т.е. как пример:

Имеется у нас 5 xml'ек от разных мододелов, в которых используются 50 неких условий, которые присутствуют во всех 5 xml'ках и при этом в каждой из них есть еще по 5 уникальных для каждой конкретной xml'ки.

Что будет оптимальней в плане производительности и итогового объёма данных:

1) подгружать 5 этих swf'ок

2) "скормить" скрипту все 5 xml'ек сразу и получить на выходе одну swf'ку

Я склонен полагать, что второй вариант будет самым оптимальным и в плане итого объёма "сборки" мода как и в плане производительности в целом. Правильно мыслю?

 

Мысль абсолютно правильная. 2й вариант будет работать и соотв-но будет предпочтительней.

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
Коллекционер
1 366 публикаций
3 971 бой

Будут ли какие-либо правки касательно сборки swf'ок? Ибо текущая версия утилиты не способна собрать рабочий swf из battle_loading.xml.

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
224
[Z1OOO] Roslich
Коллекционер, Мододел
273 публикации
2 118 боёв

Я оставил в xml только то, что изменял. Возможно это не правильно, но оно работает :)

Вот пример того, что я сделал:

 
<ui>
<bind name="style" value="'width'; player.rank == 0 ? '138px': '65px'"/>
<bind name="instance" value="'IconAndLevel'; {_shipID : _shipID}"/>
<bind name="instance" value="'IconAndSilhouette'; {_shipID : playerShipId}"/>
</ui>
 

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
1 583
[MRDRS] AutoSpy
1 575 публикаций
1 137 боёв

Интересненько... Я раньше пробовал так делать - игра крашилась. Неужели что-то поменялось?

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
224
[Z1OOO] Roslich
Коллекционер, Мододел
273 публикации
2 118 боёв

Возможно, что мне просто повезло :)

По крайней мере в моём случае, такой вариант работает.

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
224
[Z1OOO] Roslich
Коллекционер, Мододел
273 публикации
2 118 боёв

А для 0.5.6 загрузчик есть?

Рассказать о публикации


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

Под 0.5.9 будет? А то все замерло на правке xml:popcorn:

 

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
11 186
[WG] MedvedevTD
6 481 публикация
6 002 боя

Под 0.5.9 будет? А то все замерло на правке xml:popcorn:

 

Извините за задержку.

https://share.wargaming.net/d/aa4056d66c/

  • Плюс 2

Рассказать о публикации


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

 

Извините за задержку.

https://share.wargaming.net/d/aa4056d66c/

Да, всё получилось) А то с капсом и нечитаемыми дефолтными шрифтами никак не идет)

  • Плюс 1

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
610
[AKF] kubanmaster
667 публикаций
5 589 боёв

 

Правил файл icons.xml Менял цвет шрифта «дальность до цели».

Изменял только для вражеских кораблей.

<state type="normal,enemy,ship,alive,near,up">

<distance scaleX="1" scaleY="1" horizontalOffset="0" verticalOffset="-15" visible="true" pinnedTo="" fontColor="56FF09"/>

 

Делал всё по вышеприведённой инструкции.

Проверил в бою, цвет как был белый, так и остался.

Вот моя папка res_mods

 

https://yadi.sk/d/wHxTNjq6uRWvw

 

Подскажите пожалуйста, где я ошибся.

 

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
1 770
[FU-FU] BADoBEST
1 705 публикаций

Правил файл icons.xml Менял цвет шрифта «дальность до цели».

Изменял только для вражеских кораблей.

<state type="normal,enemy,ship,alive,near,up">

<distance scaleX="1" scaleY="1" horizontalOffset="0" verticalOffset="-15" visible="true" pinnedTo="" fontColor="56FF09"/>

 

Делал всё по вышеприведённой инструкции.

Проверил в бою, цвет как был белый, так и остался.

Вот моя папка res_mods

 

https://yadi.sk/d/wHxTNjq6uRWvw

 

Подскажите пожалуйста, где я ошибся.

 

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

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
610
[AKF] kubanmaster
667 публикаций
5 589 боёв

 

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

 

Хорошо, тогда другой вопрос. Почему размер шрифта можно изменить в этом файле, а цвет нельзя?

Хотя цвет тоже меняется, но буквально через секунду слетает на стандартный белый.

Какой-то файл в игре, отвечающий за параметры настройки цвета имеет бОльший приоритет, чем icons.xml

Не могу найти другой конфигурационный файл :(

Может этот fonts_all.swf

 

После декомпиляции, ко мне пришёл ваня сусанин и заплакал.

Помогите уже кто-нибудь, ну. 

 

 

 

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

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
3 246
[FLD] Sergbob
Старший бета-тестер, Мододел, Коллекционер-испытатель
[FLD]
9 034 публикации
10 043 боя

 

Хорошо, тогда другой вопрос. Почему размер шрифта можно изменить в этом файле, а цвет нельзя?

Хотя цвет тоже меняется, но буквально через секунду слетает на стандартный белый.

 

Могу только подсказать логику поисков, сам я в программировании не шарю от слова совсем. Цвет, скорее всего, динамически меняется скриптом, в зависимости от значения. Возможно стоит поискать в swf файлах, имеющих отношение к боевому интерфейсу. Если же это реализовано в питоновском скрипте, то их редактирование, увы, недоступно обычному мододелу. 

Если я ошибся, не пинайте сильно, а лучше научите :)

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
610
[AKF] kubanmaster
667 публикаций
5 589 боёв

Если я ошибся, не пинайте сильно, а лучше научите :)

Вот именно, я об этом и говорю. :)

А файлик то, fonts_all.swf, довольно занятный.

У гламурной раскраски уши оттуда видимо растут. :trollface:

Но к сожалению, после компиляции и замены, игра крашится.

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

 

 

Казалось бы, вроде совершенно безнапряжный мод. Изменение атрибута Color, в блоке <distance scaleX>, но

нет, установлено какое-то невероятное минное поле из граблей.

 

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
610
[AKF] kubanmaster
667 публикаций
5 589 боёв

Если же это реализовано в питоновском скрипте, то их редактирование, увы, недоступно обычному мододелу. 

 

Вот интересно, разработчики сюда вообще заглядывают?

Действительно, уже бы написали, так мол, и так, вы товарищ чересчур много хотите.:red_button:

Я бы может перестал биться головой об стену:panic_fish:

 

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
1 770
[FU-FU] BADoBEST
1 705 публикаций

Вот интересно, разработчики сюда вообще заглядывают?

Действительно, уже бы написали, так мол, и так, вы товарищ чересчур много хотите.:red_button:

Я бы может перестал биться головой об стену:panic_fish:

 

 

Разработчики вам не расскажут, как делать моды. И если не охота биться головой о стену, то лучше не начинать. Покрасить цвет расстояния, можно в файле gui_slots.swf. Но там есть нюанс. 
  • Плюс 1

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
610
[AKF] kubanmaster
667 публикаций
5 589 боёв

 

Разработчики вам не расскажут, как делать моды. И если не охота биться головой о стену, то лучше не начинать. Покрасить цвет расстояния, можно в файле gui_slots.swf. Но там есть нюанс. 

 

Спасибо тебе добрый человек. :)

На месяц мне там точно хватит, всяко разных выковыриваний. 

Рассказать о публикации


Ссылка на публикацию
Поделиться на других сайтах
610
[AKF] kubanmaster
667 публикаций
5 589 боёв

Но там есть нюанс. 

Это точно из разряда "Как заинтриговать человека":)

 

- Знаешь, как заинтриговать человека?

- Нет. Ну и как?

- Завтра расскажу.

Рассказать о публикации


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

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

    Эту страницу никто не просматривает.

×