![]() |
Прочитал русский ридми По-2 не будет?
|
в 4.13.1 точно нет. он всё ещё требует доработок... его в этот фикс патч и не планировали...
вообще наверно надо тему завести отдельную для 4.13.1 ... отдельную от Перспектив... |
Цитата:
|
Чем ближе патч, тем больше нетерпение)
|
"В "conf.ini" , в секцию [game], добавлена новая опция Mouse6DOFMove, при значении которой "=1" при обзоре мышью будет выполнять автоматическое смещение к бортам самолёта при обзоре назад."
:good: Вот это полезная штука. Есть где-нибудь ролик, чтобы посмотреть, как это работает? |
на ролике это сложно на самом деле заметить... там не так что б прям голову за борт пилот свешивает
|
Недавно понял чего не хватает в старом иле - звук достигает от источника до слушателя мгновенно. К примеру сбросил ты бомбы с 6000м, они взрываются, а ты слышишь звук их взрыва одновременно с моментом взрыва на любом расстоянии. Как бэ после бзс это очень в глаза бросается. Имеется ли возможность привести к соответствию время и громкость звука соответственно расстоянию? Сита, ты поспрошай там у своих подельников. Вдруг не слабО? Уже много чего смогли. Может удастся избавитьсч от известного бага, когда стоя на филде ты слышишь стрельбу шкасов как будто он над твоим ухом лупит. Или двигатель заводится. К примеру ввести ограничение 20км для слышимости. Благодарю за внимание.
|
Цитата:
|
Пусть введут параметр в конфиг дистанция отрисовки леса , чтобы можно было сделать дальше 3 км ее.
Когда исправят читтерские глаза стрелков? С 902м стреляют, даже в БЗБ стреляют с 500м. 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); } вот что за читтерство почти с 7км видеть? 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; вот читтерство f_22_ < 902.0F стрелять с 902м проверено пусть делают 500м. |
Цитата:
Готов сам сделать и предложить готовый вариант ? |
Цитата:
|
тут вот как бы какая закавыка ... ты спроси пилотов бобров ..их мнение по поводу дальности и точности стрельбы АИ ...
|
Цитата:
|
Цитата:
вот например. |
Не спора ради, не знаю, как лучше и как правильно.
Но! Нельзя в качестве доказательства приводить кадры фотопулемёта. Ибо это не доказательство и не статистика. На один успешный заход могло приходиться несколько безуспешных, когда стрелки не давали выйти на дистанцию стрельбы. Этого фотопулемёт естественно не фиксировал. Для выяснения того, какая дистанция открытия огня в среднем была нужно отчёты пилотов и стрелков анализировать и брать данные оттуда. Ещё руководства наверняка содержат в себе какую-нибудь информацию и рекомендации. |
Цитата:
|
Цитата:
А вот что там диктор говорит интересно? Да и по видео ещё уточнение бы у знающих людей: оптика на камере приближает или нет? Если да, то на сколько? |
Если ястреб завис на 6, то в онлайне и с 700м можно уже стрелять, ПК прописать реально ему. А если к тебе на 6 подходит 110 с подвесами, то ты и с километра будешь пулять, т.к. она тебя с этого километра может разобрать. По этому вопросу у всех игроков разное будет мнение, и фиг ты кому чего докажешь. БСЖ.
|
у бобров вообще отдельное мнение... для них аи стреляет слишком не точно)))
|
Вообще, схемы атак различных штурмов и бомберов не просто так рисовали. И указывали на них наиболее опасные углы и сектора, и наиболее выгодные для атаки. Я, помниццо, одно время увлекался просмотром американских обучающих фильмов времён войны. Интересно было посмотреть. Помню киношки с молодым Рейганом, где как раз эти моменты тактические рассматривались. И в игре иногда получалось атаковать бобров таким образом, что они хоть и видели, и даже стреляли, но большого вреда причинить не могли.
А так, да, если на 6 бобру садиццо, то ничего удивительного нет в том, что он тебя десять раз из десяти пэкашит. :) |
Цитата:
Новички , тоже меткостью не отличаются. Но хоть в штаны не кладут. Начиная с ветеранов уже серьёзнее в оф-лайне... тут нужно выбирать правильную позицию и атаковать с мёртвых зон. Что и старались делать в жизни. А если тупо зависать на шести у бомбера и в секторах обстрела живых стрелков... Ну уж извините... Голова зачем людям дана ? Поэтому не пойму о чём плачь. Всё нормально в игре настроено. Летая в оф-лайне на стрелков бомберов не могу пожаловаться. |
Может, примерно так?? ;)
Нашёл давнишнюю запись по теме атаки бобров.Не претендую на лавры, но всё же покажу Сорри, чет потерял когда монтировал кусочек каким образом второго вальнул. Видно как он упал. Да и качество видео оставляет желать лучшего. И... вообще первые неуклюжие попытки видеомонтажа роликов с ИЛа:ups: https://youtu.be/SVC9spGsKmM З.Ы. заменил видео, чтобы было без ютубовского "псевдо"улучшения качества. Тормозов при просмотре меньше:) |
Как оффлайн пилот бомберов/штурмов скажу, что я всегда отключаю автопилот у заднего стрелка, т.к. сам стреляю точнее и экономичнее. А по поводу истребителей АИ против бомберов заметил, что курсанты не маневрируют и не дают упреждения при стрельбе, новички маневрируют до черноты в глазах и дают упреждение, но стреляют длинными очередями.
Кстати, а у полевой модификации Ил-2 есть перспективы оживить заднего стрелка? |
Медведь и Хазанов в книге "FW-190 - многоцелевой истребитель Люфтваффе" утверждают, что личный состав для IV(Sturm)/JG3 набирался только из добровольцев, а при отсутствии оных - из "штрафников", то есть немецких пилотов, совершивших какие-либо проступки. Настолько это было опасное дело - сближение с тяжёлыми Б-17 и Б-24.
|
Цитата:
Стоит же поменяться местами с истребителем, и к этому же самому бомберу, с мастерством "ветеран"/"ас" хрен подберёшся. Те же самые ИИ-стрелки пристреливаются с первой же короткой очереди и дальше(по ощущениям) всаживают в тебя каждую пулю из длинной очереди. |
Цитата:
Можно сделать чтобы по уровню они хотя бы отличались, асы и ветераны могут с большего расстояния стрелять чем новички и курсанты. В идеале вообще вывести в миссию параметр видимости и дистанции стрельбы. А еще лучше дополнительные параметры ввести как в БЗБ Знание сложных маневров дистанция сведения(стрельы) дистанция видимости, кол-во заходов. Это все можно сделать и не особо сложно. |
Цитата:
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 Ас. |
Цитата:
|
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); } } Вот всеь метод стрелков |
https://pp.vk.me/c636025/v636025949/...kS3D2b_W38.jpg
Вот 500м не один не стреляет. |
игры с АИ до добра не доводят ... в смысле это всё надо делать осторожно и обдуманно... не как раньше ... сделаем потому что можем...
Лидер... а тебе кабины не приходилось кодить? т.е. программить? оживлять |
Добрый вечер.
Я всегда относился к работе ДТ с уважением, да и продолжаю ценить их труд и сейчас. Но вот есть одна вещь, за которую хочется обругать того человека, который тронул ИИ бомберов. Не помню, то ли эта проблема началась с 4.12, то ли с 4.13, но она просто бесит. Суть: с какого перепугу бомбардировщики начинают маневрировать, когда к ним на хвост садится истребитель? Только что в простом редакторе хотел лишний раз погонять бомберов на И-16 тип 29. Захожу на цель (звено Ки-21), открываю огонь. Обстреливаемый японец начинает маневрировать, но в строю тесно, все звено сталкивается с предсказуемыми последствиями. Или - идет атака на какой-нибудь "Гриф"/H8K/Пе-8, и вдруг эти махины начинают пытаться крутить бочки. По-моему, это не нормально. Я не имею ничего против маневрирующих Ki-46, к примеру, или "Москито", но когда стратегический бомбер начинает вытворять непонятные выкрутасы, тогда возникают вопросы. И потом, такое поведение ботов осложняет жизнь еще и при создании кампаний. Это ж просто мучение. Я понимаю, что работа с ИИ - достаточно трудная задача, но есть ли надежда на исправление этого бага? |
Цитата:
|
Цитата:
|
Цитата:
В фиксе 4.13.2 будут только мелкие правки касающиеся самого патча 4.13.1 и немного 4.13. |
Повторюсь. Когда-то закидывал такую хотелку. Может все-таки стоит подумать над этим.
Считаю для игры в радиокомандах в разделе -навигация – необходима новая команда- «взять боевой курс»(название можно придумать другое). После отдачи этой команды, для подчиненных игроку ботов, контрольная точка , которая стоит перед контрольной точкой с целью (атака), должна считаться пройденной и подчиненные боты переходят к атаке назначенной цели. Нечто подобное происходит когда игрок отдает команду ботам «вернуться на базу». Только там на предпоследнюю контрольную точку( перед посадкой) . Особенно актуальна предлагаемая команда в режиме сложности, когда включена реалистичная навигация и отключены маркеры на карте и не понятно засчитаны ли пройденными все контр.точки. Команды «следующая контр.точка» или предыдущая контр.точка» только могут запутать дело при такой сложности. Если не засчитаны все контр.точки , то подчиненные самолеты ИИ бомбардировщики бомбить не будут. Ну за исключением, если «сбросить бомбы по моей команде». Но это не всегда подходит. Понятно, что отдавать эту команду следует в районе цели, если нет уверенности что контрольные точки перед целью пройдены. Мало ли причин по которой игрок может подойти к цели не пройдя предыдущие контрольные точки. В оффлайн кампаниях они не всегда удачно расставлены. И такая новая команда может выручить. |
Цитата:
|
Цитата:
Вы на бомбардировщиках летаете в оффлайне ? |
Цитата:
ещё вопрос - а импортом не занимался? |
Вложений: 1
... просто так ...
|
Текущее время: 09:02. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot