10.08.2009, 17:46 | #1 |
Местный
|
сброс бомб по ведущему
народ как можно сделать чтобы аи бросало бомбы по ведущему?
там есть команда сбрость баки может как то можно в нее вписать код чтобы он не только танки сбрасывал но и бомбы? ВОТ КОД: /* OrderDrop_Tanks - Decompiled by JODE * Visit http://jode.sourceforge.net/ */ package com.maddox.il2.game.order; import com.maddox.il2.ai.air.Pilot; import com.maddox.il2.engine.Actor; import com.maddox.il2.objects.air.Aircraft; import com.maddox.il2.objects.sounds.Voice; class OrderDrop_Tanks extends Order { public OrderDrop_Tanks() { super("Drop_Tanks"); } public void run() { Voice.setSyncMode(1); for (int i = 0; i < CommandSet().length; i++) { Aircraft aircraft = CommandSet()[i]; if (Actor.isAlive(aircraft) && (Object) aircraft.FM instanceof Pilot) { if (((Pilot) (Object) aircraft.FM).CT.dropFuelTanks()) { if (isEnableVoice() && aircraft != Player() && (aircraft.getWing() == Player().getWing() || aircraft.aircIndex() == 0)) Voice.speakDropTanks(aircraft); } else if (isEnableVoice() && aircraft != Player() && (aircraft.getWing() == Player().getWing() || aircraft.aircIndex() == 0)) Voice.speakUnable(aircraft); } } Voice.setSyncMode(0); } } |
10.08.2009, 17:48 | #2 |
Местный
|
if (((Pilot) (Object) aircraft.FM).CT.dropFuelTanks())
вот эта строчка самая главная. надо как то сюда записать код сброса бомб. ВОТ КОД БОМБЕЖКИ. if (!bombsOut) { bombsOut = true; if (CT.Weapons[3] != null && CT.Weapons[3][0] != null && CT.Weapons[3][0].countBullets() != 0 && !(CT.Weapons[3][0] instanceof BombGunPara)) Voice.speakAttackByBombs((Aircraft) this.actor); } |
11.08.2009, 08:32 | #3 |
Гость
Сообщений: n/a
|
Мыслишь верно, а вот что интересно если ведущего замочить, остальные будут бонбы кидать? И еще: можно ли сделать так, что бы при уничтожении ведущего, вся группа разбегалась, а не лезла упрямо к цели? И увязать все это с уровнем мастерства. Боты-бонберы асы, например: прут во что бы то ни стало замочить поставленную им цель, а курсанты при уничтожении ведущего все разбегаются и либо швыряют бонбы куда попало, либо с ними и улепетывают.
Было бы клево. Последний раз редактировалось skvorez; 12.08.2009 в 11:28. |
11.08.2009, 17:06 | #4 |
Местный
|
может и можно но я в яве не силен. а было бы здорово.
я могу сделать чтобы штурмовики оборонялись лучше и крутились с истребителями. |
12.08.2009, 11:26 | #5 | |
Гость
Сообщений: n/a
|
Цитата:
Вот если бы штурмов и бонберов заставить при атаке истребителей вставать в оборонительный круг. Вот это было бы, в самом деле круто. Но это ведь насколько я понимаю, разные там триггеры, интелекты и т.п. А кстати, это, можешь сделать? |
|
12.08.2009, 14:24 | #6 |
Местный
|
схему оруга этого надо я не знаю что он из себя представляет.
я могу сделать чтобы штурмовики атакавали истребители так же как истребитель истребителя почти. |
12.08.2009, 15:00 | #7 | |||
Гость
Сообщений: n/a
|
Цитата:
Цитата:
http://www.airpages.ru/dc/doc02.shtml вот еще: РАЗРУШЕНИЕ ОБОРОНИТЕЛЬНОГО СТРОЯ БОМБАРДИРОВЩИКОВ. http://www.uic.nnov.ru/~teog/oboron.htm И еще: http://www.allaces.ru/p/episode.php?id=486 Вообще то, это называется "испанский круг", типа наши придумали, в Испании. вот еще чутка рассуждений на эту тему: http://forums.games.1c.ru/?type=flat...mode=1#1505579 Интересно можно ли это на практике реализовать? И совсем было бы клево, если такую схему построения можно было бы включить в меню управления тактическими построениями групп самолетов. По примеру комманд: перестроится в правый (левый) пеленг, перестроиться в клин и т.д. Дал допустим, команду группе Илов или пешек которую ведешь и мочи мессеров-фокеров. И уж совсем размечтался: парой подходишь к группе лаптей, они сразу же стали в круг. Ведущего завалил, все (новички) сразу бонбы покидали, и круг рассыпался. Если прикрышки нет. Зх... почти как в жизни. Цитата:
Последний раз редактировалось skvorez; 12.08.2009 в 15:16. |
|||
12.08.2009, 15:35 | #8 |
Местный
|
построение я знаю где прописано.
|
12.08.2009, 15:43 | #9 |
Гость
Сообщений: n/a
|
|
12.08.2009, 15:53 | #10 |
Местный
|
там непонятно что
|
12.08.2009, 15:54 | #11 |
Местный
|
/* Formation - Decompiled by JODE
* Visit http://jode.sourceforge.net/ */ package com.maddox.il2.ai; import com.maddox.JGP.Point3d; import com.maddox.JGP.Vector3d; import com.maddox.JGP.Vector3f; import com.maddox.il2.ai.air.Maneuver; import com.maddox.il2.engine.Actor; import com.maddox.il2.fm.FlightModel; import com.maddox.il2.objects.air.A6M; import com.maddox.il2.objects.air.Aircraft; import com.maddox.il2.objects.air.B5N; import com.maddox.il2.objects.air.BF_109; import com.maddox.il2.objects.air.BF_110; import com.maddox.il2.objects.air.B_17; import com.maddox.il2.objects.air.B_25; import com.maddox.il2.objects.air.B_29; import com.maddox.il2.objects.air.D3A; import com.maddox.il2.objects.air.FW_190; import com.maddox.il2.objects.air.G4M; import com.maddox.il2.objects.air.H8K; import com.maddox.il2.objects.air.HE_111H2; import com.maddox.il2.objects.air.IL_2; import com.maddox.il2.objects.air.JU_88; import com.maddox.il2.objects.air.KI_43; import com.maddox.il2.objects.air.KI_46; import com.maddox.il2.objects.air.KI_61; import com.maddox.il2.objects.air.KI_84; import com.maddox.il2.objects.air.ME_323; import com.maddox.il2.objects.air.N1K; import com.maddox.il2.objects.air.PE_2; import com.maddox.il2.objects.air.PE_8; import com.maddox.il2.objects.air.SBD; import com.maddox.il2.objects.air.SPITFIRE; import com.maddox.il2.objects.air.Scheme1; import com.maddox.il2.objects.air.TA_152H1; import com.maddox.il2.objects.air.TBF; import com.maddox.il2.objects.air.TB_3; import com.maddox.il2.objects.air.TU_2; import com.maddox.il2.objects.air.YAK; public class Formation { public static final byte F_DEFAULT = 0; public static final byte F_PREVIOUS = 1; public static final byte F_ECHELONRIGHT = 2; public static final byte F_ECHELONLEFT = 3; public static final byte F_LINEABREAST = 4; public static final byte F_LINEASTERN = 5; public static final byte F_VIC = 6; public static final byte F_FINGERFOUR = 7; public static final byte F_DIAMOND = 8; private static final Vector3f WR = new Vector3f(100.0F, 100.0F, 0.0F); private static final Vector3d dd = new Vector3d(); private static final Point3d Pd = new Point3d(); public static final void generate(Aircraft[] aircrafts) { gen(aircrafts, WR); } private static final float scaleCoeff(Aircraft aircraft) { if (aircraft instanceof ME_323) return 5.0F; if (aircraft instanceof PE_8 || aircraft instanceof TB_3 || aircraft instanceof B_17 || aircraft instanceof B_29) return 3.5F; if (aircraft instanceof TA_152H1) return 2.0F; if (aircraft instanceof SBD) return 1.8F; if (aircraft instanceof TBF) return 1.9F; if (aircraft instanceof FW_190) return 1.4F; if (!(aircraft instanceof Scheme1)) return 2.2F; return 1.2F; } public static final void gather(FlightModel flightmodel, byte i) { gather(flightmodel, i, flightmodel.Offset); } public static final void gather(FlightModel flightmodel, byte i, Vector3d vector3d) { Aircraft aircraft = (Aircraft) flightmodel.actor; FlightModel flightmodel_0_ = flightmodel; int i_1_ = ((Maneuver) flightmodel).Group.numInGroup(aircraft); float f = flightmodel.formationScale; switch (i) { case 0: if (aircraft instanceof BF_109 || aircraft instanceof BF_110 || aircraft instanceof FW_190 || aircraft instanceof SPITFIRE) gather(flightmodel, (byte) 7, vector3d); else { if (aircraft instanceof IL_2 || aircraft instanceof YAK || aircraft instanceof PE_2 || aircraft instanceof TU_2) gather(flightmodel, (byte) 6, vector3d); else { if (aircraft instanceof A6M || aircraft instanceof B5N || aircraft instanceof D3A || aircraft instanceof G4M || aircraft instanceof KI_43 || aircraft instanceof KI_46 || aircraft instanceof KI_84 || aircraft instanceof N1K || aircraft instanceof H8K || aircraft instanceof KI_61) gather(flightmodel, (byte) 6, vector3d); else { if (aircraft instanceof JU_88 || aircraft instanceof HE_111H2) gather(flightmodel, (byte) 8, vector3d); else { if (aircraft instanceof ME_323) gather(flightmodel, (byte) 8, vector3d); else { if (aircraft instanceof PE_8 || aircraft instanceof B_17 || aircraft instanceof B_25 || aircraft instanceof B_29) gather(flightmodel, (byte) 6, vector3d); else { gather(flightmodel, (byte) 2, vector3d); return; } return; } return; } return; } return; } return; } return; case 1: gather(flightmodel, flightmodel.formationType, vector3d); return; case 2: flightmodel.formationType = i; vector3d.set(25.0, 25.0, 0.0); break; case 3: flightmodel.formationType = i; vector3d.set(25.0, -25.0, 0.0); break; case 4: flightmodel.formationType = i; if (i_1_ == 0) vector3d.set(25.0, 75.0, 0.0); else vector3d.set(1.0, 33.0, 0.0); break; case 5: flightmodel.formationType = i; if (i_1_ == 0) vector3d.set(120.0, 0.0, 15.0); else vector3d.set(80.0, 0.0, 10.0); vector3d.scale((double) f); return; case 6: flightmodel.formationType = i; switch (i_1_) { case 0: vector3d.set(55.0, 55.0, 0.0); break; case 1: vector3d.set(25.0, 25.0, 0.0); break; case 2: vector3d.set(0.0, -50.0, 0.0); break; case 3: vector3d.set(25.0, -25.0, 0.0); break; } break; case 7: flightmodel.formationType = i; switch (i_1_) { case 0: vector3d.set(25.0, 25.0, 0.0); break; case 1: vector3d.set(15.0, 30.0, 0.0); break; case 2: vector3d.set(25.0, -60.0, 0.0); break; case 3: vector3d.set(15.0, -20.0, 0.0); break; } break; case 8: flightmodel.formationType = i; switch (i_1_) { case 0: vector3d.set(75.0, 30.0, 0.0); break; case 1: vector3d.set(25.0, 25.0, 0.0); break; case 2: vector3d.set(0.0, -50.0, 0.0); break; case 3: vector3d.set(25.0, 25.0, 0.0); break; default: break; } break; } vector3d.scale((double) (f * scaleCoeff(aircraft))); } public static final void leaderOffset(FlightModel flightmodel, byte i, Vector3d vector3d) { Aircraft aircraft = (Aircraft) flightmodel.actor; Wing wing = (Wing) flightmodel.actor.getOwner(); int i_2_; if (wing != null) i_2_ = wing.indexInSquadron(); else i_2_ = 0; switch (i_2_) { case 0: vector3d.set(300.0, -150.0, 0.0); break; case 1: if (i != 2) vector3d.set(100.0, 100.0, 0.0); else vector3d.set(200.0, 200.0, 0.0); break; case 2: if (i != 3 && i != 6) vector3d.set(150.0, -150.0, 0.0); else vector3d.set(210.0, -210.0, 0.0); break; case 3: if (i != 5) vector3d.set(150.0, 0.0, 0.0); else vector3d.set(300.0, 0.0, 0.0); break; } vector3d.scale(0.7 * (double) scaleCoeff(aircraft)); } private static final void gen(Aircraft[] aircrafts, Vector3f vector3f) { dd.set(vector3f); aircrafts[0].pos.getAbsOrient().transform(dd); int i = 0; for (int i_3_ = 1; i_3_ < aircrafts.length; i_3_++) { if (Actor.isValid(aircrafts[i_3_])) { aircrafts[i_3_].FM.Offset.set(vector3f); aircrafts[i_3_].FM.Leader = aircrafts[i].FM; aircrafts[i].FM.Wingman = aircrafts[i_3_].FM; aircrafts[i].pos.getAbs(Pd); Pd.sub(dd); aircrafts[i_3_].pos.setAbs(Pd); i = i_3_; } } } } |
12.08.2009, 15:55 | #12 |
Местный
|
вот там что
|
12.08.2009, 16:40 | #13 |
Гость
Сообщений: n/a
|
Ясно.. ну что ж жаль... идея была, имхо не плохая.
|
13.08.2009, 19:23 | #14 |
Местный
|
фотографии или видео есть этого построения?
вообще щас аи где нибуть так строиться? |
12.11.2009, 23:07 | #15 |
Местный
|
если сделать как тут то может и можно они баки же по команде кидают.
|
12.11.2009, 23:47 | #16 |
Гость
Сообщений: n/a
|
|
13.11.2009, 08:28 | #17 |
Местный
|
для круга надо 5 самолетов мин говорят вопрос как в иле соеденить 2 звена в 1 гркппу и расположить их в определенном порядке.
я пробывал оборону менять илам ед они меньше разбегаться стали а если соеденить 2 звена собирались в гиганскую кучу ведущий в переди остольный со всех боков и строй рушили только если его сильно повредить а так стсрались сохронять строй вобем как бомереры. |
13.11.2009, 08:31 | #18 |
Местный
|
bombsOut = true; вот главная команда без нее бомы бросать не будут вообще.
|
13.11.2009, 10:36 | #19 |
Местный
|
не кидает прописал я эту команду к бакам.
|
13.11.2009, 10:47 | #20 | |
Гость
Сообщений: n/a
|
Цитата:
http://forum.72ag.ru/index.php?showt...hreaded&start= Или ты про вертушку Полбина? Вот соспсно: "Вертушка" Особое место в военной биографии И. С. Полбина как летчика, командира и подлинного новатора тактики бомбардировочной авиации занимает его знаменитая «вертушка». «Вертушка», как наиболее эффективный метод уничтожения точечных целей, завоевала всеобщее признание у всех летчиков-бомбардировщиков. В каждом полку, соединении знали и применяли этот полбинский метод. И все же наиболее мастерски им пользовались летчики соединения И. С. Полбина. Они стали асами своего дела, разрушая мосты, железнодорожные станции, уничтожая пехоту и технику противника. «Вертушка» началась с того, что ведущий самолет развернулся влево и перешел в стремительное пикирование. За ним через несколько секунд последовал второй пикировщик, затем третий, четвертый. Потеряв почти 1000 метров высоты и сбросив одну бомбу, ведущий не менее стремительно стал подниматься вверх и вскоре оказался в хвосте последнего самолета группы. С этого момента замкнулся боевой круг, составленный из двадцати машин. Образовалось как бы гигантское колесо, диаметром больше километра. Оно с огромной скоростью вращалось в наклонной плоскости, разрывая своими зубьями вражескую оборону. За один поворот этого колеса сбрасывалось двадцать увесистых бомб, и каждая из них направлялась в свою цель. По воле командира пикировщики меняли направление удара, отыскивая всякий раз новые объекты атаки. http://h.ua/story/217977/ Не совсем по теме: http://www.wio.ru/pokr/pokr.htm |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|