|
|
|
|
|
#1 |
|
Местный
Регистрация: 18.11.2015
Сообщений: 1,716
|
Пока точно нет. Несколько вечеров экспериментирую с кодом повреждения баков.
Опознал флаги повреждения баков setTankState. 0 - нормальное состояние 1 - утечка 2 - светлый дым 3 - тёмный дым 4 - пожар без дыма 5 - пожар с дымом Код:
if(s.startsWith("xxtank"))
{
int k = s.charAt(6) - 49;
if(getEnergyPastArmor(2.25F, shot) > 0.0F && World.Rnd().nextFloat() < 0.45F)// 2.25 - броня бака, 0.45 - вероятность пробития
{
if(FM.AS.astateTankStates[k] == 0)
{
debuggunnery("Fuel Tank (" + k + "): Pierced..");
FM.AS.hitTank(shot.initiator, k, 1);
FM.AS.doSetTankState(shot.initiator, k, 1);
}
if(World.Rnd().nextFloat() < 0.02F || shot.powerType == 3 && World.Rnd().nextFloat() < 0.4F)// 0.02 - вероятность возгорания при любом попадании или при пробитии бака боеприпасом типа 3 вероятность возгорания 0.4
{
FM.AS.hitTank(shot.initiator, k, 4);// 4 - пожар без дыма
debuggunnery("Fuel Tank (" + k + "): Hit..");
}
}
return;
}
Последний раз редактировалось Dimas1999; 02.08.2023 в 23:19. |
|
|
|
|
|
#2 |
|
Местный
Регистрация: 18.11.2015
Сообщений: 1,716
|
Эксперимент.
1. Бак горит, состояние 4. 2. Горящий бак успел повредить соседний бак, огонь уже пропал, состояние 3. 3. Протектор загерметизировал текущий бак. 4. Дымящийся бак стал меньше дымить, состояние 2. 5. Бак перестал дымить и теперь он течёт, состояние 1. Позже бак перестал течь, состояние 0. К сожалению, игре не возможно определить от чего потёк бак и протектор ремонтирует любую течь. Зато отсюда получается багофича. Скорее всего, всё топливо успеет сгореть или вытечь пока бак "ремонтируется". Т.к. нет топлива, больше шансов на прекращение пожара (в жизни). Теперь есть шанс спланировать на самолёте до своей территории. Для теста поставил 100% воспламеняемость бака, 10% вероятность "ремонта" бака в каждом состоянии и 14% вероятность перекидывания огня. С предыдущими вариантами кода получались интересные варианты, когда один бак тух, но в последнюю секунду огонь перебрасывался на соседний бак и от него снова загорался первый бак. Иногда дымящийся бак снова вспыхивал. Надо играть с вероятностью затухания, чтобы код из базового класса вызывал снова пожар. Случайное затухание и возгорание ещё прописано в базовых классах, но с такими настройками дымление никогда у меня ещё не пропадало. При тестах стоит бесконечный запас топлива, иначе, пока потухнет бак и прекратится течь, топлива может уже не остаться. Взрыв бака зарыт где-то в базовых классах, иногда бак почти сразу взрывается, а иногда можно летать несколько минут. Код:
public void rareAction(float paramFloat, boolean paramBoolean)
{
super.rareAction(paramFloat, paramBoolean);
if(paramBoolean)
{
if(((FlightModelMain) (super.FM)).AS.astateTankStates[0] > 4 && World.Rnd().nextFloat() < 0.14F)
((FlightModelMain) (super.FM)).AS.hitTank(this, 1, 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[1] > 4 && World.Rnd().nextFloat() < 0.14F)
((FlightModelMain) (super.FM)).AS.hitTank(this, 0, 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[2] > 4 && World.Rnd().nextFloat() < 0.14F)
((FlightModelMain) (super.FM)).AS.hitTank(this, 3, 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[3] > 4 && World.Rnd().nextFloat() < 0.14F)
((FlightModelMain) (super.FM)).AS.hitTank(this, 2, 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[0] == 1 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.repairTank(0);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[1] == 1 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.repairTank(1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[2] == 1 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.repairTank(2);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[3] == 1 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.repairTank(3);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[0] == 2 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 0, ((FlightModelMain) (super.FM)).AS.astateTankStates[0] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[1] == 2 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 1, ((FlightModelMain) (super.FM)).AS.astateTankStates[1] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[2] == 2 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 2, ((FlightModelMain) (super.FM)).AS.astateTankStates[2] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[3] == 2 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 3, ((FlightModelMain) (super.FM)).AS.astateTankStates[3] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[0] == 3 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 0, ((FlightModelMain) (super.FM)).AS.astateTankStates[0] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[1] == 3 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 1, ((FlightModelMain) (super.FM)).AS.astateTankStates[1] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[2] == 3 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 2, ((FlightModelMain) (super.FM)).AS.astateTankStates[2] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[3] == 3 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 3, ((FlightModelMain) (super.FM)).AS.astateTankStates[3] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[0] == 4 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 0, ((FlightModelMain) (super.FM)).AS.astateTankStates[0] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[1] == 4 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 1, ((FlightModelMain) (super.FM)).AS.astateTankStates[1] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[2] == 4 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 2, ((FlightModelMain) (super.FM)).AS.astateTankStates[2] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[3] == 4 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 3, ((FlightModelMain) (super.FM)).AS.astateTankStates[3] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[0] == 5 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 0, ((FlightModelMain) (super.FM)).AS.astateTankStates[0] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[1] == 5 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 1, ((FlightModelMain) (super.FM)).AS.astateTankStates[1] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[2] == 5 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 2, ((FlightModelMain) (super.FM)).AS.astateTankStates[2] - 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[3] == 5 && World.Rnd().nextFloat() < 0.1F)
((FlightModelMain) (super.FM)).AS.setTankState(this, 3, ((FlightModelMain) (super.FM)).AS.astateTankStates[3] - 1);
Последний раз редактировалось Dimas1999; 03.08.2023 в 00:50. Причина: дописка текста |
|
|
|
|
|
#3 |
|
Местный
Регистрация: 18.11.2015
Сообщений: 1,716
|
Обновил сборки ЛаГГ и Ла.
Пошлифовал ещё код возгорания бака. Жду отзывы и предложения. Для пятибачных вариантов с вероятность 0.0196 огонь может перекинуться на соседнюю консоль. Имитация пятого фюзеляжного бака, 0.14*0.14=0.0196 У ЛаГГов подправил дальность лодов, теперь крайний лод виден до 6 км, как и у серии Ла. Так же добавил углы отклонения рулей по ТО. У Ла-5Ф/ФН не было хуков утечки топлива в крыле, добавил их. ЛаГГ https://drive.google.com/file/d/1yML...ew?usp=sharing Ла https://drive.google.com/file/d/1Ojq...ew?usp=sharing Последний раз редактировалось Dimas1999; 04.08.2023 в 23:20. |
|
|
|
|
|
#4 |
|
Местный
Регистрация: 09.05.2009
Адрес: Хабаровск
Сообщений: 1,959
|
Спасибо Дима, за труды твои!
__________________
...каждый болен ИЛ-2 по разному, но похоже что навсегда! |
|
|
|
|
|
#5 |
|
Местный
Регистрация: 18.11.2015
Сообщений: 1,716
|
Кто пробовал сборку Ла-5, у меня вопрос к вам. Как вам новые пилоты от Ранверса (https://www.sas1946.com/main/index.p...c,69518.0.html), которых я поставил туда? Есть ли с ними какие-либо проблемы? У них довольно много полигонов, могут быть некоторые проблемы.
|
|
|
|
|
|
#6 | |
|
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,637
|
Цитата:
|
|
|
|
|
|
|
#7 | ||
|
Местный
Регистрация: 18.11.2015
Сообщений: 1,716
|
Цитата:
Эффекты не должны никак влиять. Сами эффекты могут быть косячными. Цитата:
YAK - протектор + нейтральный газ. YAK_1x - только протектор, используется всеми Як-1 до 102 серии. YAK_1Lx - нет протектора и нейтрального газа, для облегчённого Як-1 69 серии и Як-7УТИ. YAK_7vx - для Як-7В, нет протектора, нейтрального газа, нет убираемого шасси. Нашёл ещё ошибку, у Яков в разных моделях разная нумерация баков, где-то 1, 2, 3, 4, а где-то 3, 1, 2, 4. Где у меня на двухбачных моделях переброска огня стоит? 6 ДОФ в БАТе как-то иначе реализован, поэтому много моих модов там не работало. |
||
|
|
|
|
|
#8 |
|
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,637
|
Эффекты очень нравятся. А вот пилоты - на ранних Ла-5 тоже пилот в форме с погонами, введеными с 43 года.. Красиво - но уж тогда б проще в голубом комбезе, чтоб знаки различия вообще не понять..
|
|
|
|
|
|
#9 | |
|
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,363
|
Цитата:
Код:
// Код перекидывания огня на соседний бак, вероятность 14%
if(((FlightModelMain) (super.FM)).AS.astateTankStates[0] > 4 && World.Rnd().nextFloat() < 0.14F)
((FlightModelMain) (super.FM)).AS.hitTank(this, 1, 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[1] > 4 && World.Rnd().nextFloat() < 0.14F)
((FlightModelMain) (super.FM)).AS.hitTank(this, 0, 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[2] > 4 && World.Rnd().nextFloat() < 0.14F)
((FlightModelMain) (super.FM)).AS.hitTank(this, 3, 1);
if(((FlightModelMain) (super.FM)).AS.astateTankStates[3] > 4 && World.Rnd().nextFloat() < 0.14F)
((FlightModelMain) (super.FM)).AS.hitTank(this, 2, 1);
Думаю там всего 2 бака. Мысль: если убрать код переброски огня на соседний бак в основном классе и добавлять по необходимости в те модели(в их классы),где есть дополнительные консольные баки. ---------------------------- В БАТе в большинстве классов такой же 6Доф вписан.
Последний раз редактировалось Vasya; 11.08.2023 в 09:03. |
|
|
|
|
|
|
#10 |
|
Местный
Регистрация: 18.11.2015
Сообщений: 1,716
|
В очередной раз доработал ДМ для Яков.
У всех "жидкостных" Яков: поменял "самопальный" коллижен нагнетателя на вариант от МиГ-3; поставил 2 магнето от МиГ-3; сделал элементы топливной системы Fuel и Feed, взял от bf-109. Для опытных моделей с М-82 поставил коллижены мотора от Ла-5. Сделал код горения бака аналогично моделям КБ Лавочкина. Як-1 до 102 серии не имели системы нейтрального газа, в моде теперь тоже его нет. Вероятность воспламенения от зажигательного снаряда 0.955. Цифру взял у японских самолётов. Код:
if(shot.powerType == 3 && World.Rnd().nextFloat() < 0.995F) У моделей с нейтральным газом вероятность пожара 0.25. Цифра от стандартного Ла-5. Код:
if(shot.powerType == 3 && World.Rnd().nextFloat() < 0.25F) Як-1 69 серии, Як-7В, Як-7УТИ не имеют так же протектора бака. Убрал лобовое бронестекло у Як-1Б 99 серии, все улучшения внесли со 110 серии. Так же у Як-1Б 99 серии убрал обтекатели выхлопных патрубков, их ввели со 106 серии. Произвёл корректировку боезапаса у моделей Як-1. Поправил ЛОДы, теперь крайний ЛОД виден до 6 км, было 2,6 км. https://drive.google.com/file/d/1F88...ew?usp=sharing Последний раз редактировалось Dimas1999; 06.08.2023 в 00:56. |
|
|
|
|
|
#11 |
|
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,637
|
На Ла-7Б-20 вот так отображается рамка РПК. В БАТ.
|
|
|
|
|
|
#12 |
|
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,363
|
Скачал обновлённые Яки - Большое Спасибо!
![]() -------------- Начал вносить правки. Для крыльев без протектора баков код пока сделал таким: Код:
if(s.startsWith("xxtank"))
{
int k = s.charAt(6) - 49;
if(getEnergyPastArmor(0.8F, shot) > 0.0F && World.Rnd().nextFloat() < 0.45F)
{
if(FM.AS.astateTankStates[k] == 0)
{
debuggunnery("Fuel Tank (" + k + "): Pierced..");
FM.AS.hitTank(shot.initiator, k, 1);
FM.AS.doSetTankState(shot.initiator, k, 1);
}
if(World.Rnd().nextFloat() < 0.1F || shot.powerType == 3 && World.Rnd().nextFloat() < 0.6F)
{
FM.AS.hitTank(shot.initiator, k, 4);
debuggunnery("Fuel Tank (" + k + "): Hit..");
FM.AS.doSetTankState(shot.initiator, k, 5);
}
}
return;
}
Оставлена возможность зажигать баки разными боеприпасами. По твоему пояснению добавил состояние горения. ![]() Буду тестить вечером. Переброску огня буду убирать у двубачных моделей. Мне кажется, что загореться бак правого крыла от левого не очень может. И вопрос - в классах кокпитов законтрен код limits6DoF - так правильно? - или это временно? ![]() --------------------------- Так же готовлю Я-7Б-М-106, который был в реале(пару машин) под твою сборку. Нужно проверить по коду с последним общим обновлением. Для Як-1 улучшенный поменяю планер на "дефолтный" Як-1.
Последний раз редактировалось Vasya; 06.08.2023 в 07:53. |
|
|
|
|
|
#13 |
|
Местный
|
В текстуре нет альфа-канала для этого элемента.
|
|
|
|
|
|
#14 |
|
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,637
|
|
|
|
|
|
|
#15 |
|
Местный
|
|
|
|
|
|
|
#16 |
|
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,363
|
Приеду домой где то через 1.5-2 часа, буду смотреть пристальнее.
С утра только с пол-часа посмотрел. Вчера причёсывал основной класс, а ночью увидел обновление. После сравнения классов напишу вопросы. |
|
|
|
|
|
#17 |
|
Местный
Регистрация: 18.11.2015
Сообщений: 1,716
|
Скин поправлю. Пилотов, пожалуй поставлю от Барнеси, у него полигонов меньше.
|
|
|
|
|
|
#18 |
|
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,637
|
Поставил пак Яков. Впечатлен работой - ну очень здорово! Погонял несколько выборочно. У Як-9П не вращается винт - вообще, хотя самолет летает. Очень красивый дымок при запуске... а винт недвижим.
|
|
|
|
|
|
#19 |
|
Местный
Регистрация: 18.11.2015
Сообщений: 1,716
|
Исправил.
Есть такой вопрос. Насколько живучее цельнометаллический Як-9П по сравнению с Як-9У? Есть ли смысл для него слегка увеличить в hitbone прочность фюзеляжа? Насколько более живучее металлическое хвостовое оперение у Як-7 и облегчённых Як-1? Насколько более живучий Ла-5ФН/Ла-7 с металлическим лонжероном крыла, по сравнению с Ла-5 с деревянным лонжероном? |
|
|
|
|
|
#20 | |
|
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,363
|
Цитата:
Качество сборки получше и дюралевое крыло как большой плюс. По оперению Як-7: наверное немного живучее, думаю 1-2 снаряда в 20мм не покрошат в щепу рули. Смотря какое дерево применялось. В 42 массово сосну ставили - но для снарядов 20 мм. сосна и бярьоза примерно одинаково хрупкие. Если есть колижены лонжеронов, то металлическим я бы увеличил поувер дамажа на 30-40 проц. Як-1/9 сам по себе по старых технологиях был сделан, иногда это плюс. Перебить все хромансилевые трубки что бы переломить фюзеляж - это несколько снарядов 30 мм. М-Гессос. А вот порвать на лоскуты фанерную обшивку крыла очередью фугасных снарядов - запросто. Читал в мемуарах, что прыгали когда крыло было раздето. А в 42-43 годах нормальной смолы не было склеивать/пропитывать листы фанерной обшивки. Смола до войны шла из Германии. Поэтому качество крыльев Як/Лагг было плохенькое. Думаю, что сломать фюзеляж Яка/Лагга и Мессера было примерно одинаково. А вот крыля из дюраля немного получше. Последний раз редактировалось Vasya; 08.08.2023 в 01:47. |
|
|
|
|
![]() |
| Здесь присутствуют: 5 (пользователей: 0 , гостей: 5) | |
|
|