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=95)

SG2_Wasy 02.09.2007 19:40

Вопрос по джаве...
 
Захотелось мне вот из месса F-2 сделать F-1, для чего потребовалось заменить Мг151 на МгФФ, заморачиваться с новым самолетом не стал, решил добавить как доп вооружение, НО. Вообщем ил вылетает, попробовал заменить в стандарте мг151 на мгфф. Тож вылетает. Порылся исчо, нашел констант пул в котором и опиываются пушка с бк(соответственно при несовпадении с той что описывается в классе, все успешно вылетает), вообщем суть такая как добавить в этот констант пул новые значения?

Sexton 03.09.2007 08:16

{P
но попробуй привести тут содержимое класса

SG2_Wasy 03.09.2007 08:58

// 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
});
}
}

SG2_Wasy 03.09.2007 09:01

соответственно если заменить MGunMG151ki 200
на MGunMGFFk 60
Ил при загрузке выдает сообщение об ошибке при обращении к памяти и вываливается

SG2_Wasy 04.09.2007 05:10

Спецов похоже нету, печально.

Big-B 04.09.2007 11:28

к мышлаевскому. может он чего посоветует.
З.Ы. вопрос - кто мне подскажет как вообще со всем этим работать, чем пользоваться, и где всзять!
З.З.Ы. ну очень охотта....

SG2_Wasy 05.09.2007 20:39

Поковыряли ещё, проблема таки оказалась не в констант пуле, хз, не знаю куда дальше копать...

Myshlayevsky 06.09.2007 19:34

2БигБ
Мышлаевский сам плавает в вопросе.
Вопрос. закоментил класснотфаунд, а оно ццуко, выдало аж 28 ошибок. Шо делать?
Пытался прикрутить к поплавковому Арадо кабины от жучки 87Б2.

SG2_Wasy 07.09.2007 00:49

тебе надо подключить джава ЖДК, и правильно в батнике пути прописать.... Вот мне такой мануальчик дали...


Работать будет.Кстати 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

Myshlayevsky 08.09.2007 02:51

Спасибо, будем мучать(ся).

****** 08.09.2007 22:05

SG2_Wasy

Установить MG151/20 на Bf 109F-2/G-14/G-10/K-4 пробывал?
Попробуй установить две подкрыльевые MG151/20 на Bf 109F-4.

SG2_Wasy 09.09.2007 02:53

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

Myshlayevsky 09.09.2007 16:08

2 Вася
как конкретно прописать ЖДК? Желательно со скриншотами.

SG2_Wasy 09.09.2007 18:34

Вложений: 1
В переменной path там уже записано два пути, их нетрогай, через ";" добавь путь к java.exe(та что в папке ила) и путь к установленному jacac.exe(то что в папке с ждк)...
Рис прилагаю...

****** 09.09.2007 21:49

Ищи Вася,ищи.....;)

Jareny 09.09.2007 22:09

Цитата:

Сообщение от SG2_Wasy (Сообщение 1896)
Порылся исчо, нашел констант пул в котором и опиываются пушка с бк(соответственно при несовпадении с той что описывается в классе, все успешно вылетает), вообщем суть такая как добавить в этот констант пул новые значения?

Что за констант пул? Где его смотреть? Может я могу помочь чем?
Я так с кокпитами тоже пробовал. Делал кокпит к У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:

Jareny 09.09.2007 22:18

Из данного кода видно, что два первых слота отданы первой турели, на СБ это носовой стрелок с двумя пулеметами ШКАС, Третий и четвертый - верхнему и нижнему стрелку. Далее идут тройки. Это бомболюки, управляемые четвертой кнопкой джоя или альт-пробел. Короче бомбы
Цифра 2 - была цифрой 3. Я переделал на двойку для того, чтобы этим бомболюком управлять коммандой пуска рокет, третьей кнопкой либо пробелом. ноль и один - тоже были тройки. Это бомбовые подвески на пилонах. Теперь они управляются нажатием на гашетку пулемета и пушки соответственно, можно кидать по-отдельности :)
Работает только в 4.05, так как 4.08 именно этот кусок класса игнорирует, все остальные изменения он принимает безоговорочно (смену и добавление кокпита, флайтмодели, 3д-модели.)

2 Васи. Именно про эти индексы ты и спрашивал у меня на экстракторе.

Jareny 09.09.2007 22:30

2 Васи. Я хочу, чтобы обойти ограничение по оружию на 4.08, создать новый самолет, как Пе82. Ему можно будет навешать все, что угодно, и восьмерка должна будет это все проглотить. Поэтому нет смысла менять оружие у готовых самолетах, надо делать свой. Ну и естественно для онлайна это уже не покатит, как ты на нем будешь летать, если такого самолета нет ни у кого больше, кроме тебя? Давай думать в этом направлении. мне пока не удалось. Ищите Аборта, он делал уже

Jareny 09.09.2007 22:39

Цитата:

Сообщение от SG2_Wasy (Сообщение 1899)
соответственно если заменить MGunMG151ki 200
на MGunMGFFk 60
Ил при загрузке выдает сообщение об ошибке при обращении к памяти и вываливается

А если заменить на MGunMGFFki? Такая тоже ведь есть. А так же MGunMGFFkih, MGunMGFFs, MGunMGFFs, MGunMGFFsi, MGunMGFFt. Ну что у тебя на k свет клином сошелся? Помни, это для пятерки толко изменения. На восмерку только Ктим способен поставить. и ему подобные

SG2_Wasy 10.09.2007 06:04

Цитата:

Сообщение от Jareny (Сообщение 1946)
А если заменить на MGunMGFFki? Такая тоже ведь есть. А так же MGunMGFFkih, MGunMGFFs, MGunMGFFs, MGunMGFFsi, MGunMGFFt. Ну что у тебя на k свет клином сошелся? Помни, это для пятерки толко изменения. На восмерку только Ктим способен поставить. и ему подобные

Потому что такая же стоит на эмиле, пока здесь не сделаю, не имеет смысла идти дальше...


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

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