|
|
|
#321 |
|
Greif11
Join Date: 27.08.2008
Location: FUBAR city Mariupol
Posts: 1643
|
Орудие без боекомплекта наводится или у бота БК бесконечен?
Прикрутить не прожектор а фару к GUN.
__________________
|
|
|
|
|
|
#322 | |
|
Звичайна людина на Землі
Join Date: 06.11.2011
Location: Україна, м.Київ, Печерський район, вул. Кіквідзе
Posts: 8363
|
Quote:
Там в шипс-дженерик есть разделы ии стрельбы из орудий и флаков(анти-айр). Проблема не в приделывания мешей прожектора к иерархии корабля. Думаю что это для кораблестроителей не особо сложно. Проблема в том, что бы корабль научился пользоваться мешами прожектора именно в режиме прожектора, а не в режиме флака. Гунам в классах шип-дженерик вообще половину кода посвящено. Говорится там и о том, что класс орудия нужно искть в разделе веапонс с указанием конкретного адреса. Вот: Code:
for(i = 0; sectfile.sectionIndex(s + ":Gun" + i) >= 0; i++);
shipproperties.guns = new ShipGunProperties[i];
shipproperties.WEAPONS_MASK = 0;
shipproperties.ATTACK_MAX_DISTANCE = 1.0F;
for(int j = 0; j < i; j++)
{
shipproperties.guns[j] = new ShipGunProperties();
ShipGunProperties shipgunproperties = shipproperties.guns[j];
String s1 = s + ":Gun" + j;
String s2 = "com.maddox.il2.objects.weapons." + getS(sectfile, s1, "Gun");
try
{
shipgunproperties.gunClass = Class.forName(s2);
}
catch(Exception exception)
{
System.out.println("Ship: Can't find gun class '" + s2 + "'");
throw new RuntimeException("Can't register Ship object");
}
shipgunproperties.WEAPONS_MASK = Gun.getProperties(shipgunproperties.gunClass).weaponType;
if(shipgunproperties.WEAPONS_MASK == 0)
{
System.out.println("Ship: Undefined weapon type in gun class '" + s2 + "'");
throw new RuntimeException("Can't register Ship object");
}
shipproperties.WEAPONS_MASK |= shipgunproperties.WEAPONS_MASK;
shipgunproperties.ATTACK_MAX_DISTANCE = getF(sectfile, s1, "AttackMaxDistance", 6F, 50000F);
shipgunproperties.ATTACK_MAX_RADIUS = getF(sectfile, s1, "AttackMaxRadius", 6F, 50000F);
shipgunproperties.ATTACK_MAX_HEIGHT = getF(sectfile, s1, "AttackMaxHeight", 6F, 15000F);
if(shipgunproperties.ATTACK_MAX_DISTANCE > shipproperties.ATTACK_MAX_DISTANCE)
shipproperties.ATTACK_MAX_DISTANCE = shipgunproperties.ATTACK_MAX_DISTANCE;
shipgunproperties.TRACKING_ONLY = false;
if(sectfile.exist(s1, "TrackingOnly"))
shipgunproperties.TRACKING_ONLY = true;
shipgunproperties.ATTACK_FAST_TARGETS = 1;
if(sectfile.exist(s1, "FireFastTargets"))
{
float f = getF(sectfile, s1, "FireFastTargets", 0.0F, 2.0F);
shipgunproperties.ATTACK_FAST_TARGETS = (int)(f + 0.5F);
if(shipgunproperties.ATTACK_FAST_TARGETS > 2)
shipgunproperties.ATTACK_FAST_TARGETS = 2;
}
Можно - конечно - пойти путём писания нового класса для прожектора, отвязывая его от раздела машинок(кар) и делая в разделе шипс. Но мне более нравится идея обойтись без отдельного класса корабельного прожектора, а классах шипс делать новий раздел для мешей прожектора и вставлять туда полностью ии прожектора. Я думаю что всё же легче будет приделать код управления мешами прожектора в шип-дженерик, дабы их можно было безболезненно вкладывать в иерархию кораблей. Код ии есть готовый, его только вписать нужно правильно. Это вполне под силу программеру, который знаком со средой Ила. Любители вроде меня не смогут это адекватно прописать. Или кто на САС возмёться или Асура. Такие мысли. Last edited by Vasya : 20.12.2017 at 06:13 |
|
|
|
|
|
|
#323 | |
|
Местный
Join Date: 26.12.2013
Location: Донецьк Україна
Posts: 1848
|
Quote:
Я конечно не специалист и многого пока не понимаю, но мне кажется, что этот путь предпочтительнее. |
|
|
|
|
|
|
#324 |
|
Местный
Join Date: 26.12.2013
Location: Донецьк Україна
Posts: 1848
|
Подскажите пожалуйста, это нечто подобное записям ходовых огней и огней взлетной палубы на Хирю и Исэ от Кодама?
|
|
|
|
|
|
#325 | |
|
Звичайна людина на Землі
Join Date: 06.11.2011
Location: Україна, м.Київ, Печерський район, вул. Кіквідзе
Posts: 8363
|
Quote:
Я с телефона щас. Комп работает очень нестабильно. Може работать хоть 10 часов, а может 10 минут. Гаснет экран и нет звука и изображения. Хотя комп жужжит. Иногда выбивает синий екран и опять таки потом гаснет всё. При перезапуске не включается изображение. Помогает перестановка штекеров/вилок в переноске. Вчера не смог делать классы. Думаю что материнка уже фсьо. Новая с ядром до 16-и тысяч в розетке. Грошей ма. Бяда - бяда. Винду переставлял две недели назад из-за таких же симптомов - помогло на 3 дня. Видеокарта чищена/дмухана и елозяна кисточкой - никаких полос или бликов при работе не даёт. Температура 23 - 36 градусов - двери балкона открываю и сижу в подстёжке. Такие дела. --------------------------- Думаю отдельный класс прожектора в разделе шип не нужен - ведь не роставишь корабль на корабль. А вот прописать новые меши(прожектора) в иерархию самое правильное. Этим мешам как раз и можно притулить оригинальное ии и дженерик прожектора. Но для такого дела нужны знания писания кода джавы с нуля, а не собирания кирпичиков и раствора как делаю я. |
|
|
|
|
|
|
#326 | ||
|
Местный
Join Date: 26.12.2013
Location: Донецьк Україна
Posts: 1848
|
Quote:
Quote:
Этого как раз и нет... Пытаюсь учить яву самостоятельно, но все как то уж очень сложно....
|
||
|
|
|
|
|
#327 |
|
Местный
Join Date: 26.12.2013
Location: Донецьк Україна
Posts: 1848
|
|
|
|
|
|
|
#328 |
|
Местный
Join Date: 26.12.2013
Location: Донецьк Україна
Posts: 1848
|
В классе орудия, прописываются визуальные эффекты, характеристика снаряда и заряда. Градусы наведения по вертикали и горизонтали,
скорострельность и время перезарядки, а также приоритет цели, указывается в шип.ини. Вопрос знающим камрадам, где сидит ИИ, непосредственно управляющий орудием? Или как заставить орудие, стрелять, только ночью? |
|
|
|
|
|
#329 |
|
Звичайна людина на Землі
Join Date: 06.11.2011
Location: Україна, м.Київ, Печерський район, вул. Кіквідзе
Posts: 8363
|
|
|
|
|
|
|
#330 |
|
Местный
Join Date: 26.12.2013
Location: Донецьк Україна
Posts: 1848
|
М-м-д-а-а... Все печальнее чем я думал...
Правда Кодама в своих работах шип-дженерик не менял. Он добавлял функции непосредственно в класс корабля... Да и с системой наведения огней, ему работать не было необходимости. Все очень сложно, в первый раз... |
|
|
|
|
|
#331 |
|
Местный
Join Date: 26.12.2013
Location: Донецьк Україна
Posts: 1848
|
Зачем тогда гун-генерик?
|
|
|
|
|
|
#332 |
|
Местный
Join Date: 26.12.2013
Location: Донецьк Україна
Posts: 1848
|
К сожалению самостоятельно с прожекторами не справиться. Рассказал зарубежным коллегам с SAS о нашей "прожекторной" идее и проблемах с её реализацией. По ходу консилиума было решено, что необходимо править корабельные генерик-классы. Ваша идея Vasya. Думаю если несколько специалистов не зависимо друг от друга приходят к одной идее, значит направление выбрано верное.
|
|
|
|
|
|
#333 |
|
Звичайна людина на Землі
Join Date: 06.11.2011
Location: Україна, м.Київ, Печерський район, вул. Кіквідзе
Posts: 8363
|
Есть вопрос к понимающим в кодах.
Нужно прямо в клас крафта прописать авто-радиатор. Код в класс вписал, но он почему то не работает. Хотя всё компилится. Код: Code:
public BF_109E_4MN()
{
reference = null;
}
Code:
public void updateRadiator(float f)
{
if((reference.actor instanceof BF_109E_4MN))
{
if(tOilOut > tOilOutMaxRPM)
{
controlRadiator += 0.1F * f;
if(controlRadiator > 1.0F)
controlRadiator = 1.0F;
} else
{
controlRadiator = 1.0F - reference.getSpeed() / reference.VmaxH;
if(controlRadiator < 0.0F)
controlRadiator = 0.0F;
}
}
}
public boolean isAllowsAutoRadiator()
{
if(World.cur().diffCur.ComplexEManagement)
{
if((reference.actor instanceof BF_109E_4MN))
return true;
switch(propAngleDeviceType)
{
case 7: // '\007'
return true;
case 8: // '\b'
return type == 2;
}
return false;
} else
{
return true;
}
}
public boolean isHasControlRadiator()
{
return bHasRadiatorControl;
}
public float getControlRadiator()
{
return controlRadiator;
}
Code:
public float tOilOutMaxRPM;
public float tOilOut;
public float controlRadiator;
private boolean bHasRadiatorControl;
private int propAngleDeviceType;
private int type;
private FlightModel reference;
--------------------------------------- Если писать вот такие строки: Code:
public void onAircraftLoaded()
{
super.onAircraftLoaded();
if((Aircraft)((Interpolate) (super.FM)).actor instanceof BF_109E_4MN)
((FlightModelMain) (super.FM)).EI.engines[0].setAfterburnerType(10);
((FlightModelMain) (super.FM)).EI.engines[0].setControlPropAuto(true);
((FlightModelMain) (super.FM)).AS.wantBeaconsNet(true);
}
А так: Code:
((FlightModelMain) (super.FM)).EI.engines[0].setControlRadiator(AllowsAutoRadiator); Last edited by Vasya : 29.01.2018 at 12:36 |
|
|
|
|
|
#334 |
|
Звичайна людина на Землі
Join Date: 06.11.2011
Location: Україна, м.Київ, Печерський район, вул. Кіквідзе
Posts: 8363
|
Если при декомпиляции разных "сложных" классов вылазяет вот такое:
Code:
bIsMaster = flag;
i = 0;
_L3:
if(i >= 4) goto _L2; else goto _L1
_L1:
try
{
astateEffectChunks[i + 0] = actor.findHook("_Tank" + (i + 1) + "Burn").chunkName();
astateEffectChunks[i + 0] = astateEffectChunks[i + 0].substring(0, astateEffectChunks[i + 0].length() - 1);
Aircraft.debugprintln(aircraft, "AS: Tank " + i + " FX attached to '" + astateEffectChunks[i + 0] + "' substring..");
}
catch(Exception exception) { }
continue; /* Loop/switch isn't completed */
Exception exception5;
exception5;
throw exception5;
i++;
goto _L3
_L2:
i = 0;
_L6:
if(i >= aircraft.FM.EI.getNum()) goto _L5; else goto _L4
_L4:
try
{
astateEffectChunks[i + 4] = actor.findHook("_Engine" + (i + 1) + "Smoke").chunkName();
astateEffectChunks[i + 4] = astateEffectChunks[i + 4].substring(0, astateEffectChunks[i + 4].length() - 1);
Aircraft.debugprintln(aircraft, "AS: Engine " + i + " FX attached to '" + astateEffectChunks[i + 4] + "' substring..");
}
catch(Exception exception1) { }
continue; /* Loop/switch isn't completed */
Exception exception6;
exception6;
throw exception6;
i++;
goto _L6
_L5:
i = 0;
_L9:
if(i >= astateNavLightsEffects.length) goto _L8; else goto _L7
_L7:
Там нужно писать типа так: Code:
bIsMaster = flag;
for(int i = 0; i < 4; i++)
try
{
astateEffectChunks[i + 0] = actor.findHook("_Tank" + (i + 1) + "Burn").chunkName();
astateEffectChunks[i + 0] = astateEffectChunks[i + 0].substring(0, astateEffectChunks[i + 0].length() - 1);
Aircraft.debugprintln(aircraft, "AS: Tank " + i + " FX attached to '" + astateEffectChunks[i + 0] + "' substring..");
}
catch(Exception exception) { }
finally { }
Code:
for(int j = 0; j < ((FlightModelMain) (((SndAircraft) (aircraft)).FM)).EI.getNum(); j++)
try
И ещё: бывает при декомпиляции появляются лишние строки, которые рассказывают нам о том, что есть блок команд, который не совсем похож на метод в других классах среды., то есть - не так записана пунктуация. Вот и вылазяет: Code:
byte byte0;
if(!bIsAboutToBailout)
break MISSING_BLOCK_LABEL_1119;
if(astateBailoutStep >= 0 && astateBailoutStep < 2)
{
if(aircraft.FM.CT.cockpitDoorControl > 0.5F && aircraft.FM.CT.getCockpitDoor() > 0.5F)
{
astateBailoutStep = 11;
doRemoveBlisters();
} else
{
astateBailoutStep = 2;
}
break MISSING_BLOCK_LABEL_1119;
}
Code:
if(astateBailoutStep >= 0 && astateBailoutStep < 2)
{
Вместо миссинг-блок ниже в командах(подразделах) пишется так: Code:
{
astateBailoutStep = 2;
}
} else
Как то вот так. Шо понял - то и написал. Может кому пригодится для делания модов. ![]()
Last edited by Vasya : 01.04.2018 at 17:15 |
|
|
|
|
|
#335 |
|
Модератор
Join Date: 28.02.2007
Location: Тула, Россия
Posts: 1892
|
Еще вариант - использовать другой декомпилятор. Их вообще несколько и все по разному декомпилируют. Кроме DJ Java Decompiler есть еще:
JD Decompiler Procyon Decompiler Fernflower Decompiler Используя альтернативы можно получить вполне приемлемый результат декомпиляции сложных классов без правки. |
|
|
|
|
|
#336 |
|
Местный
Join Date: 12.07.2015
Posts: 417
|
А самый правильный - дизассемблировать и посмотреть что реально в коде происходит и поправить в соответствии с кодом.
|
|
|
|
|
|
#337 | |
|
Звичайна людина на Землі
Join Date: 06.11.2011
Location: Україна, м.Київ, Печерський район, вул. Кіквідзе
Posts: 8363
|
Quote:
![]() Нэ святи горшки липлять. ![]() Я только любитель (почитать Иловские коды) - для меня джава классы как стихосложение - безумно нравится. Хобби для ума и тренировка логики. А вот джава скрипт на вкус показался скисшей окрошкой, по нашему - помыями. Но со скриптом слабо знаком. Всю осень пытался править Т-34 против Тигра. Всё свалено в кучу - голову сломать можно за час другой попыток собрать в логическую структуру мозаику кода. Может просто кодеры такие были. Любую страницу кода видео или сайта открываешь и на джаве всё понятно в общем о чём идёт речь. Отличный язык, интуитивно понятный.
Last edited by Vasya : 03.04.2018 at 00:05 |
|
|
|
|
|
|
#338 | |
|
Звичайна людина на Землі
Join Date: 06.11.2011
Location: Україна, м.Київ, Печерський район, вул. Кіквідзе
Posts: 8363
|
Quote:
Ну и преодоление трудностей повышает самооценку. ![]() Джава как наркотик - уже не слезешь. Малой закончит скоро коледж и я пойду учиться(как завещал "вечно-живой" дедушка). ---------------------------------- Не подскажите (будьте добры) как записать работающий метод автомата винта прямо в класс самолёта?! Очень нужно. Выше по странице я спрашивал. Last edited by Vasya : 03.04.2018 at 00:04 |
|
|
|
|
|
|
#339 |
|
Модератор
|
Не подскажете ли, камераден, как бы такую бяку вылечить?..
Code:
[15:22:21] java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 [15:22:21] at java.util.ArrayList.RangeCheck(Unknown Source) [15:22:21] at java.util.ArrayList.get(Unknown Source) [15:22:21] at com.maddox.gwindow.GWindowComboControl.get(GWindowComboControl.java:119) [15:22:21] at com.maddox.gwindow.GWindowComboControl.setSelected(GWindowComboControl.java:124) [15:22:21] at com.maddox.il2.gui.GUIAirArming.selectWeapon(GUIAirArming.java:836) [15:22:21] at com.maddox.il2.gui.GUIAirArming._enter(GUIAirArming.java:735) [15:22:21] at com.maddox.il2.game.GameState.enterPush(GameState.java:92) [15:22:21] at com.maddox.il2.game.GameStateStack.push(GameStateStack.java:55) [15:22:21] at com.maddox.il2.game.GameStateStack.push(GameStateStack.java:44) [15:22:21] at com.maddox.il2.gui.GUIQuick$WButtonArming.notify(GUIQuick.java:681) [15:22:21] at com.maddox.gwindow.GWindowDialogControl._notify(GWindowDialogControl.java:51) [15:22:21] at com.maddox.il2.gui.GUIButton._notify(GUIButton.java:18) [15:22:21] at com.maddox.gwindow.GWindowDialogControl.mouseClick(GWindowDialogControl.java:86) [15:22:21] at com.maddox.il2.gui.GUIButton.mouseClick(GUIButton.java:22) [15:22:21] at com.maddox.gwindow.GWindow._mouseButton(GWindow.java:556) [15:22:21] at com.maddox.gwindow.GWindowRoot.doMouseButton(GWindowRoot.java:251) [15:22:21] at com.maddox.gwindow.GWindowManager.doMouseButton(GWindowManager.java:69) [15:22:21] at com.maddox.il2.engine.GUIWindowManager.msgMouseButton(GUIWindowManager.java:126) [15:22:21] at com.maddox.rts.MsgMouse.invokeListener(MsgMouse.java:98) [15:22:21] at com.maddox.rts.Message._send(Message.java:1217) [15:22:21] at com.maddox.rts.Message.sendToObject(Message.java:1191) [15:22:21] at com.maddox.rts.Message.sendToArray(Message.java:1147) [15:22:21] at com.maddox.rts.Message.sendTo(Message.java:1128) [15:22:21] at com.maddox.rts.Message.trySend(Message.java:1115) [15:22:21] at com.maddox.rts.Time.loopMessages(Time.java:180) [15:22:21] at com.maddox.rts.RTSConf.loopMsgs(RTSConf.java:101) [15:22:21] at com.maddox.il2.game.MainWin3D.loopApp(MainWin3D.java:131) [15:22:21] at com.maddox.il2.game.Main.exec(Main.java:449) [15:22:21] at com.maddox.il2.game.GameWin3D.main(GameWin3D.java:235) [15:22:26] java.lang.ArrayIndexOutOfBoundsException [15:22:26] at com.maddox.il2.gui.GUIQuick$ItemWing.setWeapon(GUIQuick.java:917) [15:22:26] at com.maddox.il2.gui.GUIQuick$WComboLoadout.notify(GUIQuick.java:659) [15:22:26] at com.maddox.gwindow.GWindowComboControl.setSelected(GWindowComboControl.java:129) [15:22:26] at com.maddox.gwindow.GWindowComboControl$ListArea.mouseButton(GWindowComboControl.java:235) [15:22:26] at com.maddox.gwindow.GWindow._mouseButton(GWindow.java:569) [15:22:26] at com.maddox.gwindow.GWindowRoot.doMouseButton(GWindowRoot.java:251) [15:22:26] at com.maddox.gwindow.GWindowManager.doMouseButton(GWindowManager.java:69) [15:22:26] at com.maddox.il2.engine.GUIWindowManager.msgMouseButton(GUIWindowManager.java:126) [15:22:26] at com.maddox.rts.MsgMouse.invokeListener(MsgMouse.java:98) [15:22:26] at com.maddox.rts.Message._send(Message.java:1217) [15:22:26] at com.maddox.rts.Message.sendToObject(Message.java:1191) [15:22:26] at com.maddox.rts.Message.sendToArray(Message.java:1147) [15:22:26] at com.maddox.rts.Message.sendTo(Message.java:1128) [15:22:26] at com.maddox.rts.Message.trySend(Message.java:1115) [15:22:26] at com.maddox.rts.Time.loopMessages(Time.java:180) [15:22:26] at com.maddox.rts.RTSConf.loopMsgs(RTSConf.java:101) [15:22:26] at com.maddox.il2.game.MainWin3D.loopApp(MainWin3D.java:131) [15:22:26] at com.maddox.il2.game.Main.exec(Main.java:449) [15:22:26] at com.maddox.il2.game.GameWin3D.main(GameWin3D.java:235) Ну, т. е. игра загружается, но вот при попытке выбрать крафт вылезают - насколько мну понимаю - проблемы с вооружением
|
|
|
|
|
|
#340 |
|
Модератор
Join Date: 28.02.2007
Location: Тула, Россия
Posts: 1892
|
В первую очередь надо класс проверять. Если конструкция такая:
Code:
try
{
ArrayList arraylist = new ArrayList();
Property.set(class1, "weaponsList", arraylist);
HashMapInt hashmapint = new HashMapInt();
Property.set(class1, "weaponsMap", hashmapint);
byte byte0 = 38;
Aircraft._WeaponSlot a_lweaponslot[] = new Aircraft._WeaponSlot[byte0];
String s = "default";
a_lweaponslot[36] = new Aircraft._WeaponSlot(7, "RocketGunFlare_gn16", 120); a_lweaponslot[37] = new Aircraft._WeaponSlot(8, "RocketGunChaff_gn16", 120); занимает эти пивоты. количество считается от 1 до N (в примере до 38), а индекс пивота от 0 до N-1 (в примере - 37). Если добавить пивот 38 - будет подобная ошибка. Иногда декомпилятор в эту модную конструкцию добавляет строки вида Code:
weaponsRegister(cls, "1xfab2502xrrab3", new String[] { "MGunBrowning50k 350","MGunBrowning50k 350","MGunBrowning50k 350","MGunBrowning50k 350","MGunBrowning50k 350","MGunBrowning50k 350", "MGunBrowning50t 400","MGunBrowning50t 400", "MGunBrowning303t 400", "BombGunRRAB3","BombGunRRAB3",null,null,null,null,null,null,null,null,"BombGunFAB250", null, null, null });
|
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|