![]() |
Вопрос по джаве...
Захотелось мне вот из месса F-2 сделать F-1, для чего потребовалось заменить Мг151 на МгФФ, заморачиваться с новым самолетом не стал, решил добавить как доп вооружение, НО. Вообщем ил вылетает, попробовал заменить в стандарте мг151 на мгфф. Тож вылетает. Порылся исчо, нашел констант пул в котором и опиываются пушка с бк(соответственно при несовпадении с той что описывается в классе, все успешно вылетает), вообщем суть такая как добавить в этот констант пул новые значения?
|
{P
но попробуй привести тут содержимое класса |
// Decompiled by DJ v3.9.9.91 Copyright 2005 Atanas Neshkov Date: 03.09.2007 8:58:37
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: BF_109F2.java package com.maddox.il2.objects.air; import com.maddox.il2.ai.Wing; import com.maddox.il2.engine.HierMesh; import com.maddox.il2.fm.*; import com.maddox.rts.Property; // Referenced classes of package com.maddox.il2.objects.air: // BF_109, PaintSchemeFMPar03, Aircraft, NetAircraft public class BF_109F2 extends BF_109 { public BF_109F2() { kangle = 0.0F; } public void update(float f) { if(FM.getSpeed() > 5F) { hierMesh().chunkSetAngles("SlatL_D0", 0.0F, Aircraft.cvt(FM.getAOA(), 6.8F, 11F, 0.0F, 1.5F), 0.0F); hierMesh().chunkSetAngles("SlatR_D0", 0.0F, Aircraft.cvt(FM.getAOA(), 6.8F, 11F, 0.0F, 1.5F), 0.0F); } hierMesh().chunkSetAngles("Flap01L_D0", 0.0F, -16F * kangle, 0.0F); hierMesh().chunkSetAngles("Flap01U_D0", 0.0F, 16F * kangle, 0.0F); hierMesh().chunkSetAngles("Flap02L_D0", 0.0F, -16F * kangle, 0.0F); hierMesh().chunkSetAngles("Flap02U_D0", 0.0F, 16F * kangle, 0.0F); kangle = 0.95F * kangle + 0.05F * FM.EI.engines[0].getControlRadiator(); if(kangle > 1.0F) kangle = 1.0F; super.update(f); } public static void moveGear(HierMesh hiermesh, float f) { float f1 = 0.8F; float f2 = -0.5F * (float)Math.cos((double)(f / f1) * 3.1415926535897931D) + 0.5F; if(f <= f1 || f == 1.0F) { hiermesh.chunkSetAngles("GearL3_D0", 0.0F, -77.5F * f2, 0.0F); hiermesh.chunkSetAngles("GearL2_D0", -33.5F * f2, 0.0F, 0.0F); } f2 = -0.5F * (float)Math.cos((double)((f - (1.0F - f1)) / f1) * 3.1415926535897931D) + 0.5F; if(f >= 1.0F - f1) { hiermesh.chunkSetAngles("GearR3_D0", 0.0F, 77.5F * f2, 0.0F); hiermesh.chunkSetAngles("GearR2_D0", 33.5F * f2, 0.0F, 0.0F); } hiermesh.chunkSetAngles("GearC3_D0", 70F * f, 0.0F, 0.0F); if(f > 0.99F) { hiermesh.chunkSetAngles("GearL3_D0", 0.0F, -77.5F, 0.0F); hiermesh.chunkSetAngles("GearL2_D0", -33.5F, 0.0F, 0.0F); hiermesh.chunkSetAngles("GearR3_D0", 0.0F, 77.5F, 0.0F); hiermesh.chunkSetAngles("GearR2_D0", 33.5F, 0.0F, 0.0F); } if(f < 0.01F) { hiermesh.chunkSetAngles("GearL3_D0", 0.0F, 0.0F, 0.0F); hiermesh.chunkSetAngles("GearL2_D0", 0.0F, 0.0F, 0.0F); hiermesh.chunkSetAngles("GearR3_D0", 0.0F, 0.0F, 0.0F); hiermesh.chunkSetAngles("GearR2_D0", 0.0F, 0.0F, 0.0F); } } protected void moveGear(float f) { float f1 = 0.9F - (float)((Wing)getOwner()).aircIndex(this) * 0.1F; float f2 = -0.5F * (float)Math.cos((double)(f / f1) * 3.1415926535897931D) + 0.5F; if(f <= f1 || f == 1.0F) { hierMesh().chunkSetAngles("GearL3_D0", 0.0F, -77.5F * f2, 0.0F); hierMesh().chunkSetAngles("GearL2_D0", -33.5F * f2, 0.0F, 0.0F); } f2 = -0.5F * (float)Math.cos((double)((f - (1.0F - f1)) / f1) * 3.1415926535897931D) + 0.5F; if(f >= 1.0F - f1) { hierMesh().chunkSetAngles("GearR3_D0", 0.0F, 77.5F * f2, 0.0F); hierMesh().chunkSetAngles("GearR2_D0", 33.5F * f2, 0.0F, 0.0F); } hierMesh().chunkSetAngles("GearC3_D0", 70F * f, 0.0F, 0.0F); if(f > 0.99F) { hierMesh().chunkSetAngles("GearL3_D0", 0.0F, -77.5F, 0.0F); hierMesh().chunkSetAngles("GearL2_D0", -33.5F, 0.0F, 0.0F); hierMesh().chunkSetAngles("GearR3_D0", 0.0F, 77.5F, 0.0F); hierMesh().chunkSetAngles("GearR2_D0", 33.5F, 0.0F, 0.0F); } } public void moveSteering(float f) { if(FM.CT.getGear() < 0.98F) { return; } else { hierMesh().chunkSetAngles("GearC2_D0", 0.0F, -f, 0.0F); return; } } static Class _mthclass$(String s) { return Class.forName(s); ClassNotFoundException classnotfoundexception; classnotfoundexception; throw new NoClassDefFoundError(classnotfoundexception.getMes sage()); } private float kangle; static { Class class1 = com.maddox.il2.objects.air.BF_109F2.class; new NetAircraft.SPAWN(class1); Property.set(class1, "iconFar_shortClassName", "Bf109"); Property.set(class1, "meshName", "3DO/Plane/Bf-109F-2/hier.him"); Property.set(class1, "PaintScheme", new PaintSchemeFMPar03()); Property.set(class1, "meshName_hu", "3DO/Plane/Bf-109F-2(hu)/hier.him"); Property.set(class1, "PaintScheme_hu", new PaintSchemeFMPar03()); Property.set(class1, "yearService", 1941F); Property.set(class1, "yearExpired", 1944.5F); Property.set(class1, "FlightModel", "FlightModels/Bf-109F-2.fmd"); Property.set(class1, "cockpitClass", com.maddox.il2.objects.air.CockpitBF_109F2.class); Property.set(class1, "LOSElevation", 0.74205F); Aircraft.weaponTriggersRegister(class1, new int[] { 0, 0, 1 }); Aircraft.weaponHooksRegister(class1, new String[] { "_MGUN01", "_MGUN02", "_CANNON01" }); Aircraft.weaponsRegister(class1, "default", new String[] { "MGunMG17si 500", "MGunMG17si 500", "MGunMG151ki 200" }); Aircraft.weaponsRegister(class1, "none", new String[] { null, null, null }); } } |
соответственно если заменить MGunMG151ki 200
на MGunMGFFk 60 Ил при загрузке выдает сообщение об ошибке при обращении к памяти и вываливается |
Спецов похоже нету, печально.
|
к мышлаевскому. может он чего посоветует.
З.Ы. вопрос - кто мне подскажет как вообще со всем этим работать, чем пользоваться, и где всзять! З.З.Ы. ну очень охотта.... |
Поковыряли ещё, проблема таки оказалась не в констант пуле, хз, не знаю куда дальше копать...
|
2БигБ
Мышлаевский сам плавает в вопросе. Вопрос. закоментил класснотфаунд, а оно ццуко, выдало аж 28 ошибок. Шо делать? Пытался прикрутить к поплавковому Арадо кабины от жучки 87Б2. |
тебе надо подключить джава ЖДК, и правильно в батнике пути прописать.... Вот мне такой мануальчик дали...
Работать будет.Кстати Java Decompiler глючит если закидывать в него папки с подкаталогами. Ладно поехали: Для начала грохнуть все что ты до этого делал.(резолвер действительно имел косяк при замещении файлов) Снять дампы классов -> натравить резолвер (java -jar classresolver.jar ."). Скачать и установить JDK -> дописать в переменную PATH путь к папке .\jdk\bin(Мой Компьютер -> Свойства -> Дополнительно -> Переменные среды...после изменения- перезагрузиться ) Далее на примере файла HUD.class ,который у меня получилось благополучно декомпилировать изменить и скомпилировать назад. Итак.Декомпилируем HUD.class Создаем батник: @echo off for %%f in (*.java) do javac -classpath I:\IL-2\Files -source 1.3 -target 1.3 %%f (обрати внимание на параметр classpath- это твой путь к папке Files ) -> Кидаем батник в папку с HUD.java(.\Files\com\maddox\il2\game) -> Запускаем. Если все получилось- значит все было сделано правильно. Не получилось- будем разбираться. Удачи! java -jar classhasher.jar ." ПыСы. В переменных средах надо прописать ещё путь к самой джаве(не ждк которая) можно взять ту что идет с игрой в папке bin |
Спасибо, будем мучать(ся).
|
SG2_Wasy
Установить MG151/20 на Bf 109F-2/G-14/G-10/K-4 пробывал? Попробуй установить две подкрыльевые MG151/20 на Bf 109F-4. |
дык какая разница, если даже на ф2 ствол заменить неполучается, на всех остальных тот же исход будет.....
|
2 Вася
как конкретно прописать ЖДК? Желательно со скриншотами. |
Вложений: 1
В переменной path там уже записано два пути, их нетрогай, через ";" добавь путь к java.exe(та что в папке ила) и путь к установленному jacac.exe(то что в папке с ждк)...
Рис прилагаю... |
Ищи Вася,ищи.....;)
|
Цитата:
Я так с кокпитами тоже пробовал. Делал кокпит к У2 (не помню, какой кокпит), так он зараза вообще перестал грузиться. на других самолях нормально работает. Несколько летабов у меня есть уже На СБ в 4.05 поставил рокеты. Хоть чем-то стрелять можно стало. Научил стрелять по-отдельности правой и левой внешней бомбой (или рокетой, что поставишь). Просто поменял цыфру 3 на 2 или один. или ноль. Эти цыфры отвечают за то, кокой кнопкой джоя будут стрелять эти слоты. Если на мессере ты на любую пушку поставишь индекс 3, то она будет стрелять по комманде сбросить бомбы, цыфра 2 - это рокеты, 1 - пушки, 0 - пулеметы. Цыфры десять и больше - турели на многоместных. Aircraft.weaponTriggersRegister(class1, new int[] { 10, 10, 11, 12, 3, 3, 3, 3, 3, 3, 2, 1, 0 }); Aircraft.weaponHooksRegister(class1, new String[] { "_MGUN01", "_MGUN02", "_MGUN03", "_MGUN04", "_BombSpawn01", "_BombSpawn02", "_BombSpawn03", "_BombSpawn04", "_BombSpawn05", "_BombSpawn06", "_BombSpawn07", "_ExternalBomb01", "_ExternalBomb02" }); Aircraft.weaponsRegister(class1, "default", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", null, null, null, null, null, null, null, null, null }); Aircraft.weaponsRegister(class1, "6xfab50", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", "BombGunFAB50", "BombGunFAB50", "BombGunFAB50", "BombGunFAB50", "BombGunFAB50", "BombGunFAB50", null, null, null }); Aircraft.weaponsRegister(class1, "6xfab100", new String[] { "MGunShKASt 700", "MGunShKASt 700", "MGunShKASt 1000", "MGunShKASt 300", "BombGunFAB100", "BombGunFAB100", "BombGunFAB100", "BombGunFAB100", "BombGunFAB100", "BombGunFAB100", null, null, null }); Aircraft.weaponsRegister(class1, "1xfab250", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", null, null, null, null, null, null, "BombGunFAB250", null, null }); Aircraft.weaponsRegister(class1, "2xfab250", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", null, null, null, null, null, null, null, "BombGunFAB250", "BombGunFAB250" }); Aircraft.weaponsRegister(class1, "2xfab500", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", null, null, null, null, null, null, null, "BombGunFAB500", "BombGunFAB500" }); Aircraft.weaponsRegister(class1, "2xTorpedoMk13", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", null, null, null, null, null, null, "BombGunTorpMk13 2", null, null }); Aircraft.weaponsRegister(class1, "20xROFS132", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", null, null, null, null, null, null, "RocketGunROFS132 20", null, null }); Aircraft.weaponsRegister(class1, "Bouckett", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", "BombGunFAB50", "BombGunFAB50", "BombGunFAB50", "BombGunFAB50", "BombGunFAB50", "BombGunFAB50", "RocketGunROFS132 20", "BombGunFAB500", "BombGunFAB500" }); Aircraft.weaponsRegister(class1, "Katyusha", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", "BombGunPTAB25 100", "BombGunPTAB25 100", "BombGunPTAB25 100", "BombGunPTAB25 100", "BombGunPTAB25 100", "BombGunPTAB25 100", "RocketGunROFS132 20", "RocketGunM13 5", "RocketGunBRS132 5" }); Aircraft.weaponsRegister(class1, "1xFAB250_600xPTAB25_40xROFS132", new String[] { "MGunShKASt 960", "MGunShKASt 960", "MGunShKASt 1000", "MGunShKASt 500", "BombGunPTAB25 100", "BombGunPTAB25 100", "BombGunPTAB25 100", "BombGunPTAB25 100", "BombGunPTAB25 100", "BombGunPTAB25 100", "BombGunFAB250", "RocketGunROFS132 20", "RocketGunBRS132 20" }); Aircraft.weaponsRegister(class1, "none", new String[] { null, null, null, null, null, null, null, null, null, null, null, null, null }); Это кусок класса СБ2, мной переделанный. Обратите внимание и сравните с тем, что выдают ваши декомпиляторы. Вот такой кусок компилируется. Декомпилятор может добавлять мусор к некоторым словам, который нужно удалять, иначе компилятор не поймет. Я декомпилю двумя декомпилями, два файла сравниваю и на их основе создаю нормальный исходник - читабельный и без ошибок, который компилируется :cool: |
Из данного кода видно, что два первых слота отданы первой турели, на СБ это носовой стрелок с двумя пулеметами ШКАС, Третий и четвертый - верхнему и нижнему стрелку. Далее идут тройки. Это бомболюки, управляемые четвертой кнопкой джоя или альт-пробел. Короче бомбы
Цифра 2 - была цифрой 3. Я переделал на двойку для того, чтобы этим бомболюком управлять коммандой пуска рокет, третьей кнопкой либо пробелом. ноль и один - тоже были тройки. Это бомбовые подвески на пилонах. Теперь они управляются нажатием на гашетку пулемета и пушки соответственно, можно кидать по-отдельности :) Работает только в 4.05, так как 4.08 именно этот кусок класса игнорирует, все остальные изменения он принимает безоговорочно (смену и добавление кокпита, флайтмодели, 3д-модели.) 2 Васи. Именно про эти индексы ты и спрашивал у меня на экстракторе. |
2 Васи. Я хочу, чтобы обойти ограничение по оружию на 4.08, создать новый самолет, как Пе82. Ему можно будет навешать все, что угодно, и восьмерка должна будет это все проглотить. Поэтому нет смысла менять оружие у готовых самолетах, надо делать свой. Ну и естественно для онлайна это уже не покатит, как ты на нем будешь летать, если такого самолета нет ни у кого больше, кроме тебя? Давай думать в этом направлении. мне пока не удалось. Ищите Аборта, он делал уже
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Я декомпилирую ява-декомпилятором и Ёодой. Потомзаменяю кусок класса в исходнике от Jdec таким же куском от ёды, это кусок от слов public class BF_109F2 extends BF_109 в данном примере до слов static Class _mthclass$(String s) { return Class.forName(s); ClassNotFoundException classnotfoundexception; classnotfoundexception; throw new NoClassDefFoundError(classnotfoundexception.getMes sage()); } А этот кусок вообще ремлю или делитю. Дальше исправляю кусок от слов Aircraft.weaponTriggersRegister(class1, new int[] { можно тоже вставить из еды, но заменить варкласс на класс1, чтоб работало, а можно просто поудалять лишние символы типа _ перед словом Випон и все после слова регистер до скобки. Тогда будет работать. Чтобы получилось: Aircraft.weaponTriggersRegister(... Aircraft.weaponHooksRegister(... Aircraft.weaponsRegister(... Ну вот, теперь проверяем как компилится и как работает скомпиленное. Работает? Приступаем к изменению :) Вася, может и тебе этот способ подмогнет Сейчас не могу этим заняться, хотя тоже хочу попробовать, если у меня не получится, значит это какой-то феномен именно Мессеров, как кокпит у хенкеля. |
Вложений: 1
Цитата:
|
Ребята, думаю вопрос с пушкой для мессера исчерпан, давайте думать над тем, как же все-таки боты открывают бомболюки на бомберах. Они заранее их открывают, до того, как сбросят бомбы. Мы, простые смертные не можем их сами открыть, только во время сброса бомб открываются бомболюки. А так хочется глянуть на содержимое бомболюка не опорожняя его :)
|
Цитата:
И помимо того что ствол заменил ещё что-нибудь в коде делал? |
Я чтобы не париться, так как не надо было кокпит менять, декомпилировал только Ёдой, там без особого труда сменил пушку и декомпилировал. Ты скачай исходник и сравни с тем, что твой декомпиль выдает. В архиве заодно и скомпилированный. Сразу вставляй в игру и юзай.
Хотел вставить ссылки, но вспомнил правила этого раздела. |
Я ёду сскачал, на как она работает хз..... Я даж не понял как инсталлируется........ Главное научиться как изменять, а дальше без проблем.....
|
Вы главное результатами то делитесь ;)
|
Цитата:
|
Цитата:
|
Ёда написана на яве. Установи JDK (ява девелопмент кит) как описано на этом форуме, и ты сможешь запускать ява-приложения (с расширением JAR) как обычное эхешное. Еще желательное JRE (то есть ява рантайм энвиронмент).
Батник делается так. Копируешь комманду запуска в текстовый файл и сохраняешь его в любой файл с расширением бат. |
Все стоит, мля, у меня тупняк. Все прекрасно заработало......
|
Ребята, у кого какие предположения на счет бомболюков?
|
Цитата:
|
Я же говорил, хочу открывать их сам. без сброса бомб. Как боты это делают.
|
У меня проблема-немогу откомпилить файл.Пути прописаны.Компилятор ругается и нехотит компилировать.Команда javac -source 1.3 -target 1.3 fi_156.java тож не работает.Что делать???
|
какую ошибку пишет?
|
Вложений: 1
Длиннющий список багов
|
Чем декомпилировал? JDec?
Едой надо декомпилировать, тогда скомпилировуется все |
Декомпилировал DJ Java Dekompiler 3.5...
Щаз попробую ёдой Попробовал.Нехотит компилить. Выдаёт 7 ошибок: C:\123\FI_156.java:193: class$ is reserved for internal use /*synthetic*/ static Class class$(String string) { ^ C:\123\FI_156.java:217: cannot resolve symbol symbol : variable class$com$maddox$il2$objects$air$CockpitJU_87B2 location: class com.maddox.il2.objects.air.FI_156 { (class$com$maddox$il2$objects$air$CockpitJU_87B2 == null ^ C:\123\FI_156.java:218: cannot resolve symbol symbol : variable class$com$maddox$il2$objects$air$CockpitJU_87B2 location: class com.maddox.il2.objects.air.FI_156 ? (class$com$maddox$il2$objects$air$CockpitJU_87B2 ^ C:\123\FI_156.java:220: cannot resolve symbol symbol : variable class$com$maddox$il2$objects$air$CockpitJU_87B2 location: class com.maddox.il2.objects.air.FI_156 : class$com$maddox$il2$objects$air$CockpitJU_87B2), ^ C:\123\FI_156.java:221: cannot resolve symbol symbol : variable class$com$maddox$il2$objects$air$CockpitJU_87B2_Gu nner location: class com.maddox.il2.objects.air.FI_156 (class$com$maddox$il2$objects$air$CockpitJU_87B2_G unner == null ^ C:\123\FI_156.java:222: cannot resolve symbol symbol : variable class$com$maddox$il2$objects$air$CockpitJU_87B2_Gu nner location: class com.maddox.il2.objects.air.FI_156 ? (class$com$maddox$il2$objects$air$CockpitJU_87B2_G unner ^ C:\123\FI_156.java:224: cannot resolve symbol symbol : variable class$com$maddox$il2$objects$air$CockpitJU_87B2_Gu nner location: class com.maddox.il2.objects.air.FI_156 : class$com$maddox$il2$objects$air$CockpitJU_87B2_Gu nner) })); ^ 7 errors |
Текущее время: 08:57. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot