|
![]() |
#661 |
Пёс - пилот
Регистрация: 24.01.2010
Адрес: С. Петербург
Сообщений: 1,120
|
![]()
Вот не правда ваша ! Курсанты мажут только так и хрен знает как стреляют , чуть ли не в другую сторону ( С перепугу наверно
![]() Новички , тоже меткостью не отличаются. Но хоть в штаны не кладут. Начиная с ветеранов уже серьёзнее в оф-лайне... тут нужно выбирать правильную позицию и атаковать с мёртвых зон. Что и старались делать в жизни. А если тупо зависать на шести у бомбера и в секторах обстрела живых стрелков... Ну уж извините... Голова зачем людям дана ? Поэтому не пойму о чём плачь. Всё нормально в игре настроено. Летая в оф-лайне на стрелков бомберов не могу пожаловаться. |
![]() |
![]() |
![]() |
#662 |
Местный
Регистрация: 09.05.2009
Адрес: Хабаровск
Сообщений: 1,757
|
![]()
Может, примерно так??
![]() Нашёл давнишнюю запись по теме атаки бобров.Не претендую на лавры, но всё же покажу Сорри, чет потерял когда монтировал кусочек каким образом второго вальнул. Видно как он упал. Да и качество видео оставляет желать лучшего. И... вообще первые неуклюжие попытки видеомонтажа роликов с ИЛа ![]() https://youtu.be/SVC9spGsKmM З.Ы. заменил видео, чтобы было без ютубовского "псевдо"улучшения качества. Тормозов при просмотре меньше ![]()
__________________
...каждый болен ИЛ-2 по разному, но похоже что навсегда! Последний раз редактировалось Grog; 21.04.2016 в 13:25. |
![]() |
![]() |
![]() |
#663 |
Пользователь
Регистрация: 10.06.2015
Сообщений: 95
|
![]()
Как оффлайн пилот бомберов/штурмов скажу, что я всегда отключаю автопилот у заднего стрелка, т.к. сам стреляю точнее и экономичнее. А по поводу истребителей АИ против бомберов заметил, что курсанты не маневрируют и не дают упреждения при стрельбе, новички маневрируют до черноты в глазах и дают упреждение, но стреляют длинными очередями.
Кстати, а у полевой модификации Ил-2 есть перспективы оживить заднего стрелка? |
![]() |
![]() |
![]() |
#664 |
Местный
Регистрация: 27.07.2014
Сообщений: 322
|
![]()
Медведь и Хазанов в книге "FW-190 - многоцелевой истребитель Люфтваффе" утверждают, что личный состав для IV(Sturm)/JG3 набирался только из добровольцев, а при отсутствии оных - из "штрафников", то есть немецких пилотов, совершивших какие-либо проступки. Настолько это было опасное дело - сближение с тяжёлыми Б-17 и Б-24.
|
![]() |
![]() |
![]() |
#665 |
Местный
Регистрация: 17.05.2011
Адрес: Краснодар
Сообщений: 1,362
|
![]()
Летая в офф-лайне на бомберах, стрелков, "censored", поубивал бы! Просто взял и передушил, своими руками. Имею стойкое убеждение, что когда в бомбере находится игрок, то какой уровень мастерства в редакторе не выставляй, у ИИ-стрелков он автоматически выставляется самый низкий. Лупят, уроды, в белый свет как в копеечку. Вполне способны мазать "в упор", или поливать длинными очередями(ес-сно мимо!) истребитель болтающийся в сотнях метров в стороне от моего самолёта, в то время как другой бандит уже повис на шести.
Стоит же поменяться местами с истребителем, и к этому же самому бомберу, с мастерством "ветеран"/"ас" хрен подберёшся. Те же самые ИИ-стрелки пристреливаются с первой же короткой очереди и дальше(по ощущениям) всаживают в тебя каждую пулю из длинной очереди.
__________________
Я не волшебник, я только лечусь... Последний раз редактировалось Stilet; 21.04.2016 в 14:20. |
![]() |
![]() |
![]() |
#666 | |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
![]() Цитата:
Можно сделать чтобы по уровню они хотя бы отличались, асы и ветераны могут с большего расстояния стрелять чем новички и курсанты. В идеале вообще вывести в миссию параметр видимости и дистанции стрельбы. А еще лучше дополнительные параметры ввести как в БЗБ Знание сложных маневров дистанция сведения(стрельы) дистанция видимости, кол-во заходов. Это все можно сделать и не особо сложно. |
|
![]() |
![]() |
![]() |
#667 | |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
![]() Цитата:
public void setSkill(int i) { if (i < 0) i = 0; if (i > 3) i = 3; Skill = i; nCreateSubSkills(Skill); turretSkill = i; World.cur(); if (actor != World.getPlayerAircraft() && !((Aircraft) actor).isNetPlayer()) { switch (i) { case 0: SensPitch *= 0.75F; SensRoll *= 0.5F; SensYaw *= 0.5F; break; case 1: SensRoll *= 0.7F; SensPitch *= 0.75F; SensYaw *= 0.7F; break; case 2: SensRoll *= 0.88F; SensPitch *= 0.92F; SensYaw *= 0.9F; break; case 3: SensPitch *= 1.1F; SensRoll *= 1.0F; SensYaw *= 1.0F; break; } } else Aircraft.debugprintln (actor, "Skill adjustment rejected on the Player AI parameters.."); } turretSkill = i мастерство стрелков. Skill = i мастерство истребителей присвоен один и тот же параметр. i не может быть меньше 0 0 это курсант и не может быть больше 3 этот ас. 0 Курсант 1 Новичек 2 Ветеран 3 Ас. |
|
![]() |
![]() |
![]() |
#668 |
цифровая бестолочь
Регистрация: 17.12.2014
Сообщений: 296
|
![]() |
![]() |
![]() |
![]() |
#669 |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
![]()
private void updateTurret(Turret turret, int i, float f) {
if (!turret.bIsOperable) CT.WeaponControl[i + 10] = false; else if (!turret.bIsAIControlled) ((Aircraft) this.actor).setHumanControlledTurretAngels(turret, tu, HM, am); else if (turret.indexA != -1 && turret.indexB != -1) { am = (ActorHMesh) this.actor; float f_22_ = 0.0F; float f_23_ = (float) (turretSkill + 1) * turret.health; if (W.lengthSquared() > 0.25) f_23_ *= 1.0F - (float) Math.sqrt(W.length() - 0.5); if (getOverload() > 1.0F) f_23_ *= Aircraft.cvt(getOverload(), 1.0F, 5.0F, 1.0F, 0.0F); else if (getOverload() < 0.0F) f_23_ *= Aircraft.cvt(getOverload(), -1.5F, 0.0F, 0.0F, 1.0F); if (turret.target != null && turret.target instanceof Aircraft && ((Aircraft) turret.target).FM.isTakenMortalDamage()) turret.target = null; if (turret.target == null) { if (turret.tMode != 0) { turret.tMode = 0; turret.timeNext = Time.current(); } } else { turret.target.pos.getAbs(Pt); turret.target.getSpeed(Vt); this.actor.getSpeed(Ve); Vt.sub(Ve); HM.setCurChunk(turret.indexA); ActorHMesh actorhmesh = am; if (this != null) { /* empty */ } actorhmesh.getChunkLocAbs(Actor._tmpLoc); Vector3d vector3d = Ve; Point3d point3d = Pt; if (this != null) { /* empty */ } vector3d.sub(point3d, Actor._tmpLoc.getPoint()); f_22_ = (float) Ve.length(); float f_24_ = ((14.0F - 2.25F * f_23_) * (float) Math.sin((double) ((float) (Time.current() & 0xffffL) * 0.003F))); Vt.scale((double) ((f_22_ + f_24_) * 0.001492537F)); Ve.add(Vt); Vg.set(Ve); Or.transformInv(Ve); turret.Lstart.transformInv(Ve); Ve.y = -Ve.y; HM.setCurChunk(turret.indexB); turret.Lstart.get(Oo); Oo.setAT0(Ve); Oo.get(tu); Or.transformInv(Vt); turret.Lstart.transformInv(Vt); Vt.normalize(); shoot = ((Aircraft) this.actor).turretAngles(i, tu); } switch (turret.tMode) { case 0: { turret.bIsShooting = false; float[] fs = ((Aircraft) this.actor).getTurretRestOrient(i); turret.tuLim[0] = fs[0]; turret.tuLim[1] = fs[1]; if (Time.current() > turret.timeNext) { turret.target = War.GetNearestEnemyAircraft(this.actor, 3619.0F, 9); if (turret.target == null) { turret.target = War.GetNearestEnemyAircraft(this.actor, 6822.0F, 9); if (turret.target == null) turret.timeNext = (Time.current() + World.Rnd().nextLong(1000L, 10000L)); else if (VisCheck.visCheckTurret(turret, (Aircraft) this.actor, ((Aircraft) turret.target), true)) { turret.tMode = 1; turret.timeNext = 0L; if (((Aircraft) this.actor == World.getPlayerAircraft()) && turret.health > 0.4F) Voice.speakRearGunEA((Aircraft) this.actor, (Aircraft) turret.target); } else turret.timeNext = Time.current() + World.Rnd().nextLong(100L, 3000L); } else if (VisCheck.visCheckTurret(turret, (Aircraft) this.actor, ((Aircraft) turret.target), true)) { turret.tMode = 1; turret.timeNext = 0L; if ((Aircraft) this.actor == World.getPlayerAircraft() && turret.health > 0.4F) Voice.speakRearGunEA((Aircraft) this.actor, (Aircraft) turret.target); } else turret.timeNext = Time.current() + World.Rnd().nextLong(100L, 3000L); } break; } case 1: turret.bIsShooting = false; turret.tuLim[0] = tu[0]; turret.tuLim[1] = tu[1]; if (isTick(39, 16)) { if (!shoot && f_22_ > 550.0F || World.Rnd().nextFloat() < 0.1F) { turret.tMode = 0; turret.timeNext = Time.current(); } if ((float) (World.Rnd().nextInt() & 0xff) < 32.0F * f_23_ || f_22_ < 148.0F + 27.0F * (f_23_ - 1.0F)) { if (f_22_ < 450.0F + 66.6F * (f_23_ - 1.0F)) { if (f_23_ - 1.0F <= 0.0F) { if (Vt.x < -0.9599999785423279) { switch (World.Rnd().nextInt(1, 3)) { case 1: turret.tMode = 5; turret.timeNext = (Time.current() + World.Rnd().nextLong(500L, 1200L)); break; case 2: turret.tuLim[0] += World.Rnd().nextFloat(-15.0F, 15.0F); turret.tuLim[1] += World.Rnd().nextFloat(-10.0F, 10.0F); /* fall through */ case 3: turret.tMode = 3; turret.timeNext = (Time.current() + World.Rnd().nextLong(500L, 10000L)); break; } } else if (Vt.x < -0.33000001311302185) { turret.tMode = 3; turret.timeNext = (Time.current() + World.Rnd().nextLong(1000L, 5000L)); } } else if (f_23_ - 1.0F <= 2.0F) { if (Vt.x < -0.9100000262260437) { if (World.Rnd().nextBoolean()) turret.tMode = 3; else turret.tMode = 2; turret.timeNext = (Time.current() + World.Rnd().nextLong(500L, 2200L)); } else { if (World.Rnd().nextFloat() < 0.5F) turret.tMode = 2; else turret.tMode = 3; turret.timeNext = (Time.current() + World.Rnd().nextLong(1500L, 7500L)); } } else { turret.tMode = 2; turret.timeNext = (Time.current() + World.Rnd().nextLong(500L, 7500L)); } } else if (f_22_ < 902.0F + 88.0F * (f_23_ - 1.0F)) { turret.tMode = 3; turret.timeNext = Time.current() + World.Rnd().nextLong(300L, 1000L); } } } break; case 2: turret.bIsShooting = true; turret.tuLim[0] = (tu[0] * World.Rnd().nextFloat(0.76F + 0.06F * f_23_, 1.24F - 0.06F * f_23_) + World.Rnd().nextFloat((-10.0F + 2.5F * f_23_ - rotSpeed * 4.0F), (10.0F - 2.5F * f_23_ + rotSpeed * 4.0F))); turret.tuLim[1] = (tu[1] * World.Rnd().nextFloat(0.76F + 0.06F * f_23_, 1.24F - 0.06F * f_23_) + World.Rnd().nextFloat((-10.0F + 2.5F * f_23_ - rotSpeed * 4.0F), (10.0F - 2.5F * f_23_ + rotSpeed * 4.0F))); if (Time.current() > turret.timeNext) { turret.tMode = 1; if (f_23_ - 1.0F <= 1.0F) { turret.tMode = 0; turret.timeNext = (Time.current() + World.Rnd().nextLong(100L, (long) (f_23_ * 700.0F))); } } break; case 3: // default true// turret.bIsShooting = true; turret.tuLim[0] = (tu[0] * World.Rnd().nextFloat(0.76F + 0.06F * f_23_, 1.24F - 0.06F * f_23_) + World.Rnd().nextFloat((-10.0F + 2.5F * f_23_ - rotSpeed * 5.0F), (10.0F - 2.5F * f_23_ + rotSpeed * 5.0F))); turret.tuLim[1] = (tu[1] * World.Rnd().nextFloat(0.76F + 0.06F * f_23_, 1.24F - 0.06F * f_23_) + World.Rnd().nextFloat((-10.0F + 2.5F * f_23_ - rotSpeed * 5.0F), (10.0F - 2.5F * f_23_ + rotSpeed * 5.0F))); if (Time.current() > turret.timeNext) turret.tMode = 1; break; case 4: // default true// turret.bIsShooting = true; shoot = true; ((Aircraft) this.actor).turretAngles(i, turret.tuLim); if (isTick(20, 0)) { turret.tuLim[0] += World.Rnd().nextFloat(-50.0F, 50.0F); turret.tuLim[1] += World.Rnd().nextFloat(-50.0F, 50.0F); } if (Time.current() > turret.timeNext) { turret.tMode = 5; turret.timeNext = Time.current() + World.Rnd().nextLong(100L, 1500L); } break; case 5: turret.bIsShooting = false; if (Time.current() > turret.timeNext) { turret.tMode = 0; turret.timeNext = 0L; } break; } shoot &= turret.bIsShooting; if (shoot && isTick(32, 0)) { shoot = VisCheck.visCheckTurret(turret, (Aircraft) this.actor, (Aircraft) turret.target, false); if (!shoot) turret.tMode = 0; } if (shoot) { HM.setCurChunk(turret.indexB); ActorHMesh actorhmesh = am; if (this != null) { /* empty */ } actorhmesh.getChunkLocAbs(Actor._tmpLoc); Vg.normalize(); Vg.scale(2.0); Point3d point3d = p; if (this != null) { /* empty */ } point3d.set(Actor._tmpLoc.getPoint()); p.add(Vg); Vg.normalize(); Vg.scale((double) (f_22_ + 300.0F)); Point3d point3d_25_ = p2; if (this != null) { /* empty */ } point3d_25_.set(Actor._tmpLoc.getPoint()); p2.add(Vg); clipFilter.setTarget(turret.target); clipFilter.setOwner(this.actor); Actor actor = Engine.collideEnv().getLine(p, p2, true, clipFilter, null); if (actor != null && actor.getArmy() == this.actor.getArmy() && actor != this.actor && actor instanceof Aircraft) shoot = false; else { Vt.set(1.0, 0.0, 0.0); if (this != null) { /* empty */ } Actor._tmpLoc.getOrient().transform(Vt); double d = Vg.angle(Vt); if (d > 0.1) shoot = false; } } if (f_23_ <= 0.0F) shoot = false; CT.WeaponControl[i + 10] = shoot; updateRotation(turret, f); } } Вот всеь метод стрелков |
![]() |
![]() |
![]() |
#670 |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
![]() ![]() Вот 500м не один не стреляет. |
![]() |
![]() |
![]() |
#671 |
Местный
Регистрация: 12.04.2009
Сообщений: 5,063
|
![]()
игры с АИ до добра не доводят ... в смысле это всё надо делать осторожно и обдуманно... не как раньше ... сделаем потому что можем...
Лидер... а тебе кабины не приходилось кодить? т.е. программить? оживлять
__________________
ищется идейный Программер ) |
![]() |
![]() |
![]() |
#672 |
Местный
Регистрация: 18.02.2015
Адрес: Москва
Сообщений: 522
|
![]()
Добрый вечер.
Я всегда относился к работе ДТ с уважением, да и продолжаю ценить их труд и сейчас. Но вот есть одна вещь, за которую хочется обругать того человека, который тронул ИИ бомберов. Не помню, то ли эта проблема началась с 4.12, то ли с 4.13, но она просто бесит. Суть: с какого перепугу бомбардировщики начинают маневрировать, когда к ним на хвост садится истребитель? Только что в простом редакторе хотел лишний раз погонять бомберов на И-16 тип 29. Захожу на цель (звено Ки-21), открываю огонь. Обстреливаемый японец начинает маневрировать, но в строю тесно, все звено сталкивается с предсказуемыми последствиями. Или - идет атака на какой-нибудь "Гриф"/H8K/Пе-8, и вдруг эти махины начинают пытаться крутить бочки. По-моему, это не нормально. Я не имею ничего против маневрирующих Ki-46, к примеру, или "Москито", но когда стратегический бомбер начинает вытворять непонятные выкрутасы, тогда возникают вопросы. И потом, такое поведение ботов осложняет жизнь еще и при создании кампаний. Это ж просто мучение. Я понимаю, что работа с ИИ - достаточно трудная задача, но есть ли надежда на исправление этого бага? |
![]() |
![]() |
![]() |
#673 |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
![]()
Анимировать всякие ручки не пробывал, а прописать для игрока знаю как, пару раз пробывал.
|
![]() |
![]() |
![]() |
#674 | |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#675 | |
Местный
Регистрация: 18.01.2012
Сообщений: 797
|
![]() Цитата:
В фиксе 4.13.2 будут только мелкие правки касающиеся самого патча 4.13.1 и немного 4.13. |
|
![]() |
![]() |
![]() |
#676 |
Местный
Регистрация: 27.06.2013
Адрес: Киев
Сообщений: 673
|
![]()
Повторюсь. Когда-то закидывал такую хотелку. Может все-таки стоит подумать над этим.
Считаю для игры в радиокомандах в разделе -навигация – необходима новая команда- «взять боевой курс»(название можно придумать другое). После отдачи этой команды, для подчиненных игроку ботов, контрольная точка , которая стоит перед контрольной точкой с целью (атака), должна считаться пройденной и подчиненные боты переходят к атаке назначенной цели. Нечто подобное происходит когда игрок отдает команду ботам «вернуться на базу». Только там на предпоследнюю контрольную точку( перед посадкой) . Особенно актуальна предлагаемая команда в режиме сложности, когда включена реалистичная навигация и отключены маркеры на карте и не понятно засчитаны ли пройденными все контр.точки. Команды «следующая контр.точка» или предыдущая контр.точка» только могут запутать дело при такой сложности. Если не засчитаны все контр.точки , то подчиненные самолеты ИИ бомбардировщики бомбить не будут. Ну за исключением, если «сбросить бомбы по моей команде». Но это не всегда подходит. Понятно, что отдавать эту команду следует в районе цели, если нет уверенности что контрольные точки перед целью пройдены. Мало ли причин по которой игрок может подойти к цели не пройдя предыдущие контрольные точки. В оффлайн кампаниях они не всегда удачно расставлены. И такая новая команда может выручить. Последний раз редактировалось Niro; 21.04.2016 в 21:53. |
![]() |
![]() |
![]() |
#677 | |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#678 |
Местный
Регистрация: 27.06.2013
Адрес: Киев
Сообщений: 673
|
![]() |
![]() |
![]() |
![]() |
#679 | |
Местный
Регистрация: 12.04.2009
Сообщений: 5,063
|
![]() Цитата:
ещё вопрос - а импортом не занимался?
__________________
ищется идейный Программер ) |
|
![]() |
![]() |
![]() |
#680 |
Местный
Регистрация: 12.04.2009
Сообщений: 5,063
|
![]()
... просто так ...
__________________
ищется идейный Программер ) |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|