Показать сообщение отдельно
Старый 28.08.2023, 19:47   #1544
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,311
Сообщение

Я сделал себе так:
фильтр записал в основной класс, так же дописал в класс Ех команду фильтра из Ультимат-пака-4.
Фильтр не появляется только в моделях с компрессором от ДБ-603.
Потому как в хиер-хим он не прописан.
Классы, которые предлагаю гарантировано работают в патче 4.12.2.
В основном классе изменил дамаж рулевых поверхностей и добавил
состояние для топливного бака.
Ориентировался на Лагг и прописал Мессерам дамаж похлипче.
Код:
if(s.startsWith("xxcontrols"))
            {
                int i = s.charAt(10) - 48;
                switch(i)
                {
                default:
                    break;

                case 1: // '\001'
                case 2: // '\002'
                case 3: // '\003'
                    if(getEnergyPastArmor(0.4F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F)
                    {
                        ((FlightModelMain) (super.FM)).AS.setControlsDamage(shot.initiator, 0);
                        Aircraft.debugprintln(this, "*** Aileron Controls: Disabled..");
                    }
                    break;

                case 4: // '\004'
                    if(getEnergyPastArmor(0.4F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F)
                    {
                        ((FlightModelMain) (super.FM)).AS.setControlsDamage(shot.initiator, 0);
                        Aircraft.debugprintln(this, "*** Aileron Controls: Control Crank Destroyed..");
                    }
                    break;
               
                case 5: // '\005'
                case 6: // '\006'
                    if(getEnergyPastArmor(0.4F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F)
                    {
                        ((FlightModelMain) (super.FM)).AS.setControlsDamage(shot.initiator, 1);
                        Aircraft.debugprintln(this, "*** Elevator Controls: Disabled / Strings Broken..");
                    }
                    break;

                case 7: // '\007'
                    if(getEnergyPastArmor(0.4F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F)
                    {
                        ((FlightModelMain) (super.FM)).AS.setControlsDamage(shot.initiator, 2);
                        Aircraft.debugprintln(this, "*** Rudder Controls: Disabled..");
                    }
                    break;

                case 8: // '\b'
                    if(getEnergyPastArmor(3.2F, shot) > 0.0F)
                    {
                        Aircraft.debugprintln(this, "*** Control Column: Hit, Controls Destroyed..");
                        ((FlightModelMain) (super.FM)).AS.setControlsDamage(shot.initiator, 2);
                        ((FlightModelMain) (super.FM)).AS.setControlsDamage(shot.initiator, 1);
                        ((FlightModelMain) (super.FM)).AS.setControlsDamage(shot.initiator, 0);
                    }
                    break;

                case 9: // '\t'
                    if(getEnergyPastArmor(2.25F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F)
                    {
                        ((FlightModelMain) (super.FM)).AS.setCockpitState(shot.initiator, ((FlightModelMain) (super.FM)).AS.astateCockpitState | 8);
                        ((FlightModelMain) (super.FM)).AS.setEngineSpecificDamage(shot.initiator, 0, 1);
                        ((FlightModelMain) (super.FM)).AS.setEngineSpecificDamage(shot.initiator, 0, 6);
                        Aircraft.debugprintln(this, "*** Throttle Quadrant: Hit, Engine Controls Disabled..");
                    }
                    break;
                }
            }
----------------
Код фильтра:
Код:
public void onAircraftLoaded()
    {
        super.onAircraftLoaded();
        if(Config.isUSE_RENDER())
            if(World.cur().camouflage == 2 || World.cur().camouflage == 5)
            {               
                if(hierMesh().chunkFindCheck("Filter_d0") != -1 && ! ((this instanceof BF_109G6HARTMANN)))
                {                
                    hierMesh().chunkVisible("Filter_d0", true);
                    hierMesh().chunkVisible("FilterFlap1_D0", true);
                    hierMesh().chunkVisible("FilterFlap2_D0", true);
                    bHasFilter = true;
                } else
                if(hierMesh().chunkFindCheck("FilterE_D0") != -1)
                {
                    hierMesh().chunkVisible("FilterE_d0", true);
                    hierMesh().chunkVisible("FilterEFlap_D0", true);
                    bHasFilterE = true;
                }
            } else
            if(World.cur().camouflage == 0 && NetAircraft.loadingCountry != null && NetAircraft.loadingCountry.equals(PaintScheme.countryFinland) && hierMesh().chunkFindCheck("Filter_d0") != -1 && ((this instanceof BF_109F2) || (this instanceof BF_109F3) || (this instanceof BF_109F4) || (this instanceof BF_109F4Z) || (this instanceof BF_109F413ATA) || (this instanceof BF_109G2) || (this instanceof BF_109G4)))
            {
                int i = Mission.getMissionDate(true);
                if(World.Rnd().nextFloat() > 0.5F && i > 0x128a1e5)
                {
                    hierMesh().chunkVisible("Filter_d0", true);
                    hierMesh().chunkVisible("FilterFlap1_D0", true);
                    hierMesh().chunkVisible("FilterFlap2_D0", true);
                    bHasFilter = true;
                }
            }
    }
Фильтр не появляется только у Хартмана, на Средиземном море и в Африке его не было.
Фильтр окрывается после высоты 150 метров.
Вложения
Тип файла: rar Мессер фикс фильтр 4.12.2 ++.rar (807.2 Кб, 301 просмотров)
Тип файла: rar BF_109--Исходники.rar (7.7 Кб, 340 просмотров)

Последний раз редактировалось Vasya; 28.08.2023 в 21:56. Причина: прикрепление нового архива
Vasya вне форума   Ответить с цитированием