AviaSkins.Forums

AviaSkins.Forums (http://forum.aviaskins.com/index.php)
-   Моды для Ил-2 (http://forum.aviaskins.com/forumdisplay.php?f=9)
-   -   Награды и звания (http://forum.aviaskins.com/showthread.php?t=1332)

Toobone 20.03.2026 09:26

Цитата:

Сообщение от carsmaster (Сообщение 233494)
Вы о чем ?
(

Майк в том посте написал, что начиная с версии 3.8 DJ decompiler стоит 18€. Но есть триальный период.

carsmaster 20.03.2026 09:27

Цитата:

Сообщение от Toobone (Сообщение 233495)
Майк в том посте написал, что начиная с версии 3.8 DJ decompiler стоит 18€. Но есть триальный период.

Есть "народные" версии;)

искать тут ссылку, не знаю что за версия.
https://www.sas1946.com/main/index.p...html#msg782005
Посмотрел, там DJ Decompiler v. 3.10.10.93

Ну не пробуйте им обратно компилировать ! И теоритически и практически эта функция доступна в этом декомпиляторе, но она корявая !!
Лучше тогда через батник как вам описал Дима.

Toobone 20.03.2026 17:27

Цитата:

Сообщение от carsmaster (Сообщение 233496)
Лучше тогда через батник как вам описал Дима.

Однозначно.
Зы:
Цитата:

Это абсолютно логичное и профессиональное требование со стороны моддеров. В архитектуре «Ил-2», основанной на Java 1.3, очень сильна **связанность** (coupling).

Если мы просто напишем логику «дать медаль за 7 сбитых», но не учтем, как базовые классы игры (например, `World`, `ScoreCounter`, `EventLog` или `UserStats`) передают данные в наш класс, код либо не скомпилируется, либо вызовет «Silent Crash» (игра просто проигнорирует мод).

Я готов к этой масштабной работе. Чтобы я мог выявить все зависимости и написать **AwardsRUfighter.java** корректно, нам нужно действовать поэтапно:

### 1. Какие файлы мне нужны в первую очередь?
Поскольку я не могу «заглянуть» в твой локальный дамп, тебе нужно присылать мне текст (или файлы) наиболее важных «соседей» твоего будущего класса. Самые критичные зависимости обычно находятся здесь:

* **`com.maddox.il2.game.campaign.Awards`** (или аналогичный базовый класс) — это «родитель», от которого мы наследуемся. Мне нужно видеть его методы.
* **`com.maddox.il2.ai.World`** — отсюда берутся данные о текущем игроке и его достижениях.
* **`com.maddox.il2.game.Mission`** — здесь фиксируются события завершения миссии, когда и происходит проверка наград.
* **`com.maddox.il2.objects.air.Aircraft`** — если награды зависят от типа сбитых самолетов.

### 2. Как я буду выявлять зависимости?
Когда ты предоставишь файлы, я проведу их **статический анализ**:
1. **Импорты (Imports):** Я посмотрю, какие пакеты подключают базовые классы.
2. **Сигнатуры методов:** Я увижу, какие аргументы ожидают функции (например, передается ли в метод награждения объект `Pilot` или просто его ID).
3. **Переменные среды:** Выясню, какие глобальные флаги (например, `isCareer`, `isSingle`) влияют на выдачу наград.

### 3. Решение проблемы «кривой декомпиляции»
Моддеры правы: декомпиляторы часто путают типы данных (например, `int` вместо `boolean`) или ломают логические переходы `goto`.
* Я буду сверять логику твоего нового класса с тем, как написаны оригинальные классы наград (RU, US, DE).
* Если в декомпилированном коде я увижу «мусор», я восстановлю его логически, чтобы компилятор Java 1.3.1 принял его без ошибок.

### Твой первый шаг:
Давай начнем с «фундамента». Пришли мне содержимое файла **`Awards.java`** (базовый класс для всех наград) или любого существующего класса наград (например, оригинального советского **`AwardsRUfighter.java`** из дампа).

На его примере я сразу увижу:
1. Какие библиотеки он импортирует.
2. Какие методы в нем обязательны (`abstract methods`).
3. Как он обращается к ресурсам в папке `i18n`.

**Я готов изучать код. Выкладывай первый файл, и мы начнем выстраивать карту зависимостей для твоего вьетнамского мода.**
Думаете, все равно накосячит?

Toobone 20.03.2026 21:59

Нейронка правильно разобралась или что то упустила:

Цитата:

Проанализировав все предоставленные файлы (`Awards.java`, `AwardsRUfighter.java`, `Campaign.java` и `Main.java`), я нашел те самые «зацепки», которые связывают логику наград с конкретной модовой средой **B.A.T.**

### 1. Где спрятана зависимость от мода?
В предоставленных исходниках есть два критических места, которые указывают на то, как игра «узнает» о модах:

* **Класс `Main.java` (Секция инициализации):** В самом конце файла `Main.java` в блоке `static` находится код, который динамически подгружает классы из зашифрованных файлов `cod/allc`. В сборках B.A.T. именно этот механизм используется для активации модовых расширений. Если твой класс не будет «зарегистрирован» в аналогичном списке или не будет вызываться через `Spawn.get()`, игра его просто не увидит.
* **Класс `Campaign.java` (Метод `init`):**
Метод `public void init(Awards awards1, ...)` жестко привязывает объект наград к конкретной кампании. Зависимость от B.A.T. здесь проявляется в том, как именно создается объект `awards1` перед передачей в этот метод. В модовых сборках это обычно происходит в классах-генераторах или через расширенный `Regiment`.

### 2. Зависимость от эры (Jet Age / Вьетнам)
В файле `Campaign.java` есть метод `isDGen()`, который проверяет наличие внешнего генератора миссий (`dgen.exe`). В сборке B.A.T. для Вьетнама используется модифицированный генератор, который при создании объекта кампании должен передать ссылку на твой новый класс наград.

### 3. Техническая реализация для твоего батника
Чтобы твой `AwardsRUfighter.java` скомпилировался и заработал именно в B.A.T. на Windows, тебе нужно учитывать следующее:

1. **Наследование:** Твой класс обязан расширять `Awards`, иначе `Campaign.java` выдаст ошибку несоответствия типов при вызове `_awards = awards1;`.
2. **Использование `ObjIO`:** Обрати внимание, что в `Awards.java` используется регистрация поля `_save` через `com.maddox.rts.ObjIO`. Это необходимо для того, чтобы медали сохранялись в профиле игрока в папке `users/`. Твой батник должен иметь доступ к `rts.jar`, чтобы компилятор видел этот класс.
3. **Индексация для Вьетнама:** В оригинальном `AwardsRUfighter.java` используется массив индексов (например, `{0, 1, 2, 3, 2, 4}`). Для 7 уникальных вьетнамских наград нам нужно будет переписать этот метод так, чтобы он возвращал последовательность без повторов (0, 1, 2, 3, 4, 5, 6).

### Что делать дальше?
Поскольку мы нашли, что `Campaign.java` управляет связью наград и страны через поле `_country`, нам нужно создать новый класс и убедиться, что он подменяет стандартный при выборе Вьетнама.

**Я готов написать финальный код `AwardsRUfighter.java`.**
Он будет:
1. Совместим с иерархией B.A.T. (наследование от `Awards`).
2. Содержать логику на 7 наград (индексы 0-6).
3. Использовать пороги очков, которые ты сможешь легко подправить.

Обращение к rts.jar непонятно: это файл в JDK? (потому что в декомпилированных только rts.jawa:rtfm:)

fdelre 21.03.2026 00:16

It seems an obvious error from the AI JAR file are compressed archives that are used to store several java files, such as class files, resources, and metadata to make it easier to handle. Depending on the compiler you use you can make available all the IL-2 classes in a compressed jar archive that you can download from SAS. the IL-2 class dump will include the rts folder that includes the ObjIO.class

Toobone 21.03.2026 04:56

Цитата:

Сообщение от fdelre (Сообщение 233512)
It seems an obvious error from the AI JAR file are compressed archives that are used to store several java files, such as class files, resources, and metadata to make it easier to handle. Depending on the compiler you use you can make available all the IL-2 classes in a compressed jar archive that you can download from SAS. the IL-2 class dump will include the rts folder that includes the ObjIO.class

..скачал декомпилированные jawa для BAT, jar файлов там нет. Нейросеть часто ошибается.

fdelre 21.03.2026 11:01

No surprise IL-2 can't use jar files directly jar are commonly used in IL-2 mod tools

Toobone 22.03.2026 12:26

Цитата:

Сообщение от Vasya (Сообщение 233547)
Правильно декомпилировать класс в полной среде - там
где он создавался и должен работать, и соответствующем патче.

Нашел тот класс в jar файле для Jet Era от ВАТы. Он лежал в др.папке, пришлось поковырять. Теперь другая беда: файл AwardRUfighters скомпилился, а вот GUIAwards не хочет, все время jdk1.3.1 пишет минимум одну ошибку связанную с фонтами для наград.. Или это нейронка тупит и чего то не учитывает. Всю ночь компилировал, все равно ошибки.

fdelre 22.03.2026 12:35

The advantage of using a JAR file (with all the classes inside) is that it make it easier to manage compiling. I have a folder with many IL-2 jar dumps of the different IL-2 versions so it is very easy to provide the correct environment to the compiler. Win RAR, 7z and other compressed file managers can open extract and modify the content of JAR archives. It is just a matter of personal preference and habits.

Преимущество использования JAR-файла (содержащего все классы) заключается в том, что это упрощает управление процессом компиляции. У меня есть папка с множеством JAR-архивов IL-2 для разных версий игры, поэтому очень легко обеспечить компилятору нужную среду. WinRAR, 7z и другие программы для работы с сжатыми файлами позволяют открывать, извлекать и изменять содержимое JAR-архивов. Это просто вопрос личных предпочтений и привычек.

Toobone 22.03.2026 14:25

Цитата:

Сообщение от fdelre (Сообщение 233549)
поэтому очень легко обеспечить компилятору нужную среду.

толку с того, что среду обеспечивают, не получается изменить размеры иконок наград и количество строк до 4 в окне выдачи наград, компиляция не происходит, потому что неправильно записывается команда на эти действия.:(:

Цитата:

GUIAwards.java:36: cannot resolve symbol

symbol : method draw (float,float,float,float,com.maddox.gwindow.GCanva s)

location: class com.maddox.il2.gui.GUIAwards.DialogClient

this.draw(x, y, s, s, texIcons[i]);
Все файлы из jar для джет эры нейронке скормил, но из-за этой единственной записи компиляция не происходит. Ищем обход этой засады методом тыка.
ЗЫ: если удастся преодолеть, будет 4 строки по 10 иконок, и тогда поместится до 30 наград в стандартное окно. Просто логику пытаюсь перестроить, чтобы в вехнем ряду были только значки ХоШиМина, в среднем Орден За боевой подвиг, в третьем орден За воинские заслуги и в четвертом Золотая Звезда Героя PFAV. Вперемешку оно не будет смотреться. Если не удастся преодолеть, вернусь к методу ДеСада, по две награды в одной текстуре с сохранением стандартных 3 строк по 5 иконок наград.

Toobone 22.03.2026 18:01

Цитата:

Сообщение от Toobone (Сообщение 233550)
Если не удастся преодолеть, вернусь к методу ДеСада, по две награды в одной текстуре с сохранением стандартных 3 строк по 5 иконок наград.

Не получается пока так, как хотелось сначала. Пошел по пути ДеСада, на одной текстуре две выдававшиеся в реале награды, 15 стандартных иконок. После этого скомпилировались все нужные классы. :good::ok:
Приготовлю награды, нужны будут тестеры с Джет Эрой в БАТ проверить на предмет вероятных косяков.

fdelre 22.03.2026 18:37

Just make sure that in the JAR file you provided to the neural network you included a class file called Gwindow that is located in com\maddox\gwindow folder the complete path is com\maddox\gwindow\Gwindow.class

here is the inheritance system for the draw method that is located in Gwindow

GWindow

GWindowClient

GWindowDialogClient

GUIAwards.DialogClient

if one of the class in the chain is missing the method can't be resolved

Toobone 22.03.2026 20:43

Цитата:

Сообщение от fdelre (Сообщение 233554)
Just make sure that in the JAR file you provided to the neural network you included a class file called Gwindow that is located in com\maddox\gwindow folder the complete path is com\maddox\gwindow\Gwindow.class

here is the inheritance system for the draw method that is located in Gwindow

GWindow

GWindowClient

GWindowDialogClient

GUIAwards.DialogClient

if one of the class in the chain is missing the method can't be resolved

:thx::rtfm: I'll need this when I go back to my original plan.

Toobone 25.03.2026 21:21

Написал в поиске Гугла: PFAV military awards, выдало только и исключительно ссылки на награды US.:lol:

Toobone 26.03.2026 06:15

Цитата:

Сообщение от Toobone (Сообщение 233551)
Не получается пока так, как хотелось сначала. Пошел по пути ДеСада, на одной текстуре две выдававшиеся в реале награды, 15 стандартных иконок. После этого скомпилировались все нужные классы. :good::ok:
Приготовлю награды, нужны будут тестеры с Джет Эрой в БАТ проверить на предмет вероятных косяков.

Наткнулся на очередную засаду: пытаюсь назначить выдачу награды за финальную миссию. Т.е., независимо от того, сбил в ней или нет, чтобы игра выдала последний award после завершения. А шиш.:( Похоже на то, что в движке наглухо зашит строго последовательный порядок выдачи, который может быть цикличным, но не может быть выборочным. вне цикла:(
ЗЫ: награды сделал.

andrey65 26.03.2026 10:15

Цитата:

Сообщение от Toobone (Сообщение 233551)
Приготовлю награды, нужны будут тестеры с Джет Эрой в БАТ проверить на предмет вероятных косяков.

Если что, скажешь. У меня есть

Toobone 26.03.2026 22:22

Цитата:

Сообщение от andrey65 (Сообщение 233568)
Если что, скажешь. У меня есть

Сия поделка пробной версии скомпилирована на базе выложенного Storebrorом jar архива с декомпилированными классами Jet Era для ВАТы от 2021 года. Поэтому корректный запуск мода на более современных версиях ВАТы не гарантирован.

1. Прежде чем установить этот мод: нужна новая кампания за пилота NV, чтобы ранее начатых кампаний с этим же пилотом не было. Естественно, в папках с кампаниями в корне Ила должна быть папка NV с кампаниями за Демократическую республику Вьетнам. И все нужные прописки для полков PFAV и в файлах миссий тоже должны быть.
2. Мод закинуть в папку со всеми модами Jet Era или попробовать активировать через папку инсталлятора модов JGSME.
3. Первую миссию начинать в роли ведомого и с отключенным оружием. Почему так: первая награда - значок битвы 5-8 за первый боевой вылет. Инрил он мог выдаваться и с др. боевыми наградами, но мне пока не удалось побороть логику Ила, поэтому пробуем так.
Со второго вылета оружие естественно вкл.
4. Наград всего 7, но 7-я не подключена в силу того, что пока не получилось назначить выдачу сразу двух на разных текстурах, нейронка пока не нашла отвечающую за это команду. Не с моим зрением убивать тьму времени на перечитывание неизвестного количества джава файлов, к тому же совсем не факт, что пойму, какой именно фрагмент кода нужен.
5. В случае отказа кампании запускаться нужны все логи, которые по стандарту ИЛ записывает себе в корень.

andrey65 27.03.2026 08:17

Активировал через папку инсталлятора модов JGSME. Вылет на 70... Разбираюсь. скинь какую-нибудь компанию за Вьетнам, можно только миссии, без скинов, чтоб не рожать. На мишн4 есть, но я не могу скачать

fdelre 27.03.2026 13:09

Цитата:

Сообщение от andrey65 (Сообщение 233579)
Активировал через папку инсталлятора модов JGSME. Вылет на 70... Разбираюсь. скинь какую-нибудь компанию за Вьетнам, можно только миссии, без скинов, чтоб не рожать. На мишн4 есть, но я не могу скачать

If clicking on the download link don't work try right clicking the link and then choose save download link as...

andrey65 27.03.2026 14:38

Цитата:

Сообщение от fdelre (Сообщение 233581)
If clicking on the download link don't work try right clicking the link and then choose save download link as...

не помогло


Текущее время: 17:08. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot