Нейронка правильно разобралась или что то упустила:
Цитата:
Проанализировав все предоставленные файлы (`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:)
|