AviaSkins.Forums

Вернуться   AviaSkins.Forums > Основные разделы > Ил-2 Штурмовик: Забытые Сражения > Обновления

Важная информация

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.09.2016, 20:58   #1
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,311
Радость

Цитата:
Сообщение от Mihael Посмотреть сообщение
........................
Еще такой вопрос:
Вы смотрели повреждения двигателей, скажите, насколько сильны различия в моделировании повреждений двигателей семейства М-105 и других моторов с жидкостным охлаждением? У меня до сих пор такое впечатление, что М-105-ым прописаны некоторые виды повреждений, которых у других аналогичных моторов нет в принципе. Как пример - резкое понижение оборотов даже после попадания 7-мм пуль. Очень чувствуется на Як-1Б, к примеру. Вообще, что это за повреждение? Похоже на упоминавшееся выше повреждение у Ла-5 и Ла-7, только если Лавка может хоть как-то ползти, то Як сразу тю-тю. В то же время, этот же двигатель может позволить дотянуть до линии фронта или базы при, казалось бы, значительно более тяжелых повреждениях.
Да - в моторах М-105-107 первыми идут повреждения пропеллера.
Код:
if(s.startsWith("xxeng1"))
            {
                if(s.endsWith("prop") && getEnergyPastArmor(World.Rnd().nextFloat(0.0F, 0.4F), shot) > 0.0F)
                {
                    FM.EI.engines[0].setKillPropAngleDevice(shot.initiator);
                    Aircraft.debugprintln(this, "*** Engine Prop Governor Failed..");
                }
                if(s.endsWith("gear") && getEnergyPastArmor(World.Rnd().nextFloat(0.0F, 1.1F), shot) > 0.0F)
                {
                    FM.EI.engines[0].setKillPropAngleDeviceSpeeds(shot.initiator);
                    Aircraft.debugprintln(this, "*** Engine Prop Governor Damaged..");
                }
Но дальнейшие повреждения так же завязаны на сброс оборотов и повреждения компрессора.
Мне ОЧЕНЬ не нравиться как выписаны Яковские повреждения. Это как винигред, где последующие части кода дублирую первые.
Более того, на этот же код повреждений опираеться Як-15 который ни разу не поршневик. По нормальному поршневым якам и реактивному следовало бы разделить основные классы и переписать коды повреждения каждым по своему. У раективного первым сразу же повреждался компрессор и отсек вооружения, а уже потом камера сгорания(типа вибивание цилиндров - код можно сделать по подобию). У поршневых сперва пропеллор, а потом цилиндры, вооружение, наконец компрессор.
Если нужно - я - под настроение - допилю основной Яковский класс на предмет повреждения мотора. Половину кода что касаеться баков, маслорадиатора - у меня уже написано по новому.
Цитата:
Сообщение от Mihael Посмотреть сообщение
Я понимаю, что это так просто не сделать, что это достаточно большой объем работы - самолетов много, сделаны они в разное время, скорее всего попутно придется что-то править, приводить к единому "стандарту", поднастраивать. Потом ловить баги и т.д. и т.п..
..........................
Я не знаю почему так сложилось у ребят с ДТ что они запилили Киттихауки, которые были более-мение., не моё это дело рассуждать о планах и возможностях ДТ.
"Кабы да бы - да во рту бы выросли грыбы..." Это я том что если бы был состоятельным человеком - то в первую очередь выделил бы некоторую сумму финансов на создание линеек Яков и Лафок с нуля., ВООБЩЕ С НУЛЯ ПО ЧЕРТЕЖАМ. Что бы в 3До планера было всё: баки с топливом, маслобаки, маслорадиаторы, нормально проложены все тяги, что даже были стрингеры видны в крыльях при пробитии. То есть смоделировать планер подобно как в БоБе.
Если исходить из того что есть в наличии - то Якам СРОЧНО нужны заплатки в 3ДО - баки в крылья, маслорадиаторы, а лучше крылья нарысовать с нуля в Максе и поставить вместо дефолтных цурупалок.
На яках в основном летают во всех дефолтных каръерах за Красных и апгрейт ОЧЕНЬ НЕОБХОДИМ.
Если я завтра буду не на работе - то расширенный код для повреждения мотора в основной класс Якам допишу.

Последний раз редактировалось Vasya; 30.09.2016 в 03:09.
Vasya вне форума   Ответить с цитированием
Старый 30.09.2016, 02:20   #2
Доzорный
Местный
 
Регистрация: 28.04.2016
Адрес: Тюмень
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Vasya Посмотреть сообщение
ВООБЩЕ С НУЛЯ ПО ЧЕРТЕЖАМ. Что бы в 3До планера было всё: баки с топливом, маслобаки, маслорадиаторы, нормально проложены все тяги, что даже были стрингеры видны в крыльях при пробитии. То есть смоделировать планер подобно как в БоБе.
И кабины новые, чего уж там... А для Яков ещё и рабочие бензиномеры на крыльях.

Последний раз редактировалось Доzорный; 30.09.2016 в 02:22.
Доzорный вне форума   Ответить с цитированием
Старый 01.10.2016, 00:19   #3
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,311
Смущение

Цитата:
Сообщение от Vasya Посмотреть сообщение
Если я завтра буду не на работе - то расширенный код для повреждения мотора в основной класс Якам допишу.
Тут:
- http://forum.aviaskins.com/showpost....postcount=6629 -
внутри архива есть хеш AAF46F6E19676E80 - это YAK.class.
В нём переписал повреждения мотора и пропеллера. За основу брал повреждения Мессера.
Вот то что получилось:
Код:
if(s.startsWith("xxeng1"))
            {   
                Aircraft.debugprintln(this, "*** Engine Module: Hit..");
                if(s.endsWith("prop"))
                {
                    if(getEnergyPastArmor(0.1F, shot) > 0.0F && World.Rnd().nextFloat() < 0.8F)
                        if(World.Rnd().nextFloat() < 0.5F)
                        {
                            ((FlightModelMain) (super.FM)).AS.setEngineSpecificDamage(shot.initiator, 0, 3);
                            Aircraft.debugprintln(this, "*** Engine Module: Prop Governor Hit, Disabled..");
                        } else
                        {
                            ((FlightModelMain) (super.FM)).AS.setEngineSpecificDamage(shot.initiator, 0, 4);
                            Aircraft.debugprintln(this, "*** Engine Module: Prop Governor Hit, Damaged..");
                        }
                }
                if((s.endsWith("cyl1") || s.endsWith("cyl2")) && getEnergyPastArmor(World.Rnd().nextFloat(0.5F, 2.542F), shot) > 0.0F && World.Rnd().nextFloat() < FM.EI.engines[0].getCylindersRatio() * 1.72F)
                {
                    FM.EI.engines[0].setCyliderKnockOut(shot.initiator, World.Rnd().nextInt(1, (int)(shot.power / 6000F)));
                    debugprintln(this, "*** Engine Cylinders Hit, " + FM.EI.engines[0].getCylindersOperable() + "/" + FM.EI.engines[0].getCylinders() + " Left..");
                    if(World.Rnd().nextFloat() < 0.01F)
                    {
                        FM.EI.engines[0].setEngineStuck(shot.initiator);
                        debugprintln(this, "*** Engine Cylinder Case Broken - Engine Stuck..");
                    }
                    if(World.Rnd().nextFloat() < shot.power / 24000F)
                    {
                        FM.AS.hitEngine(shot.initiator, 0, 3);
                        debugprintln(this, "*** Engine Cylinders Hit - Engine Fires..");
                    }
                    getEnergyPastArmor(World.Rnd().nextFloat(3F, 25F), shot);
                }                          
             if(s.endsWith("case"))
                {                    
                    if(getEnergyPastArmor(4.1F, shot) > 0.0F)
                    {
                        if(World.Rnd().nextFloat() < shot.power / 175000F)
                        {
                            FM.AS.setEngineStuck(shot.initiator, 0);
                            debugprintln(this, "*** Engine Crank Case Hit - Engine Stucks..");
                        }
                        if(World.Rnd().nextFloat() < shot.power / 50000F)
                        {
                            FM.AS.hitEngine(shot.initiator, 0, 2);
                            debugprintln(this, "*** Engine Crank Case Hit - Engine Damaged..");
                        }
                        if(World.Rnd().nextFloat() < shot.power / 28000F)
                        {
                            FM.EI.engines[0].setCyliderKnockOut(shot.initiator, 1);
                            debugprintln(this, "*** Engine Crank Case Hit - Cylinder Feed Out, " + FM.EI.engines[0].getCylindersOperable() + "/" + FM.EI.engines[0].getCylinders() + " Left..");
                        }
                        if(World.Rnd().nextFloat() < shot.power / 175000F)
                        {
                            ((FlightModelMain) (super.FM)).AS.setEngineStuck(shot.initiator, 0);
                            Aircraft.debugprintln(this, "*** Engine Module: Bullet Jams Crank Ball Bearing..");
                        }
                        if(World.Rnd().nextFloat() < shot.power / 50000F)
                        {
                            ((FlightModelMain) (super.FM)).AS.hitEngine(shot.initiator, 0, 2);
                            Aircraft.debugprintln(this, "*** Engine Module: Crank Case Hit, Readyness Reduced to " + ((FlightModelMain) (super.FM)).EI.engines[0].getReadyness() + "..");
                        }
                        ((FlightModelMain) (super.FM)).EI.engines[0].setReadyness(shot.initiator, ((FlightModelMain) (super.FM)).EI.engines[0].getReadyness() - World.Rnd().nextFloat(0.0F, shot.power / 48000F));
                        Aircraft.debugprintln(this, "*** Engine Module: Crank Case Hit, Readyness Reduced to " + ((FlightModelMain) (super.FM)).EI.engines[0].getReadyness() + "..");
                    }
                    getEnergyPastArmor(22.5F, shot);
                } else
             if(s.endsWith("supc") && getEnergyPastArmor(0.05F, shot) > 0.0F && World.Rnd().nextFloat() < 0.89F)
                {
                    FM.EI.engines[0].setKillCompressor(shot.initiator);
                    debugprintln(this, "*** Engine Supercharger Out..");
                }
                if(s.endsWith("eqpt") && getEnergyPastArmor(World.Rnd().nextFloat(0.001F, 0.2F), shot) > 0.0F && World.Rnd().nextFloat() < 0.89F)
                {
                    if(World.Rnd().nextFloat() < 0.11F)
                    {
                        FM.EI.engines[0].setMagnetoKnockOut(shot.initiator, World.Rnd().nextInt(0, 1));
                        debugprintln(this, "*** Engine Magneto Out..");
                    }
                    if(World.Rnd().nextFloat() < 0.11F)
                    {
                        FM.EI.engines[0].setKillCompressor(shot.initiator);
                        debugprintln(this, "*** Engine Compressor Feed Out..");
                    }
                }
                return;
            }
Не утверждаю что это ПРАВИЛЬНО. Нужно тестить, подставлять под обстрел и смотреть как работает написанный код.
Некоторые места чуть усилены., повреждения прописаны в последовательности как я ВИЖУ.
Моментами есть дубляж функций - как бы сохраняеться выбор для движка Ила что ломать в моторе при попаданиях в оный.
Повреждения пропеллера взяты от БФ-109 полностью.
Vasya вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 10:10. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Рейтинг@Mail.ru