21.04.2016, 01:23 | #661 |
Пёс - пилот
Регистрация: 24.01.2010
Адрес: С. Петербург
Сообщений: 1,120
|
Вот не правда ваша ! Курсанты мажут только так и хрен знает как стреляют , чуть ли не в другую сторону ( С перепугу наверно ).
Новички , тоже меткостью не отличаются. Но хоть в штаны не кладут. Начиная с ветеранов уже серьёзнее в оф-лайне... тут нужно выбирать правильную позицию и атаковать с мёртвых зон. Что и старались делать в жизни. А если тупо зависать на шести у бомбера и в секторах обстрела живых стрелков... Ну уж извините... Голова зачем людям дана ? Поэтому не пойму о чём плачь. Всё нормально в игре настроено. Летая в оф-лайне на стрелков бомберов не могу пожаловаться. |
21.04.2016, 08:11 | #662 |
Местный
Регистрация: 09.05.2009
Адрес: Хабаровск
Сообщений: 1,750
|
Может, примерно так??
Нашёл давнишнюю запись по теме атаки бобров.Не претендую на лавры, но всё же покажу Сорри, чет потерял когда монтировал кусочек каким образом второго вальнул. Видно как он упал. Да и качество видео оставляет желать лучшего. И... вообще первые неуклюжие попытки видеомонтажа роликов с ИЛа https://youtu.be/SVC9spGsKmM З.Ы. заменил видео, чтобы было без ютубовского "псевдо"улучшения качества. Тормозов при просмотре меньше
__________________
...каждый болен ИЛ-2 по разному, но похоже что навсегда! Последний раз редактировалось Grog; 21.04.2016 в 13:25. |
21.04.2016, 08:54 | #663 |
Пользователь
Регистрация: 10.06.2015
Сообщений: 95
|
Как оффлайн пилот бомберов/штурмов скажу, что я всегда отключаю автопилот у заднего стрелка, т.к. сам стреляю точнее и экономичнее. А по поводу истребителей АИ против бомберов заметил, что курсанты не маневрируют и не дают упреждения при стрельбе, новички маневрируют до черноты в глазах и дают упреждение, но стреляют длинными очередями.
Кстати, а у полевой модификации Ил-2 есть перспективы оживить заднего стрелка? |
21.04.2016, 12:52 | #664 |
Местный
Регистрация: 27.07.2014
Сообщений: 322
|
Медведь и Хазанов в книге "FW-190 - многоцелевой истребитель Люфтваффе" утверждают, что личный состав для IV(Sturm)/JG3 набирался только из добровольцев, а при отсутствии оных - из "штрафников", то есть немецких пилотов, совершивших какие-либо проступки. Настолько это было опасное дело - сближение с тяжёлыми Б-17 и Б-24.
|
21.04.2016, 14:17 | #665 |
Местный
Регистрация: 17.05.2011
Адрес: Краснодар
Сообщений: 1,362
|
Летая в офф-лайне на бомберах, стрелков, "censored", поубивал бы! Просто взял и передушил, своими руками. Имею стойкое убеждение, что когда в бомбере находится игрок, то какой уровень мастерства в редакторе не выставляй, у ИИ-стрелков он автоматически выставляется самый низкий. Лупят, уроды, в белый свет как в копеечку. Вполне способны мазать "в упор", или поливать длинными очередями(ес-сно мимо!) истребитель болтающийся в сотнях метров в стороне от моего самолёта, в то время как другой бандит уже повис на шести.
Стоит же поменяться местами с истребителем, и к этому же самому бомберу, с мастерством "ветеран"/"ас" хрен подберёшся. Те же самые ИИ-стрелки пристреливаются с первой же короткой очереди и дальше(по ощущениям) всаживают в тебя каждую пулю из длинной очереди.
__________________
Я не волшебник, я только лечусь... Последний раз редактировалось Stilet; 21.04.2016 в 14:20. |
21.04.2016, 18:04 | #666 | |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
Цитата:
Можно сделать чтобы по уровню они хотя бы отличались, асы и ветераны могут с большего расстояния стрелять чем новички и курсанты. В идеале вообще вывести в миссию параметр видимости и дистанции стрельбы. А еще лучше дополнительные параметры ввести как в БЗБ Знание сложных маневров дистанция сведения(стрельы) дистанция видимости, кол-во заходов. Это все можно сделать и не особо сложно. |
|
21.04.2016, 18:13 | #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 Ас. |
|
21.04.2016, 18:14 | #668 |
цифровая бестолочь
Регистрация: 17.12.2014
Сообщений: 295
|
|
21.04.2016, 18:15 | #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); } } Вот всеь метод стрелков |
21.04.2016, 18:25 | #670 |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
Вот 500м не один не стреляет. |
21.04.2016, 19:04 | #671 |
Местный
Регистрация: 12.04.2009
Сообщений: 5,057
|
игры с АИ до добра не доводят ... в смысле это всё надо делать осторожно и обдуманно... не как раньше ... сделаем потому что можем...
Лидер... а тебе кабины не приходилось кодить? т.е. программить? оживлять
__________________
ищется идейный Программер ) |
21.04.2016, 20:38 | #672 |
Местный
Регистрация: 18.02.2015
Адрес: Москва
Сообщений: 515
|
Добрый вечер.
Я всегда относился к работе ДТ с уважением, да и продолжаю ценить их труд и сейчас. Но вот есть одна вещь, за которую хочется обругать того человека, который тронул ИИ бомберов. Не помню, то ли эта проблема началась с 4.12, то ли с 4.13, но она просто бесит. Суть: с какого перепугу бомбардировщики начинают маневрировать, когда к ним на хвост садится истребитель? Только что в простом редакторе хотел лишний раз погонять бомберов на И-16 тип 29. Захожу на цель (звено Ки-21), открываю огонь. Обстреливаемый японец начинает маневрировать, но в строю тесно, все звено сталкивается с предсказуемыми последствиями. Или - идет атака на какой-нибудь "Гриф"/H8K/Пе-8, и вдруг эти махины начинают пытаться крутить бочки. По-моему, это не нормально. Я не имею ничего против маневрирующих Ki-46, к примеру, или "Москито", но когда стратегический бомбер начинает вытворять непонятные выкрутасы, тогда возникают вопросы. И потом, такое поведение ботов осложняет жизнь еще и при создании кампаний. Это ж просто мучение. Я понимаю, что работа с ИИ - достаточно трудная задача, но есть ли надежда на исправление этого бага? |
21.04.2016, 20:41 | #673 |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
Анимировать всякие ручки не пробывал, а прописать для игрока знаю как, пару раз пробывал.
|
21.04.2016, 20:43 | #674 | |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
Цитата:
|
|
21.04.2016, 20:49 | #675 | |
Местный
Регистрация: 18.01.2012
Сообщений: 783
|
Цитата:
В фиксе 4.13.2 будут только мелкие правки касающиеся самого патча 4.13.1 и немного 4.13. |
|
21.04.2016, 21:49 | #676 |
Местный
Регистрация: 27.06.2013
Адрес: Киев
Сообщений: 673
|
Повторюсь. Когда-то закидывал такую хотелку. Может все-таки стоит подумать над этим.
Считаю для игры в радиокомандах в разделе -навигация – необходима новая команда- «взять боевой курс»(название можно придумать другое). После отдачи этой команды, для подчиненных игроку ботов, контрольная точка , которая стоит перед контрольной точкой с целью (атака), должна считаться пройденной и подчиненные боты переходят к атаке назначенной цели. Нечто подобное происходит когда игрок отдает команду ботам «вернуться на базу». Только там на предпоследнюю контрольную точку( перед посадкой) . Особенно актуальна предлагаемая команда в режиме сложности, когда включена реалистичная навигация и отключены маркеры на карте и не понятно засчитаны ли пройденными все контр.точки. Команды «следующая контр.точка» или предыдущая контр.точка» только могут запутать дело при такой сложности. Если не засчитаны все контр.точки , то подчиненные самолеты ИИ бомбардировщики бомбить не будут. Ну за исключением, если «сбросить бомбы по моей команде». Но это не всегда подходит. Понятно, что отдавать эту команду следует в районе цели, если нет уверенности что контрольные точки перед целью пройдены. Мало ли причин по которой игрок может подойти к цели не пройдя предыдущие контрольные точки. В оффлайн кампаниях они не всегда удачно расставлены. И такая новая команда может выручить. Последний раз редактировалось Niro; 21.04.2016 в 21:53. |
21.04.2016, 22:20 | #677 | |
Местный
Регистрация: 20.03.2016
Сообщений: 275
|
Цитата:
|
|
21.04.2016, 22:34 | #678 |
Местный
Регистрация: 27.06.2013
Адрес: Киев
Сообщений: 673
|
|
21.04.2016, 22:54 | #679 | |
Местный
Регистрация: 12.04.2009
Сообщений: 5,057
|
Цитата:
ещё вопрос - а импортом не занимался?
__________________
ищется идейный Программер ) |
|
21.04.2016, 22:56 | #680 |
Местный
Регистрация: 12.04.2009
Сообщений: 5,057
|
... просто так ...
__________________
ищется идейный Программер ) |
Здесь присутствуют: 6 (пользователей: 0 , гостей: 6) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|