|
![]() |
#41 |
Местный
|
![]()
Разобрался с кабиной почти. В ФМ какая то строка отвечает.
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#42 | |
Местный
|
![]() Цитата:
/*synthetic*/ static Class class$com$maddox$il2$objects$air$CockpitIL_10_TGun ner; Property.set (var_class, "cockpitClass", (new Class[] { (class$com$maddox$il2$objects$air$CockpitIL_10 == null ? (class$com$maddox$il2$objects$air$CockpitIL_10 = class$("com.maddox.il2.objects.air.CockpitIL_10")) : class$com$maddox$il2$objects$air$CockpitIL_10), (class$com$maddox$il2$objects$air$CockpitIL_10_TGu nner == null ? (class$com$maddox$il2$objects$air$CockpitIL_10_TGu nner = (class$ ("com.maddox.il2.objects.air.CockpitIL_10_TGunner" ))) : class$com$maddox$il2$objects$air$CockpitIL_10_TGun ner) }));
__________________
Свой среди чужих,чужой среди своих. |
|
![]() |
![]() |
![]() |
#43 |
Местный
|
![]()
Где задаются углы поворота внешней модели туррели?
С кокпита крутиться вокруг а внешне как пропеллер.
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#44 |
Местный
|
![]()
Мозги кипят больше чем от ИИ кода от этих мешей ,углов и т.д
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#45 |
Местный
|
![]()
Хук от оружия если я в кокпит сделаю будет стрелять?
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#46 |
Местный
|
![]()
И еще дайте значения для экспорта для 3д макс из меш конвертера.
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#47 |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,095
|
![]()
Вообще то - я в ковырянии классов очень даже новичок, всего с декабря начал плотно изучать классы., но некоторые моменты стал - как говорят - понемного догонять., о чём я? - видел в классах кокпитов прописуются хуки всего что должно работать или двигаться в кабинах, в том числе работу прицелов, если это гороскоп или бомбоприцела, если кокпит бомбардира., по идее - должно прописываться и вооружение - то есть хуки управления., это выходит из логики., я не учился ни на каких курсах программеров или подобных, но вот поковырял Ил и решил вскрыть внутренности игры Т34 против Тагра - всё - на мой вкус - писано на джаве, многое открываеться просто блокнотом и нормально читаеться, похожие команды и т.д.
По записи пропертиса для кокпита: допустим, даже если на языке джавы ваша запись правильная, то для Ила это ещё не значит что будет понятно прочитать и выполнить команду., это мой вывод из наблюдений в классах - похоже что Ил сличает команды или код какой либо записи с тем что у него записано в основных классах., то есть - понятно ли для будет для Ила текст этого(вами приведённого ) кусочка: Property.set (var_class, "cockpitClass", (new Class[] { (class$com$maddox$il2$objects$air$CockpitIL_10 == null ? (class$com$maddox$il2$objects$air$CockpitIL_10 = class$("com.maddox.il2.objects.air.CockpitIL_10")) : class$com$maddox$il2$objects$air$CockpitIL_10), (class$com$maddox$il2$objects$air$CockpitIL_10_TGu nner == null ? (class$com$maddox$il2$objects$air$CockpitIL_10_TGu nner = (class$ ("com.maddox.il2.objects.air.CockpitIL_10_TGunn er" ))) : class$com$maddox$il2$objects$air$CockpitIL_10_TGun ner) })); Может быть от того что я не шибко ещё продвинутый в классах, но не стал бы писать такие куски в классе кокпита, а посмотрел бы что и как пишеться в классе кокпит пилот и - возможно - сделал бы копию класса кокпит пилота, типа: CockpitPilot_A extends CockpitPilot и уже там пытался прописывать кардинальные изменения. Вы уж простите что так накалякал - вступая в дискуссию/разговор, таким способом пытаюсь повысить свою образованность, читая ответы более грамотного мододела. Последний раз редактировалось Vasya; 16.09.2014 в 19:16. Причина: дописка текста |
![]() |
![]() |
![]() |
#48 | |
Местный
|
![]() Цитата:
CockpitPilot все остольные идут от него по этому типу CockpitPilot_A extends CockpitPilot и есть 2 CockpitPilot_A extends CockpitGunner это основной для кокпита стрелков. CockpitIL_10_TGunner extends CockpitGunner. Точно так же есть основной класс серии самолета например Bf109 в нем прописаны основные данные а все остальное наследуется из Bf109. Bf109E4 extends Bf109
__________________
Свой среди чужих,чужой среди своих. |
|
![]() |
![]() |
![]() |
#49 |
Местный
|
![]()
Cockpit вот даже главный класс. public class CockpitGunner extends Cockpit implements HookGunner.Move
CockpitGunner этот наследует данные из него а осольные по самолетам из CockpitGunner. public class CockpitPilot extends Cockpit и тут так же, а кокпит от ил2 или ил10 или Бф109 наследуют данные из CockpitPilot
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#50 |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,095
|
![]()
Ну это всё понятно для меня., я написал замечания от того что не смотрел сам класс кокпита Ил-10, поэтому текст показался подозрительным. Звыняйтэ!
Почему завёл разговор - хочеться поделиться соображениями - я делал(переписывал) класс кокпита МБ-174 под патч 4.10.1 и классы стрелка и бомбардира., пришлось повозиться изрядно., правда - настроить правильную стрельбу из пулемёта стрелка не смог - там буд-то пули выскакивают не из ствола, а из барабанов пулемёта и огоньок выстрелов так же прикреплён к нему., в общем - игрался дней пять и забросил до лучших времён. Про что я хочу сказать - куски кода из патча 4.12.2 не хотят работать в патче 4.10.1, более того, поначалу при включении кокпита бомбёра - игру вибивало на рабочий стол, пока не додумался наполнить класс кодами из мода кокпита бомбёра В-25., моя мысль такая - я бы поочерёдно подставлял коды от разных кокпитов стрелка что бы сначала включился/запустился кокпит в игре, а уже следующим шагом вставлял бы функции(хуки мешей и их работа) для тех потребностей которые хочу иметь в моде. Как то так - извините за сумбурность изложения мыслей. Последний раз редактировалось Vasya; 17.09.2014 в 21:50. |
![]() |
![]() |
![]() |
#51 | |
Местный
|
![]() Цитата:
__________________
Свой среди чужих,чужой среди своих. |
|
![]() |
![]() |
![]() |
#52 |
Местный
|
![]()
Я переделывал только на ил2м внешний пулемет стрелка , но там я позицию модели брал такую же как у оригинала и нормально получалось.
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#53 |
Местный
|
![]()
Вот кокпитная модель крутиться по кругу нормально, а вот внешняя не по той оси.
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#54 | |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,095
|
![]() Цитата:
переделывая гироскопичный прицел для патча 4.12.2 я увидел такие ньюансы - в классе кокпита обязательно указываеться конкретный класс самолёта где код работы гироскопа должен увидеть продолжения команд., типа - как должен работать гироскоп применительно к кренам самолёта и т.д., так же - по работе открывалки кокпитов - там конкретно указываеться какой меш должен двигаться и название совпадает с названием в папке планес самолёта., эти меши двигаються по осям и они конкретно вписаны в оба класса., делая открывалку внешки для И-185 и Яка-9, получилось подставить команды от Хаята, скорректировав цыфры для более правильного движения крышки фонаря по направляющим., не только двигал цыфры, но и менял местами в строке - так получилось заставить крышку фонаря у Яка-9 двигаться назад, а двигалась и вверх и вбок и т.д., я это пишу вам с надеждой что хоть небольшая польза будет от меня для настройки ваших модов., перенастроить движения по осям не очень сложно - я внимательно посмотрел команды в классах из различным модов, сравнивая между собой и пазл стал складываться в голове, стал немного догонять как это работает. Примеры для внешки: Як-9 public void moveCockpitDoor(float f) { resetYPRmodifier(); Aircraft.xyz[0] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, -0.62F); hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr); if(Config.isUSE_RENDER()) { if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null) Main3D.cur3D().cockpits[0].onDoorMoved(f); setDoorSnd(f); } } И-185 public void moveCockpitDoor(float f) { resetYPRmodifier(); Aircraft.xyz[1] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.0197F); Aircraft.xyz[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, -0.65F); Aircraft.ypr[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 1.0F); hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr); if(Config.isUSE_RENDER()) { if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null) Main3D.cur3D().cockpits[0].onDoorMoved(f); setDoorSnd(f); } } Хаят public void moveCockpitDoor(float f) { resetYPRmodifier(); Aircraft.xyz[1] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, -0.01845F); Aircraft.xyz[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, -0.635F); Aircraft.ypr[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 1.0F); hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr); if(Config.isUSE_RENDER()) { if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null) Main3D.cur3D().cockpits[0].onDoorMoved(f); setDoorSnd(f); } } Райден public void moveCockpitDoor(float f) { resetYPRmodifier(); Aircraft.xyz[1] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.0198F); Aircraft.xyz[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.65F); Aircraft.ypr[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 1.0F); hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr); if(Config.isUSE_RENDER()) { if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null) Main3D.cur3D().cockpits[0].onDoorMoved(f); setDoorSnd(f); } } Я не хочу быть задавакой - просто хочеться чем то помочь. А вообще у меня немного творческий кризис/простой ![]() ![]() Последний раз редактировалось Vasya; 18.09.2014 в 20:37. |
|
![]() |
![]() |
![]() |
#55 | |
Местный
|
![]() Цитата:
__________________
Свой среди чужих,чужой среди своих. |
|
![]() |
![]() |
![]() |
#56 |
Местный
|
![]()
public void moveGun(Orient orient) {
super.moveGun(orient); mesh.chunkSetAngles("Turret1A", -orient.getYaw(), 0.0F, 0.0F); mesh.chunkSetAngles("Turret1B", 0.0F, orient.getTangage(), 0.0F); } public void clipAnglesGun(Orient orient) { float f = orient.getYaw(); float f_0_ = orient.getTangage(); float f_1_ = Math.abs(f); for (/**/; f < -180.0F; f += 360.0F) { /* empty */ } for (/**/; f > 180.0F; f -= 360.0F) { /* empty */ } for (/**/; prevA0 < -180.0F; prevA0 += 360.0F) { /* empty */ } for (/**/; prevA0 > 180.0F; prevA0 -= 360.0F) { /* empty */ } if (!isRealMode()) prevA0 = f; else { if (bNeedSetUp) { prevTime = Time.current() - 1L; bNeedSetUp = false; } if (f < -120.0F && prevA0 > 120.0F) f += 360.0F; else if (f > 120.0F && prevA0 < -120.0F) prevA0 += 360.0F; float f_2_ = f - prevA0; float f_3_ = 0.001F * (float) (Time.current() - prevTime); float f_4_ = Math.abs(f_2_ / f_3_); if (f_4_ > 120.0F) { if (f > prevA0) f = prevA0 + 120.0F * f_3_; else if (f < prevA0) f = prevA0 - 120.0F * f_3_; } prevTime = Time.current(); if (f_0_ > 89.0F) f_0_ = 89.0F; if (f_0_ < cvt(f_1_, 140.0F, 180.0F, -1.0F, 25.0F)) f_0_ = cvt(f_1_, 140.0F, 180.0F, -1.0F, 25.0F); orient.setYPR(f, f_0_, 0.0F); orient.wrap(); prevA0 = f; } }
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#57 |
Местный
|
![]()
Это движение в самом кокпите моделей.
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#58 |
Местный
|
![]()
public void setHumanControlledTurretAngels
(Turret turret, float[] fs, HierMesh hiermesh, ActorHMesh actorhmesh) { fs[0] = fs[1] = fs[2] = 0.0F; fs[1] = turret.tu[0]; hiermesh.setCurChunk(turret.indexA); actorhmesh.hierMesh().chunkSetAngles(fs); fs[1] = turret.tu[1]; hiermesh.setCurChunk(turret.indexB); actorhmesh.hierMesh().chunkSetAngles(fs); } Вот еще нарыл
__________________
Свой среди чужих,чужой среди своих. |
![]() |
![]() |
![]() |
#59 |
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,095
|
![]()
Извините!
Отсутствовал пару дней на сайте - работа, однако, на мододелание времени не было. Мои мысли: вот это - public void clipAnglesGun(Orient orient) { float f = orient.getYaw(); float f_0_ = orient.getTangage(); float f_1_ = Math.abs(f); for (/**/; f < -180.0F; f += 360.0F) { /* empty */ } for (/**/; f > 180.0F; f -= 360.0F) { /* empty */ } for (/**/; prevA0 < -180.0F; prevA0 += 360.0F) { /* empty */ } for (/**/; prevA0 > 180.0F; prevA0 -= 360.0F) { /* empty */ } - примерно - отвечает за то что турель смотрит по курсу., собственно, я думаю, это - prevA0 += 360.0F; ориентация - остальное - как она крутиться., а вот эта команда - prevTime = Time.current(); if (f_0_ > 89.0F) f_0_ = 89.0F; if (f_0_ < cvt(f_1_, 140.0F, 180.0F, -1.0F, 25.0F)) f_0_ = cvt(f_1_, 140.0F, 180.0F, -1.0F, 25.0F); orient.setYPR(f, f_0_, 0.0F); orient.wrap(); prevA0 = f; } } по идее должна быть и не внешке, в основном классе самолёта., это я предполагаю, опираясь на логику., меши пулемёта должны сообразно двигаться с тем что происходит в кокпите. Я, честно говоря, не сильно ковырял многомоторники с несколькими кабинами., но можно посмотреть что написано в том же Бостоне, в классах, как там синхронизированы движение турелей в разных видах или в СБ-2М, так же. У меня нет вашего класса с 3До, но если бы я делал поворот турели, то - прежде всего - открыл себе несколько классов из похожих самолётов с турелями, даже открыл бы класс Джипа, и пытался бы подставлять коды управления турелью/пулемётом., я подобно делаю когда нужно что то настроить - это мне помогает понять что и как работает. Последний раз редактировалось Vasya; 24.09.2014 в 19:30. |
![]() |
![]() |
![]() |
#60 | |
Местный
|
![]() Цитата:
__________________
Свой среди чужих,чужой среди своих. |
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|