20.12.2017, 01:41 | #321 |
Greif11
Регистрация: 27.08.2008
Адрес: FUBAR city Mariupol
Сообщений: 1,520
|
Орудие без боекомплекта наводится или у бота БК бесконечен?
Прикрутить не прожектор а фару к GUN.
__________________
|
20.12.2017, 06:10 | #322 | |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,088
|
Цитата:
Там в шипс-дженерик есть разделы ии стрельбы из орудий и флаков(анти-айр). Проблема не в приделывания мешей прожектора к иерархии корабля. Думаю что это для кораблестроителей не особо сложно. Проблема в том, что бы корабль научился пользоваться мешами прожектора именно в режиме прожектора, а не в режиме флака. Гунам в классах шип-дженерик вообще половину кода посвящено. Говорится там и о том, что класс орудия нужно искть в разделе веапонс с указанием конкретного адреса. Вот: Код:
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; } Можно - конечно - пойти путём писания нового класса для прожектора, отвязывая его от раздела машинок(кар) и делая в разделе шипс. Но мне более нравится идея обойтись без отдельного класса корабельного прожектора, а классах шипс делать новий раздел для мешей прожектора и вставлять туда полностью ии прожектора. Я думаю что всё же легче будет приделать код управления мешами прожектора в шип-дженерик, дабы их можно было безболезненно вкладывать в иерархию кораблей. Код ии есть готовый, его только вписать нужно правильно. Это вполне под силу программеру, который знаком со средой Ила. Любители вроде меня не смогут это адекватно прописать. Или кто на САС возмёться или Асура. Такие мысли. Последний раз редактировалось Vasya; 20.12.2017 в 06:13. |
|
20.12.2017, 08:56 | #323 | |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
Цитата:
Я конечно не специалист и многого пока не понимаю, но мне кажется, что этот путь предпочтительнее. |
|
21.12.2017, 19:29 | #324 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
Подскажите пожалуйста, это нечто подобное записям ходовых огней и огней взлетной палубы на Хирю и Исэ от Кодама?
|
22.12.2017, 05:21 | #325 | |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,088
|
Цитата:
Я с телефона щас. Комп работает очень нестабильно. Може работать хоть 10 часов, а может 10 минут. Гаснет экран и нет звука и изображения. Хотя комп жужжит. Иногда выбивает синий екран и опять таки потом гаснет всё. При перезапуске не включается изображение. Помогает перестановка штекеров/вилок в переноске. Вчера не смог делать классы. Думаю что материнка уже фсьо. Новая с ядром до 16-и тысяч в розетке. Грошей ма. Бяда - бяда. Винду переставлял две недели назад из-за таких же симптомов - помогло на 3 дня. Видеокарта чищена/дмухана и елозяна кисточкой - никаких полос или бликов при работе не даёт. Температура 23 - 36 градусов - двери балкона открываю и сижу в подстёжке. Такие дела. --------------------------- Думаю отдельный класс прожектора в разделе шип не нужен - ведь не роставишь корабль на корабль. А вот прописать новые меши(прожектора) в иерархию самое правильное. Этим мешам как раз и можно притулить оригинальное ии и дженерик прожектора. Но для такого дела нужны знания писания кода джавы с нуля, а не собирания кирпичиков и раствора как делаю я. |
|
22.12.2017, 08:34 | #326 | ||
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
Цитата:
Цитата:
Этого как раз и нет... Пытаюсь учить яву самостоятельно, но все как то уж очень сложно.... |
||
23.12.2017, 23:03 | #327 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
|
24.12.2017, 00:38 | #328 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
В классе орудия, прописываются визуальные эффекты, характеристика снаряда и заряда. Градусы наведения по вертикали и горизонтали,
скорострельность и время перезарядки, а также приоритет цели, указывается в шип.ини. Вопрос знающим камрадам, где сидит ИИ, непосредственно управляющий орудием? Или как заставить орудие, стрелять, только ночью? |
24.12.2017, 01:38 | #329 |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,088
|
|
24.12.2017, 02:56 | #330 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
М-м-д-а-а... Все печальнее чем я думал...
Правда Кодама в своих работах шип-дженерик не менял. Он добавлял функции непосредственно в класс корабля... Да и с системой наведения огней, ему работать не было необходимости. Все очень сложно, в первый раз... |
24.12.2017, 09:41 | #331 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
Зачем тогда гун-генерик?
|
06.01.2018, 01:30 | #332 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
К сожалению самостоятельно с прожекторами не справиться. Рассказал зарубежным коллегам с SAS о нашей "прожекторной" идее и проблемах с её реализацией. По ходу консилиума было решено, что необходимо править корабельные генерик-классы. Ваша идея Vasya. Думаю если несколько специалистов не зависимо друг от друга приходят к одной идее, значит направление выбрано верное.
|
28.01.2018, 22:12 | #333 |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,088
|
Есть вопрос к понимающим в кодах.
Нужно прямо в клас крафта прописать авто-радиатор. Код в класс вписал, но он почему то не работает. Хотя всё компилится. Код: Код:
public BF_109E_4MN() { reference = null; } Код:
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; } Код:
public float tOilOutMaxRPM; public float tOilOut; public float controlRadiator; private boolean bHasRadiatorControl; private int propAngleDeviceType; private int type; private FlightModel reference; --------------------------------------- Если писать вот такие строки: Код:
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); } А так: Код:
((FlightModelMain) (super.FM)).EI.engines[0].setControlRadiator(AllowsAutoRadiator); Последний раз редактировалось Vasya; 29.01.2018 в 12:36. |
01.04.2018, 17:11 | #334 |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,088
|
Если при декомпиляции разных "сложных" классов вылазяет вот такое:
Код:
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: Там нужно писать типа так: Код:
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 { } Код:
for(int j = 0; j < ((FlightModelMain) (((SndAircraft) (aircraft)).FM)).EI.getNum(); j++) try И ещё: бывает при декомпиляции появляются лишние строки, которые рассказывают нам о том, что есть блок команд, который не совсем похож на метод в других классах среды., то есть - не так записана пунктуация. Вот и вылазяет: Код:
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; } Код:
if(astateBailoutStep >= 0 && astateBailoutStep < 2) { Вместо миссинг-блок ниже в командах(подразделах) пишется так: Код:
{ astateBailoutStep = 2; } } else Как то вот так. Шо понял - то и написал. Может кому пригодится для делания модов. Последний раз редактировалось Vasya; 01.04.2018 в 17:15. |
02.04.2018, 09:09 | #335 |
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,816
|
Еще вариант - использовать другой декомпилятор. Их вообще несколько и все по разному декомпилируют. Кроме DJ Java Decompiler есть еще:
JD Decompiler Procyon Decompiler Fernflower Decompiler Используя альтернативы можно получить вполне приемлемый результат декомпиляции сложных классов без правки. |
02.04.2018, 10:47 | #336 |
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
А самый правильный - дизассемблировать и посмотреть что реально в коде происходит и поправить в соответствии с кодом.
|
02.04.2018, 17:36 | #337 | |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,088
|
Цитата:
Нэ святи горшки липлять. Я только любитель (почитать Иловские коды) - для меня джава классы как стихосложение - безумно нравится. Хобби для ума и тренировка логики. А вот джава скрипт на вкус показался скисшей окрошкой, по нашему - помыями. Но со скриптом слабо знаком. Всю осень пытался править Т-34 против Тигра. Всё свалено в кучу - голову сломать можно за час другой попыток собрать в логическую структуру мозаику кода. Может просто кодеры такие были. Любую страницу кода видео или сайта открываешь и на джаве всё понятно в общем о чём идёт речь. Отличный язык, интуитивно понятный. Последний раз редактировалось Vasya; 03.04.2018 в 00:05. |
|
02.04.2018, 17:43 | #338 | |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,088
|
Цитата:
Ну и преодоление трудностей повышает самооценку. Джава как наркотик - уже не слезешь. Малой закончит скоро коледж и я пойду учиться(как завещал "вечно-живой" дедушка). ---------------------------------- Не подскажите (будьте добры) как записать работающий метод автомата винта прямо в класс самолёта?! Очень нужно. Выше по странице я спрашивал. Последний раз редактировалось Vasya; 03.04.2018 в 00:04. |
|
13.05.2018, 18:28 | #339 |
Модератор
|
Не подскажете ли, камераден, как бы такую бяку вылечить?..
Код:
[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) |
13.05.2018, 18:50 | #340 |
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,816
|
В первую очередь надо класс проверять. Если конструкция такая:
Код:
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 - будет подобная ошибка. Иногда декомпилятор в эту модную конструкцию добавляет строки вида Код:
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 }); |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|