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 01:59

Цитата:

Сообщение от Dimas1999 (Сообщение 233468)
https://www.sas1946.com/main/index.p...c,16403.0.html

Если стоит старый селектор, то необходимо поставить новый. В настройках поставить галочку dump mode. Один раз запустить игру и выйти после загрузки главного меню. После этого можно убрать галочку dump mode. В корневой папке с игрой будет папка dump. Из неё в удобное место перенести папку com.

Декомпилировать классы с помощью DJ Decompiller. Он хорошо подходит для Иловских классов.

Джава JDK 1.3.1
https://drive.google.com/file/d/16hb...usp=drive_link

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

Извлек все с помошью Селектора 4.0.

Toobone 20.03.2026 08:07

Цитата:

Сообщение от Dimas1999 (Сообщение 233468)
https://www.sas1946.com/main/index.p...c,16403.0.html

Декомпилировать классы с помощью DJ Decompiller. Он хорошо подходит для Иловских классов.

Считаете, что нейронка не в состоянии увидеть структуру файла без декомпиляции?

Цитата:

Сообщение от Dimas1999;233468
Джава JDK 1.3.1
[url
https://drive.google.com/file/d/16hbXoD2NTVN4al9XRVFC6QQpoxR5p6r_/view?usp=drive_link[/url]

А JDK для JAVA 8 64 битной, которая уже стоит у меня в Вин 7-64 не подойдет? Слишком новая? В команде указал версию 1.3 java, и cmd скомпилила файл класса. Будет ли работать, не знаю, есесно, но эталоном был стоковый Award.class.

Цитата:

Сообщение от Dimas1999 (Сообщение 233468)
Не думаю, что ИИ обучали на примере моддинга Ила и он сможет сделать что-то внятное.

"Папитка - нэ питка. Ни прауда ли, таварищ Жукав?";)

Dimas1999 20.03.2026 08:10

Джава нужна именно 1.3.1.

carsmaster 20.03.2026 08:18

Цитата:

Сообщение от Toobone (Сообщение 233474)
Считаете, что нейронка не в состоянии увидеть структуру файла без декомпиляции?

"Видеть" она может, что угодно, кто-ж ей запретит, вопрос не в этом(что она там увидит) вопрос в том что она тебе сделает на основании своих"видений":lol:

carsmaster 20.03.2026 08:26

Цитата:

Сообщение от Toobone (Сообщение 233474)
Считаете, что нейронка не в состоянии увидеть структуру файла без декомпиляции?

Если я правильно понимаю, то Вы хотите сделать аналог вот этого:

1. Есть два почти одинаковых двигателя, один раб. объемом 1.8 л другой 2.0л. Они во всем одинаковы, за исключением то, что в двигателе 2.0 л стоит коленвал с увеличенным радиусом кривошипа.

2. Кто-то хочет сделать из двигателя 1.8л двигатель 2.0л не разбирая двигатель и не меняя при этом на "увеличенный" коленвал. Тоесть прям внутри двигателя увеличить коленвал и уменьшить длину шатунов:(...

Toobone 20.03.2026 08:27

Цитата:

Сообщение от Dimas1999 (Сообщение 233475)
Джава нужна именно 1.3.1.

Это мне сносить стоящую там джаву 8 и ставить 1.3.1 только JDK? И как она в среде Вин7-64 работать станет?

Toobone 20.03.2026 08:33

Цитата:

Сообщение от carsmaster (Сообщение 233477)
Если я правильно понимаю, то Вы хотите сделать аналог двигателя.


Т. е., настолько все там затранскрибировано, что только оригинальный JDK?..связано одной цепью, маттьиво..

carsmaster 20.03.2026 08:35

Цитата:

Сообщение от Toobone (Сообщение 233478)
Это мне сносить стоящую там джаву 8 и ставить 1.3.1 только JDK? И как она в среде Вин7-64 работать станет?

Вот ссылка jdk1.3.1_28 :
https://storebror.it.cx/sas/java/jdk1.3.1_28.zip

Распаковать на диск С, работать (компиляция с помощью описанных батников) внутри папки bin.

Для компиляции нет нужды ставить jdk1.3.1 на комп. Все компиляция произойдет внутри папки , если все правильно сделать.

Попробуйте, я уже давно батниками не компилил, может что и упустил.
Я В эклипсе работаю.

Dimas1999 20.03.2026 08:35

По той ссылке, что я дал, надо скачать джаву 1.3.1. Из архива распаковать папку и положить её в удобное место. В батнике прописать путь к этой джаве.

Декомпилировать класс через DJ декомпилятор. причём класс должен находиться в среде с другими классами.

carsmaster 20.03.2026 08:43

Цитата:

Сообщение от Toobone (Сообщение 233479)
Т. е., настолько все там затранскрибировано, что только оригинальный JDK?..связано одной цепью, маттьиво..

Ну дело не в "оригинальности", дело в том, что нейронка то и увидит(прочтет скомпилированный байт-код), ну и что далее ?
Вам надо изменить например количество вылетов с 10 до 20 для получения
определенной награды, как нейронка это сделает не разобрав двигатель и собрав снова) ?

"Двигатель" собран на спецболтах(джава 1.3.1)

Toobone 20.03.2026 08:46

Цитата:

Сообщение от Dimas1999 (Сообщение 233466)
Для компиляции нужна среда целиком.

Т.е., вообще все извлеченные дампом классы следует декомпилировать а потом скомпилить на их основе нужные мне файлы, верно?
И всякий раз для каждой версии игры повторять процедуру?

carsmaster 20.03.2026 08:46

Цитата:

Сообщение от Dimas1999 (Сообщение 233481)
Декомпилировать класс через DJ декомпилятор. причём класс должен находиться в среде с другими классами.

Вот это товарищ должен принять как неизбежное и все наладится:beer:

carsmaster 20.03.2026 08:49

Цитата:

Сообщение от Toobone (Сообщение 233483)
Т.е., вообще все извлеченные дампом классы следует декомпилировать а потом скомпилить на их основе нужные мне файлы, верно?

Все классы не нужно декомпилировать, надо декомпилировать только нужные вам классы которые вы будете изменять, но декомпиляция должно производится в окружении всех остальных классов используемых в ИЛ-2.
И обратная компиляция тоже должна происходить в том же окружении

Цитата:

Сообщение от Toobone (Сообщение 233483)
И всякий раз для каждой версии игры повторять процедуру?

Ну эту боль не избежать.....:lol::beer:

ПыСы
Вот поэтому многие модеры не поддерживают кучу версий игры. Выбрали одну и в ней работают и творят.

Toobone 20.03.2026 08:54

Цитата:

Сообщение от carsmaster (Сообщение 233482)
"Двигатель" собран на спецболтах(джава 1.3.1)

Попробую нейронке подсунуть декомпилированные исходники классов, пусть изучит. Не факт, что она не упустит что нить важное, потому как ошибается довольно часто даже в простом наборе текста в ответах.
Хвалят Грок, но это может быть просто реклама.
Все равно написать команды для класса выдачи наград придется с нейронкой, не знаю джаву от слова совсем.

carsmaster 20.03.2026 08:58

Цитата:

Сообщение от Toobone (Сообщение 233486)
Попробую ей подсунуть декомпилированные исходники классов, пусть изучит..

А ваша "любимая" леди ИИ про остальные классы нужные для работы вашего класса уведомленна ?
Перефразирую: Она знает словарь(остальные классы), чтобы написать сочинение ?

Toobone 20.03.2026 09:01

Цитата:

Сообщение от carsmaster (Сообщение 233484)
Вот это товарищ должен принять как неизбежное и все наладится:beer:

..та ну, кому это нужно, кто это выдержит. Начну из готовых от Майка компилить. Все равно для ВАТы сначала делать, у меня только Дигенпак 3.01, не проверю без подготовки. Как много возни, ё...

Toobone 20.03.2026 09:03

Цитата:

Сообщение от carsmaster (Сообщение 233487)
Перефразирую: Она знает словарь(остальные классы), чтобы написать сочинение ?

Скормлю. И оно себя позиционирует как м.р. ( если с ним на РУ общаешься).

carsmaster 20.03.2026 09:03

Цитата:

Сообщение от Toobone (Сообщение 233488)
..та ну, кому это нужно, кто это выдержит.

"Как скажешь начальник":D

Toobone 20.03.2026 09:07

Цитата:

Сообщение от carsmaster (Сообщение 233484)
Вот это товарищ должен принять как неизбежное и все наладится:beer:

это за который теперь 18$ нужно выложить, как Майк уточнил у себя в посте?:rolleyes:

carsmaster 20.03.2026 09:08

Цитата:

Сообщение от Toobone (Сообщение 233493)
это за который теперь 18$ нужно выложить, как Майк уточнил у себя в посте?:rolleyes:

Вы о чем ?

Если DJ Decompiler v. 3.10.10.93 или чуть меньше версия, то и на SaS и в сети полно ссылок на "народную" версию. Новые версии декомпиляторов могут не понимать старую джава 1.3.1.
Указан оптимальный декомпилятор.

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

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:)


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

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