AviaSkins.Forums

Вернуться   AviaSkins.Forums > Основные разделы > Моды для Ил-2 > Первым делом, первым делом - самолеты

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

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

Расскажу нашим участникам и захожим посетителям немного о мододелании.
Сел за комп и думаю себе: нужно поставить новую карту Белоруссии и потестить там Мессер с новыми крыльями. Класс там несложный и ваяеться всё неспеша за пол-часа.
Ага... не тут то было.
Залез в папку. где складываю папки с 3До для работы и зацепился взглядом за Ки-94. О! Вспомнил - я ему фм правил(чуть-чуть) года два назад. Думаю: щас быстренько перевскрою классы, закомпилю и сделаю фм за часок(знания уже типа позволяют).
Вскрыл я основной класс того Ки-94 и начал офуевать от "поэзии скульптора". Сразу зацепился взглядом за корявость:
Код:
public abstract class KI_94_V2 extends Scheme1
    implements TypeFighter, TypeBNZFighter, TypeStormovik
{

    public KI_94_V2()
    {
        Class class1 = com.maddox.il2.objects.air.KI_94_V2.class;
        new NetAircraft.SPAWN(class1);
        Property.set(class1, "originCountry", PaintScheme.countryItaly);
    }
Какого "херуса рамазотти" самоль штурмовик, да ещё и итальянский?
Для штурмовика свой код бомбометания нужно вписывать. Где он?
И Япония уже примыкает к Италии? Не, ну, оно канешна страны оси, но однако... просто в итальянских миссиях в патчах ниже 4.13.4 будет краш системы.
Дальше 4-5 разделов сложного кода, похоже выдранного из класса Лавок.
Но потом економия и ещё раз економия - коды ужаты - как буд то ваятель очень спешил и напихал что было под рукой.
Хотя есть же похожий крафт - Ки-84., есть и Ки-100. В них подробно и просто расписаны повреждения и работа агрегатов. Можно было при ваянии 3До просто одинаково(подобно как в Ки-84) назвать все меши и коллизии. Добавить чего нибуть вкусненького и дописать разделы кода из Ки-100 - например.
В общем: сидел я и пересобирал часа ТРИ основной класс, переставлял скобки и выправлял "скачущий в неизвесность" ужатый код.
Конечно - это всё получилось не идеально., в самолёт - в 3До - нужно добавлять и масло-бак и топливную систему и гидравлику и много ещё чего. Только после нормальной сборки 3До с коллизиями можно потихоньку выписать всё в классе и это будет весьма гут.
На скорую руку делать самолёты невозможно. Иначе это будут летающие брёвна.
Извините за откровенность.
Правленный класс Ки-94 до состояния "може буты" ниже в посте.

Последний раз редактировалось Vasya; 29.06.2018 в 21:48.
Vasya вне форума   Ответить с цитированием
Старый 29.06.2018, 20:34   #2
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Сообщение

Код:
package com.maddox.il2.objects.air;

import com.maddox.JGP.Point3d;
import com.maddox.JGP.Vector3d;
import com.maddox.il2.ai.*;
import com.maddox.il2.engine.*;
import com.maddox.il2.engine.Actor;
import com.maddox.il2.engine.HierMesh;
import com.maddox.il2.fm.*;
import com.maddox.il2.game.Main3D;
import com.maddox.rts.Property;

public abstract class KI_94X extends Scheme1
    implements TypeFighter, TypeBNZFighter
{
    
    public KI_94X()
    {
        flapps = 0.0F;
    }
   
    public float getEyeLevelCorrection()
    {
        return 0.05F;
    }

    public void doMurderPilot(int i)
    {
        switch(i)
        {
        case 0: // '\0'
            hierMesh().chunkVisible("Pilot1_D0", false);
            hierMesh().chunkVisible("Head1_D0", false);
            hierMesh().chunkVisible("HMask1_D0", false);
            hierMesh().chunkVisible("Pilot1_D1", true);
            break;
        }
    }

    protected boolean cutFM(int i, int j, Actor actor)
    {
        if(i == 19)
            FM.Gears.hitCentreGear();
        return super.cutFM(i, j, actor);
    }

    public void moveCockpitDoor(float f)
    {
        resetYPRmodifier();
        Aircraft.xyz[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.005F);
        Aircraft.xyz[1] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.635F);
        Aircraft.ypr[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 1.0F);
        hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr);
        if(Config.isUSE_RENDER())
        {
            if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null)
                Main3D.cur3D().cockpits[0].onDoorMoved(f);
            setDoorSnd(f);
        }
    }

    public void update(float f)
    {
        float f1 = FM.EI.engines[0].getControlRadiator();
        if(Math.abs(flapps - f1) > 0.01F)
        {
            flapps = f1;
            for(int i = 1; i < 13; i++)
            {
                String s = "Water" + i + "_D0";
                hierMesh().chunkSetAngles(s, 0.0F, -32F * f1, 0.0F);
            }

        }
        super.update(f);
    }

    public void rareAction(float f, boolean flag)
    {
        super.rareAction(f, flag);
        if(FM.getAltitude() < 3000F)
            hierMesh().chunkVisible("hmask1_D0", false);
        else
            hierMesh().chunkVisible("hmask1_D0", hierMesh().isChunkVisible("Pilot1_D0"));
        if(flag)
        {
            if(FM.AS.astateEngineStates[0] > 3 && World.Rnd().nextFloat() < 0.39F)
                FM.AS.hitTank(this, 0, 1);
            if(FM.AS.astateTankStates[0] > 4 && World.Rnd().nextFloat() < 0.1F)
                nextDMGLevel(FM.AS.astateEffectChunks[0] + "0", 0, this);
            if(FM.AS.astateTankStates[1] > 4 && World.Rnd().nextFloat() < 0.1F)
                nextDMGLevel(FM.AS.astateEffectChunks[1] + "0", 0, this);
            if(FM.AS.astateTankStates[2] > 4 && World.Rnd().nextFloat() < 0.1F)
                nextDMGLevel(FM.AS.astateEffectChunks[2] + "0", 0, this);
            if(FM.AS.astateTankStates[3] > 4 && World.Rnd().nextFloat() < 0.1F)
                nextDMGLevel(FM.AS.astateEffectChunks[3] + "0", 0, this);
        }
    }
    
    public static void moveGear_old(HierMesh hiermesh, float f, float f1, float f2)
    {
        hiermesh.chunkSetAngles("GearL2_D0", 0.0F, Aircraft.cvt(f, 0.18F, 0.99F, 0.0F, 90F), 0.0F);
        hiermesh.chunkSetAngles("GearL4_D0", 0.0F, Aircraft.cvt(f, 0.02F, 0.2F, 0.0F, 90F), 0.0F);
        hiermesh.chunkSetAngles("Gearl6_D0", 0.0F, Aircraft.cvt(f, 0.18F, 0.99F, 0.0F, -30F), 0.0F);
        Aircraft.xyz[0] = Aircraft.xyz[1] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
        Aircraft.xyz[1] = Aircraft.cvt(f, 0.3F, 0.99F, 0.0F, 0.45F);
        hiermesh.chunkSetLocate("Gearl9_D0", Aircraft.xyz, Aircraft.ypr);
        hiermesh.chunkSetAngles("GearR2_D0", 0.0F, Aircraft.cvt(f1, 0.18F, 0.99F, 0.0F, 90F), 0.0F);
        hiermesh.chunkSetAngles("GearR4_D0", 0.0F, Aircraft.cvt(f1, 0.02F, 0.2F, 0.0F, 90F), 0.0F);
        hiermesh.chunkSetAngles("GearR6_D0", 0.0F, Aircraft.cvt(f1, 0.18F, 0.99F, 0.0F, 30F), 0.0F);
        Aircraft.xyz[0] = Aircraft.xyz[1] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
        Aircraft.xyz[1] = Aircraft.cvt(f1, 0.3F, 0.99F, 0.0F, 0.45F);
        hiermesh.chunkSetLocate("GearR9_D0", Aircraft.xyz, Aircraft.ypr);
        hiermesh.chunkSetAngles("GearC2_D0", 0.0F, Aircraft.cvt(f2, 0.11F, 0.67F, 0.0F, -70F), 0.0F);
        hiermesh.chunkSetAngles("GearC3L_D0", 0.0F, Aircraft.cvt(f2, 0.0F, 0.15F, 0.0F, 80F), 0.0F);
        hiermesh.chunkSetAngles("GearC3R_D0", 0.0F, Aircraft.cvt(f2, 0.0F, 0.15F, 0.0F, -80F), 0.0F);
    }

    protected void moveGear_old(float f, float f1, float f2)
    {
        moveGear(hierMesh(), f, f1, f2);
    }

    public static void moveGear(HierMesh hiermesh, float f, float f1, float f2, boolean flag)
    {
        hiermesh.chunkSetAngles("GearL2_D0", 0.0F, Aircraft.cvt(f, 0.18F, 0.89F, 0.0F, 90F), 0.0F);
        hiermesh.chunkSetAngles("GearL4_D0", 0.0F, Aircraft.cvt(f, 0.02F, 0.2F, 0.0F, 90F) + Aircraft.cvt(f, 0.6F, 0.79F, 0.0F, -90F), 0.0F);
        hiermesh.chunkSetAngles("Gearl6_D0", 0.0F, Aircraft.cvt(f, 0.18F, 0.89F, 0.0F, -30F), 0.0F);
        Aircraft.xyz[0] = Aircraft.xyz[1] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
        Aircraft.xyz[1] = Aircraft.cvt(f, 0.3F, 0.99F, 0.0F, 0.45F);
        hiermesh.chunkSetLocate("Gearl9_D0", Aircraft.xyz, Aircraft.ypr);
        hiermesh.chunkSetAngles("GearR2_D0", 0.0F, Aircraft.cvt(f1, 0.28F, 0.99F, 0.0F, 90F), 0.0F);
        hiermesh.chunkSetAngles("GearR4_D0", 0.0F, Aircraft.cvt(f1, 0.12F, 0.3F, 0.0F, 90F) + Aircraft.cvt(f, 0.7F, 0.89F, 0.0F, -90F), 0.0F);
        hiermesh.chunkSetAngles("GearR6_D0", 0.0F, Aircraft.cvt(f1, 0.28F, 0.99F, 0.0F, 30F), 0.0F);
        Aircraft.xyz[0] = Aircraft.xyz[1] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
        Aircraft.xyz[1] = Aircraft.cvt(f1, 0.3F, 0.99F, 0.0F, 0.45F);
        hiermesh.chunkSetLocate("GearR9_D0", Aircraft.xyz, Aircraft.ypr);
        Aircraft.xyz[0] = Aircraft.xyz[2] = Aircraft.ypr[0] = Aircraft.ypr[1] = Aircraft.ypr[2] = 0.0F;
        float f3 = -0.1F;
        Aircraft.xyz[1] = Aircraft.cvt(f, 0.18F, 0.35F, 0.0F, f3) - Aircraft.cvt(f, 0.38F, 0.5F, 0.0F, f3);
        hiermesh.chunkSetLocate("GearL8_D0", Aircraft.xyz, Aircraft.ypr);
        Aircraft.xyz[1] = Aircraft.cvt(f1, 0.28F, 0.45F, 0.0F, f3) - Aircraft.cvt(f1, 0.48F, 0.6F, 0.0F, f3);
        hiermesh.chunkSetLocate("GearR8_D0", Aircraft.xyz, Aircraft.ypr);
        if(flag)
        {
            hiermesh.chunkSetAngles("GearC2_D0", 0.0F, Aircraft.cvt(f2, 0.63F, 0.99F, 0.0F, -70F), 0.0F);
            hiermesh.chunkSetAngles("GearC3L_D0", 0.0F, Aircraft.cvt(f2, 0.52F, 0.67F, 0.0F, 80F), 0.0F);
            hiermesh.chunkSetAngles("GearC3R_D0", 0.0F, Aircraft.cvt(f2, 0.52F, 0.67F, 0.0F, -80F), 0.0F);
        } else
        {
            hiermesh.chunkSetAngles("GearC2_D0", 0.0F, Aircraft.cvt(f2, 0.11F, 0.47F, 0.0F, -70F), 0.0F);
            hiermesh.chunkSetAngles("GearC3L_D0", 0.0F, Aircraft.cvt(f2, 0.0F, 0.15F, 0.0F, 80F), 0.0F);
            hiermesh.chunkSetAngles("GearC3R_D0", 0.0F, Aircraft.cvt(f2, 0.0F, 0.15F, 0.0F, -80F), 0.0F);
        }
    }

    public static void moveGear(HierMesh hiermesh, float f, float f1, float f2)
    {
        moveGear(hiermesh, f, f1, f2, true);
    }

    protected void moveGear(float f, float f1, float f2)
    {
        moveGear(hierMesh(), f, f1, f2, FM.CT.GearControl > 0.5F);
    }

    public static void moveGear(HierMesh hiermesh, float f, boolean flag)
    {
        moveGear(hiermesh, f, f, f, flag);
    }

    public static void moveGear(HierMesh hiermesh, float f)
    {
        moveGear(hiermesh, f, f, f, true);
    }

    protected void moveGear(float f)
    {
        moveGear(hierMesh(), f, FM.CT.GearControl > 0.5F);
    }

    public void moveWheelSink()
    {
        resetYPRmodifier();
        Aircraft.xyz[1] = Aircraft.cvt(FM.Gears.gWheelSinking[0], 0.0F, 0.2085F, 0.0F, -0.2085F);
        hierMesh().chunkSetLocate("GearL8_D0", Aircraft.xyz, Aircraft.ypr);
        Aircraft.xyz[1] = Aircraft.cvt(FM.Gears.gWheelSinking[1], 0.0F, 0.2085F, 0.0F, -0.2085F);
        hierMesh().chunkSetLocate("GearR8_D0", Aircraft.xyz, Aircraft.ypr);
    }

    protected void moveFlap(float f)
    {
        if(thisWeaponsName.equalsIgnoreCase("2x250kg") && FM.CT.Weapons[3] != null && FM.CT.Weapons[3][0] != null && FM.CT.Weapons[3][FM.CT.Weapons[3].length - 1].haveBullets() && f > 0.33F)
        {
            FM.CT.forceFlaps(0.33F);
            FM.CT.FlapsControl = 0.33F;
            f = 0.33F;
        }
        resetYPRmodifier();
        Aircraft.xyz[0] = Aircraft.cvt(f, 0.0F, 0.2F, 0.0F, 0.45F);
        Aircraft.xyz[2] = Aircraft.cvt(f, 0.1F, 0.15F, 0.0F, -0.014F) + Aircraft.cvt(f, 0.2F, 1.0F, 0.0F, 0.014F);
        Aircraft.ypr[1] = Aircraft.cvt(f, 0.0F, 0.2F, 0.0F, -5F) + Aircraft.cvt(f, 0.2F, 0.33F, 0.0F, -15F) + Aircraft.cvt(f, 0.33F, 1.0F, 0.0F, -35F);
        hierMesh().chunkSetLocate("FlapInL_D0", Aircraft.xyz, Aircraft.ypr);
        hierMesh().chunkSetLocate("FlapInR_D0", Aircraft.xyz, Aircraft.ypr);
        hierMesh().chunkSetLocate("FlapOutL_D0", Aircraft.xyz, Aircraft.ypr);
        hierMesh().chunkSetLocate("FlapOutR_D0", Aircraft.xyz, Aircraft.ypr);
    }

    protected void setControlDamage(Shot shot, int i)
    {
        if(World.Rnd().nextFloat() < 0.01F && getEnergyPastArmor(4F, shot) > 0.01F)
            FM.AS.setControlsDamage(shot.initiator, i);
    }
Vasya вне форума   Ответить с цитированием
Старый 29.06.2018, 20:35   #3
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Сообщение

Код:
protected void moveAileron(float f)
    {
        float f1 = -(f * 30F);
        hierMesh().chunkSetAngles("AroneL_D0", 0.0F, f1, 0.0F);
        f1 = -(f * 30F);
        hierMesh().chunkSetAngles("AroneR_D0", 0.0F, f1, 0.0F);
    }

    protected void moveRudder(float f)
    {
        hierMesh().chunkSetAngles("Rudder1_D0", 0.0F, -31F * f, 0.0F);
    }

    protected void moveElevator(float f)
    {
        if(f < 0.0F)
        {
            hierMesh().chunkSetAngles("VatorL_D0", 0.0F, -20F * f, 0.0F);
            hierMesh().chunkSetAngles("VatorR_D0", 0.0F, -20F * f, 0.0F);
        } else
        {
            hierMesh().chunkSetAngles("VatorL_D0", 0.0F, -30F * f, 0.0F);
            hierMesh().chunkSetAngles("VatorR_D0", 0.0F, -30F * f, 0.0F);
        }
    }

    protected void hitBone(String s, Shot shot, Point3d point3d)
    {
        if(s.startsWith("xx"))
        {
            if(s.startsWith("xxarmor"))
            {
                if(s.startsWith("xxarmorp"))
                {
                    int i = s.charAt(8) - 48;
                    switch(i)
                    {
                    case 1: // '\001'
                        getEnergyPastArmor(22.760000228881836D / (Math.abs(Aircraft.v1.x) + 9.9999997473787516E-005D), shot);
                        if(shot.power <= 0.0F)
                            doRicochetBack(shot);
                        break;

                    case 3: // '\003'
                        getEnergyPastArmor(9.366F, shot);
                        break;

                    case 5: // '\005'
                        getEnergyPastArmor(12.699999809265137D / (Math.abs(Aircraft.v1.x) + 9.9999997473787516E-005D), shot);
                        break;
                    }
                return;
            }
            if(s.startsWith("xxcontrols"))
            {
                int j = s.charAt(10) - 48;
                switch(j)
                {
                case 1: // '\001'
                case 2: // '\002'
                    if(getEnergyPastArmor(0.28F / ((float)Math.sqrt(Aircraft.v1.y * Aircraft.v1.y + Aircraft.v1.z * Aircraft.v1.z) + 0.0001F), shot) > 0.0F)
                    {
                        if(World.Rnd().nextFloat() < 0.05F)
                            FM.AS.setControlsDamage(shot.initiator, 1);
                        if(World.Rnd().nextFloat() < 0.75F)
                            FM.AS.setControlsDamage(shot.initiator, 2);
                    }
                    break;

                case 3: // '\003'
                    if(getEnergyPastArmor(3.6F, shot) > 0.0F)
                    {
                        FM.AS.setControlsDamage(shot.initiator, 2);
                        FM.AS.setControlsDamage(shot.initiator, 1);
                        FM.AS.setControlsDamage(shot.initiator, 0);
                    }
                    break;

                case 4: // '\004'
                    if(getEnergyPastArmor(0.22F, shot) > 0.0F)
                    {
                        FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 8);
                        FM.AS.setEngineSpecificDamage(shot.initiator, 0, 1);
                        FM.AS.setEngineSpecificDamage(shot.initiator, 0, 6);
                    }
                    break;

                case 5: // '\005'
                case 7: // '\007'
                    if(getEnergyPastArmor(0.125F, shot) > 0.0F)
                        FM.AS.setControlsDamage(shot.initiator, 0);
                    break;

                case 6: // '\006'
                case 8: // '\b'
                    if(getEnergyPastArmor(4D / (Math.abs(Aircraft.v1.x) + 9.9999997473787516E-005D), shot) > 0.0F && World.Rnd().nextFloat() < 0.5F)
                        FM.AS.setControlsDamage(shot.initiator, 0);
                    break;
                }
                return;
            }            
            if(s.startsWith("xxeng"))
                {
                    
                    if(s.endsWith("case") || s.endsWith("gear"))
                    {   
                        if((s.endsWith("prop") || s.endsWith("pipe")) && getEnergyPastArmor(0.2F, shot) > 0.0F && World.Rnd().nextFloat() < 0.5F)
                            FM.EI.engines[0].setKillPropAngleDevice(shot.initiator); 
                        if(getEnergyPastArmor(0.1F, shot) > 0.0F)
                        {
                            if(World.Rnd().nextFloat() < shot.power / 140000F)
                            {
                                FM.AS.setEngineStuck(shot.initiator, 0);
                                debugprintln(this, "*** Engine Crank Case Hit - Engine Stucks..");
                            }
                            if(World.Rnd().nextFloat() < shot.power / 85000F)
                            {
                                FM.AS.hitEngine(shot.initiator, 0, 2);
                                debugprintln(this, "*** Engine Crank Case Hit - Engine Damaged..");
                            }
                    } else
                    if(World.Rnd().nextFloat() < 0.01F)
                    {
                        FM.EI.engines[0].setCyliderKnockOut(shot.initiator, 1);
                    } else
                    {
                        FM.EI.engines[0].setReadyness(shot.initiator, FM.EI.engines[0].getReadyness() - 0.002F);
                        debugprintln(this, "*** Engine Crank Case Hit - Readyness Reduced to " + FM.EI.engines[0].getReadyness() + "..");
                    }
                    getEnergyPastArmor(14F, shot);
                 }
                 if(s.endsWith("cyl1") || s.endsWith("cyl2"))
                    if(getEnergyPastArmor(5.85F, shot) > 0.0F && World.Rnd().nextFloat() < FM.EI.engines[0].getCylindersRatio() * 0.75F)
                    {
                        FM.EI.engines[0].setCyliderKnockOut(shot.initiator, World.Rnd().nextInt(1, (int)(shot.power / 19000F)));
                        debugprintln(this, "*** Engine Cylinders Hit, " + FM.EI.engines[0].getCylindersOperable() + "/" + FM.EI.engines[0].getCylinders() + " Left..");
                        if(World.Rnd().nextFloat() < shot.power / 48000F)
                        {
                            FM.AS.hitEngine(shot.initiator, 0, 2);
                            debugprintln(this, "*** Engine Cylinders Hit - Engine Fires..");
                        }
                    }
                    getEnergyPastArmor(25F, shot);
                } else
                if(s.endsWith("supc") && getEnergyPastArmor(0.1F, shot) > 0.0F && World.Rnd().nextFloat() < 0.89F)
                {
                    ((FlightModelMain) (super.FM)).EI.engines[0].setKillCompressor(shot.initiator);
                    Aircraft.debugprintln(this, "*** Engine Supercharger Out..");
                }                                                       
                if(s.startsWith("xxeng1oil"))
                {
                    if(getEnergyPastArmor(0.25F, shot) > 0.0F && World.Rnd().nextFloat() < 0.125F)
                    {
                        ((FlightModelMain) (super.FM)).AS.hitOil(shot.initiator, 0);
                        getEnergyPastArmor(0.22F, shot);
                        debuggunnery("Engine Module: Oil Tank Pierced..");
                    }
                    return;
            }
            if(s.startsWith("xxtank"))
            {
                int k = s.charAt(6) - 49;
                if(getEnergyPastArmor(0.12F, 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(FM.AS.astateTankStates[k] == 1)
                    {
                        debuggunnery("Fuel Tank (" + k + "): Pierced..");
                        FM.AS.hitTank(shot.initiator, k, 1);
                        FM.AS.doSetTankState(shot.initiator, k, 2);
                    }
                    if(World.Rnd().nextFloat() < 0.01F || shot.powerType == 3 && World.Rnd().nextFloat() < 0.4F)
                    {
                        FM.AS.hitTank(shot.initiator, k, 4);
                        debuggunnery("Fuel Tank (" + k + "): Hit..");
                    }
                }
                return;
            }
Vasya вне форума   Ответить с цитированием
Старый 29.06.2018, 20:38   #4
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Сообщение

Код:
if(s.startsWith("xxmgun"))
            {
                if(s.endsWith("01"))
                    FM.AS.setJamBullets(0, 0);
                if(s.endsWith("02"))
                    FM.AS.setJamBullets(1, 0);
                    getEnergyPastArmor(World.Rnd().nextFloat(0.5F, 15.6F), shot);
                }
                return;
            }
            if(s.startsWith("xxcannon"))
            {
                if(s.endsWith("02"))
                     FM.AS.setJamBullets(3, 0);
                if(s.endsWith("03"))
                     FM.AS.setJamBullets(4, 0);
                     getEnergyPastArmor(World.Rnd().nextFloat(0.5F, 15.6F), shot);
                }
                return;
            }
            if(s.startsWith("xxlock"))
            {
                debuggunnery("Lock Construction: Hit..");
                if(s.startsWith("xxlockr") && getEnergyPastArmor(5.5F * World.Rnd().nextFloat(1.0F, 1.5F), shot) > 0.0F)
                {
                    debuggunnery("Lock Construction: Rudder1 Lock Shot Off..");
                    nextDMGLevels(3, 2, "Rudder1_D" + chunkDamageVisible("Rudder1"), shot.initiator);
                }
                if(s.startsWith("xxlockvl") && getEnergyPastArmor(5.5F * World.Rnd().nextFloat(1.0F, 1.5F), shot) > 0.0F)
                {
                    debuggunnery("Lock Construction: VatorL Lock Shot Off..");
                    nextDMGLevels(3, 2, "VatorL_D" + chunkDamageVisible("VatorL"), shot.initiator);
                }
                if(s.startsWith("xxlockvr") && getEnergyPastArmor(5.5F * World.Rnd().nextFloat(1.0F, 1.5F), shot) > 0.0F)
                {
                    debuggunnery("Lock Construction: VatorR Lock Shot Off..");
                    nextDMGLevels(3, 2, "VatorR_D" + chunkDamageVisible("VatorR"), shot.initiator);
                }
                if(s.startsWith("xxlockal") && getEnergyPastArmor(5.5F * World.Rnd().nextFloat(1.0F, 1.5F), shot) > 0.0F)
                {
                    debuggunnery("Lock Construction: AroneL Lock Shot Off..");
                    nextDMGLevels(3, 2, "AroneL_D" + chunkDamageVisible("AroneL"), shot.initiator);
                }
                if(s.startsWith("xxlockar") && getEnergyPastArmor(5.5F * World.Rnd().nextFloat(1.0F, 1.5F), shot) > 0.0F)
                {
                    debuggunnery("Lock Construction: AroneR Lock Shot Off..");
                    nextDMGLevels(3, 2, "AroneR_D" + chunkDamageVisible("AroneR"), shot.initiator);
                }
                if(s.startsWith("xxlockf"))
                    getEnergyPastArmor(5.5F * World.Rnd().nextFloat(1.0F, 3F), shot);
                return;
            }
            if(s.startsWith("xxspar"))
            {
                debugprintln(this, "*** Spar Construction: Hit..");
                if((s.endsWith("li1") || s.endsWith("li2")) && (double)World.Rnd().nextFloat() < 1.0D - 0.92000001668930054D * Math.abs(v1.x) && chunkDamageVisible("WingLIn") > 2 && getEnergyPastArmor(2.5F * World.Rnd().nextFloat(1.0F, 1.2F), shot) > 0.0F)
                {
                    debugprintln(this, "*** WingLIn Spars Damaged..");
                    nextDMGLevels(1, 2, "WingLIn_D3", shot.initiator);
                }
                if((s.endsWith("ri1") || s.endsWith("ri2")) && (double)World.Rnd().nextFloat() < 1.0D - 0.92000001668930054D * Math.abs(v1.x) && chunkDamageVisible("WingRIn") > 2 && getEnergyPastArmor(2.5F * World.Rnd().nextFloat(1.0F, 1.2F), shot) > 0.0F)
                {
                    debugprintln(this, "*** WingRIn Spars Damaged..");
                    nextDMGLevels(1, 2, "WingRIn_D3", shot.initiator);
                }
                if((s.endsWith("lm1") || s.endsWith("lm2")) && (double)World.Rnd().nextFloat() < 1.0D - 0.92000001668930054D * Math.abs(v1.x) && chunkDamageVisible("WingLMid") > 2 && getEnergyPastArmor(2.5F * World.Rnd().nextFloat(1.0F, 1.2F), shot) > 0.0F)
                {
                    debugprintln(this, "*** WingLMid Spars Damaged..");
                    nextDMGLevels(1, 2, "WingLMid_D3", shot.initiator);
                }
                if((s.endsWith("rm1") || s.endsWith("rm2")) && (double)World.Rnd().nextFloat() < 1.0D - 0.92000001668930054D * Math.abs(v1.x) && chunkDamageVisible("WingRMid") > 2 && getEnergyPastArmor(2.5F * World.Rnd().nextFloat(1.0F, 1.2F), shot) > 0.0F)
                {
                    debugprintln(this, "*** WingRMid Spars Damaged..");
                    nextDMGLevels(1, 2, "WingRMid_D3", shot.initiator);
                }
                if((s.endsWith("lo1") || s.endsWith("lo2")) && (double)World.Rnd().nextFloat() < 1.0D - 0.92000001668930054D * Math.abs(v1.x) && chunkDamageVisible("WingLOut") > 2 && getEnergyPastArmor(1.5F * World.Rnd().nextFloat(1.0F, 1.2F), shot) > 0.0F)
                {
                    debugprintln(this, "*** WingLOut Spars Damaged..");
                    nextDMGLevels(1, 2, "WingLOut_D3", shot.initiator);
                }
                if((s.endsWith("ro1") || s.endsWith("ro2")) && (double)World.Rnd().nextFloat() < 1.0D - 0.92000001668930054D * Math.abs(v1.x) && chunkDamageVisible("WingROut") > 2 && getEnergyPastArmor(1.5F * World.Rnd().nextFloat(1.0F, 1.2F), shot) > 0.0F)
                {
                    debugprintln(this, "*** WingROut Spars Damaged..");
                    nextDMGLevels(1, 2, "WingROut_D3", shot.initiator);
                }
                if(s.startsWith("xxsparsl") && World.Rnd().nextFloat(0.0F, 0.115F) < shot.mass && getEnergyPastArmor(6.8F * World.Rnd().nextFloat(1.0F, 1.5F), shot) > 0.0F)
                {
                    debugprintln(this, "*** StabL Spar Damaged..");
                    nextDMGLevels(1, 2, "StabL_D" + chunkDamageVisible("StabL"), shot.initiator);
                }
                if(s.startsWith("xxsparsr") && World.Rnd().nextFloat(0.0F, 0.115F) < shot.mass && getEnergyPastArmor(6.8F * World.Rnd().nextFloat(1.0F, 1.5F), shot) > 0.0F)
                {
                    debugprintln(this, "*** StabR Spar Damaged..");
                    nextDMGLevels(1, 2, "StabR_D" + chunkDamageVisible("StabR"), shot.initiator);
                }
                if(s.startsWith("xxspark") && World.Rnd().nextFloat() < 0.5F && getEnergyPastArmor((double)(6.8F * World.Rnd().nextFloat(1.0F, 1.5F)) / (Math.abs(v1.x) + 9.9999997473787516E-005D), shot) > 0.0F)
                {
                    debugprintln(this, "*** Keel Spars Damaged..");
                    nextDMGLevels(1, 2, "Keel1_D" + chunkDamageVisible("Keel1"), shot.initiator);
                }
                if(s.startsWith("xxspart") && chunkDamageVisible("Tail1") > 2 && getEnergyPastArmor(3.86F / (float)Math.sqrt(v1.y * v1.y + v1.z * v1.z), shot) > 0.0F && World.Rnd().nextFloat() < 0.25F)
                {
                    debuggunnery("Spar Construction: Tail1 Ribs Hit, Breaking in Half..");
                    nextDMGLevels(1, 2, "Tail1_D3", shot.initiator);
                }
                return;
        }
Vasya вне форума   Ответить с цитированием
Старый 29.06.2018, 20:38   #5
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Сообщение

Код:
if(s.startsWith("xcf") || s.startsWith("xblister"))
        {
            setControlDamage(shot, 0);
            setControlDamage(shot, 1);
            setControlDamage(shot, 2);
            if(chunkDamageVisible("CF") < 3)
            hitChunk("CF", shot);
                if(s.startsWith("xblister"))
                FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 1);
            if(point3d.x > -0.60499999999999998D && point3d.x < -0.29499999999999998D)
                FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 0x40);
            if(point3d.x > -1.7050000000000001D && point3d.x < -0.49199999999999999D && point3d.z > 0.082000000000000003D && World.Rnd().nextFloat() < 0.5F)
                if(World.Rnd().nextFloat() < 0.25F)
                    FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 4);
                else
                if(World.Rnd().nextFloat() < 0.33F)
                    FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 8);
                else
                if(World.Rnd().nextFloat() < 0.5F)
                    FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 0x10);
                else
                    FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 0x20);
             return;
        }
        if(s.startsWith("xeng"))
        {
            if(chunkDamageVisible("Engine1") < 2)
                hitChunk("Engine1", shot);
        } else
        if(s.startsWith("xtail"))
        {
            setControlDamage(shot, 1);
            setControlDamage(shot, 2);
            if(chunkDamageVisible("Tail1") < 3)
                hitChunk("Tail1", shot);
        } else
        if(s.startsWith("xkeel"))
            hitChunk("Keel1", shot);
        else
        if(s.startsWith("xrudder"))
        {
            setControlDamage(shot, 2);
            if(chunkDamageVisible("Rudder1") < 1)
                hitChunk("Rudder1", shot);
        } else
        if(s.startsWith("xstab"))
        {
            if(s.startsWith("xstabl"))
                hitChunk("StabL", shot);
            if(s.startsWith("xstabr"))
                hitChunk("StabR", shot);
        } else
        if(s.startsWith("xvator"))
        {
            if(s.startsWith("xvatorl") && chunkDamageVisible("VatorL") < 1)
                hitChunk("VatorL", shot);
            if(s.startsWith("xvatorr") && chunkDamageVisible("VatorR") < 1)
                hitChunk("VatorR", shot);
        } else
        if(s.startsWith("xwing"))
        {
            if(s.startsWith("xwinglin") && chunkDamageVisible("WingLIn") < 3)
            {
                setControlDamage(shot, 0);
                hitChunk("WingLIn", shot);
            }
            if(s.startsWith("xwingrin") && chunkDamageVisible("WingRIn") < 3)
            {
                setControlDamage(shot, 0);
                hitChunk("WingRIn", shot);
            }
            if(s.startsWith("xwinglmid") && chunkDamageVisible("WingLMid") < 3)
            {
                setControlDamage(shot, 0);
                hitChunk("WingLMid", shot);
            }
            if(s.startsWith("xwingrmid") && chunkDamageVisible("WingRMid") < 3)
            {
                setControlDamage(shot, 0);
                hitChunk("WingRMid", shot);
            }
            if(s.startsWith("xwinglout1") && chunkDamageVisible("WingLOut") < 3)
                hitChunk("WingLOut", shot);
            if(s.startsWith("xwingrout1") && chunkDamageVisible("WingROut") < 3)
                hitChunk("WingROut", shot);
        } else
        if(s.startsWith("xarone"))
        {
            if(s.startsWith("xaronel") && chunkDamageVisible("AroneL") < 1)
                hitChunk("AroneL", shot);
            if(s.startsWith("xaroner") && chunkDamageVisible("AroneR") < 1)
                hitChunk("AroneR", shot);
        } else        
        if(s.startsWith("xoil"))
        {
            if(World.Rnd().nextFloat() < 0.12F)
                FM.AS.hitOil(shot.initiator, 0);
        } else
        if(s.startsWith("xgear"))
        {
            if(World.Rnd().nextFloat() < 0.05F)
            {
                debuggunnery("Hydro System: Disabled..");
                FM.AS.setInternalDamage(shot.initiator, 0);
            }
            if(World.Rnd().nextFloat() < 0.1F && getEnergyPastArmor(World.Rnd().nextFloat(1.2F, 3.435F), shot) > 0.0F)
            {
                debuggunnery("Undercarriage: Stuck..");
                FM.AS.setInternalDamage(shot.initiator, 3);
            }
        } else
        if(!s.startsWith("xblister") && (s.startsWith("xpilot") || s.startsWith("xhead")))
        {
            byte byte0 = 0;
            int l;
            if(s.endsWith("a"))
            {
                byte0 = 1;
                l = s.charAt(6) - 49;
            } else
            if(s.endsWith("b"))
            {
                byte0 = 2;
                l = s.charAt(6) - 49;
            } else
            {
                l = s.charAt(5) - 49;
            }
            hitFlesh(l, shot, byte0);
            }
    }

    static java.lang.Class _mthclass$(java.lang.String s)
    {
        java.lang.Class class1;
        try
        {
            class1 = java.lang.Class.forName(s);
        }
        catch(java.lang.ClassNotFoundException classnotfoundexception)
        {
            throw new NoClassDefFoundError(classnotfoundexception.getMessage());
        }
        return class1;
    }

    private float flapps;

    static 
    {
        Class class1 = com.maddox.il2.objects.air.KI_94X.class;
        Property.set(class1, "originCountry", PaintScheme.countryJapan);
    }
}
Vasya вне форума   Ответить с цитированием
Старый 29.06.2018, 21:01   #6
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Радость

Цитата:
Сообщение от Димон Посмотреть сообщение
бензобак в мессерах дефолтных есть коллижн, за седушкой пилота, а маслобак изобрАжен в моторе как xxeng1oil1, оно же и типо маслорадиатор, при хорошем попадании горит как твои свечки не замечал разницы с xxoil1, все равно хук горящего масла один, на моторе
Ну да - в Мессе всё работает. Можно глянуть в хиере и писать в коде названия коллизий. Там не сложно. Да и почти всё выписано уже для Месса. Завтра вечером буду собирать новокрыльный Фридрих.
Благодарю!
Vasya вне форума   Ответить с цитированием
Старый 29.06.2018, 20:58   #7
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Смущение

Хотелось бы поправленный планер И-180.
Ну шо бы крылья отрывались в двух местах - у фюзеля и половинка. Не помешало бы ломающийся хвост как в И-16 из поздних патчей.
Если назвать меши как в планеры И-16 - то можно почти весь класс Ишака задействовать. Нужно только маслобак и маслорадиатор. Если сделать меш козырька диед с замызганным стеклом маслом - то и код из Яка или Месса можно "присунуть" для разбрызгивания масла.
О!
Мечты, мечты - где ваша сладость...?

Последний раз редактировалось Vasya; 29.06.2018 в 21:40.
Vasya вне форума   Ответить с цитированием
Старый 29.06.2018, 21:07   #8
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Радость

Цитата:
Сообщение от Димон Посмотреть сообщение
Сергей сам будет править, когда освоит Макс, это его игруха, я не стал резать, очень много зализов, топор туповат
Ничего, подождём.
Как возмёться - пущай по образцу поздних Ишаков(Тип-29+) делает.
И нормально меш с пушко-пулемётами нужен - длиннинький - дабы не полоска была, а цэлый арсенал - типа как в реале.
Буду ждать очень поправленный Ишак-180.
Vasya вне форума   Ответить с цитированием
Старый 29.06.2018, 21:03   #9
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Радость

Пойду полью дочкины цветочки в огороде под домом.
Звыняйте братэ!
Vasya вне форума   Ответить с цитированием
Старый 05.07.2018, 22:08   #10
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Радость

Дописываю мотор для Доры-9(10). Так что бы приспособить к Илу и не писать родной редуктор (0.42) - Ил его плохо понимает. Умножение мощности для компенсации потерь нужно в 1.6667 раза. Но в стоко же вырастает расход топлива. Вписывание пересчитанного расхода топлива в емд плохо помогает., Ил давиться и считает по своему - бак пустеет очень быстро. Это не есть гут.
Расчёты пока такие:
Цитата:
Reductor 0.70 // 0.42
// 0.54167:0.42=1.28969х2295(0.85)=2960:3250=0.91077: 0.70=1.3011
// 0.73х1.17(дефолт 4.10)=0.8541х1.071062(1462:1365(обороты пропеллера))=0.91479:70=1.306849
Первая строка - это применительно и в сравнении с двигателем БМВ-801Д-2.
Дело в том, что аэродинамика самолётов вполне сопоставима. Дора немного длиннее и немного уже в двигательной части. Поэтому и поляры сопоставимы(во всех патчах к тому же). Остаёться подогнать мощность, учитывая разность оборотов мотора, лучший винт у Доры(следствие и лучшая скороподъёмность). Мощности на номинале так же примерно одинаковы.
Чуть позже выложу мод (Доры-9(10)) на пробу.
Вот как сделано в патче 4.10(дефолт).
Код:
[Jumo213A-1]
  [Jumo213A-1]
  HorsePowers 1500
  BoostFactor 1.2
  WEPBoostFactor 1.17
  TowFactor 1.0
  Thrust 0
  cAfterburner 1
  AfterburnerType 6
  RPMMin 500
  RPMNom 3100
  RPMMax 3000
  RPMMaxAllowed 3500
  Reductor 0.73
  PropDiameter 3.15
  PropAnglerType 8
  PropAnglerSpeed 0.11
  PropAnglerMinParam 1800
  PropAnglerMaxParam 3000
  PropAnglerAfterburnerParam 3250
  PropPhiMin 14.0
  PropPhiMax 60.0
  PropAoA0 11.0
  CompressorPMax 1.65
  CompressorAltitude0 1800.0
  CompressorMultiplier0 1.0
  CompressorAltitude1 5000.0
  CompressorMultiplier1 1.0
  CompressorRPMP0 2100.0
  CompressorRPMPMax 3250.0
  CompressorMaxATARPM 1.45
  CompressorSpeedManifold 0.50
  CompressorRPM0 400
  CompressorATA0 0.65
  CompressorRPM1 1200
  CompressorATA1 0.80
  CompressorRPM2 1400
  CompressorATA2 0.85
  CompressorRPM3 1600
  CompressorATA3 0.86
  CompressorRPM4 1800
  CompressorATA4 0.92
  CompressorRPM5 2400
  CompressorATA6 1.15
  CompressorRPM7 2700
  CompressorATA7 1.30
  DisP0x 2800
  DisP0y 05
  DisP1x 0
  DisP1y 48
  cRadiator 1
  TESPEED 0.015
  TWATERMAXRPM 90
  TOILINMAXRPM 70
  TOILOUTMAXRPM 105
  MAXRPMTIME 280
  MINRPMTIME 999
  TWATERMAX 115
  TWATERMIN 60
  TOILMAX 126.5
  TOILMIN 40
Мощность на оборотах 3000 указана не совсем верно - 1800 лош. сил.(1500х1.2). 1800 лош. сил выдавал двигатель на бензине С-3, который был в дефицыте, поэтому большинство моторов работало на В-4.
Миниатюры
Нажмите на изображение для увеличения
Название: jumo213a1.jpg
Просмотров: 573
Размер:	116.0 Кб
ID:	55189  

Последний раз редактировалось Vasya; 05.07.2018 в 23:34.
Vasya вне форума   Ответить с цитированием
Старый 05.07.2018, 23:37   #11
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Радость

Новый мотор предварительно пока такой.
Код:
[Jumo-213AG/B-4/DF/NEW]
  EngineAcceleration 9.0
  FuelPumpPress 1.7
  HorsePowers 2212.0 // 1700.0x1.3011=2212.0      
  BoostFactor 1.00
  WEPBoostFactor 1.1177
  TowFactor 1.0
  Thrust 0
  cAfterburner 0
  AfterburnerType 10
  PropMass 254.0
  RPMMin 500
  RPMNom 3150
  RPMMax 3000       
  RPMMaxAllowed 3700
  Reductor 0.70    // 0.42
// 0.54167:0.42=1.28969х2295(0.85)=2960:3250=0.91077:0.70=1.3011
// 0.73х1.17(дефолт 4.10)=0.8541х1.071062(1462:1365(обороты пропеллера))=0.91479:70=1.306849
  PropDiameter 3.5
  PropAnglerType 8
  PropAnglerSpeed 0.12
  PropAnglerMinParam 1260
  PropAnglerMaxParam 3000
  PropAnglerAfterburnerParam 3250
  PropPhiMin 14.40  // 24.0  
  PropPhiMax 56.40  // 80.0
  PropAoA0 11.0
  Voptimal 260.0
  CompressorType 1
  CompressorSteps 2
  CompressorPAt0 0.40
  CompressorRPMCurvature 4.9
  CompressorPMax 1.68
  CompressorAltitude0 1800.0
  CompressorMultiplier0 0.973
  CompressorBaseMultiplier0 0.988
  CompressorAltitude1 5200.0
  CompressorMultiplier1 0.89
  CompressorBaseMultiplier1 0.9059
  CompressorRPMP0 2000.0
  CompressorRPMPMax 3250.0
  CompressorMaxATARPM 1.52
  CompressorSpeedManifold 0.62
  CompressorRPM0 400
  CompressorATA0 0.65
  CompressorRPM1 1200
  CompressorATA1 0.80
  CompressorRPM2 1600
  CompressorATA2 0.92
  CompressorRPM3 2100
  CompressorATA3 1.15
  CompressorRPM4 2400
  CompressorATA4 1.30
  CompressorRPM5 2700
  CompressorATA5 1.40
  CompressorRPM6 3000
  CompressorATA6 1.52
  DisP0x 3150
  DisP0y 0
  DisP1x 0
  DisP1y 10
  cRadiator 1
  TESPEED 0.015
  TWATERMAXRPM 100
  TOILINMAXRPM 70
  TOILOUTMAXRPM 110
  MAXRPMTIME 600
  MINRPMTIME 999
  TWATERMAX 120
  TWATERMIN 60
  TOILMAX 130
  TOILMIN 40

  FuelConsumptionP0 = 0.164F
  FuelConsumptionP05 = 0.142F
  FuelConsumptionP1 = 0.187F
  FuelConsumptionPMAX = 0.209F
Мотор на обкатке на Доре-9.
Vasya вне форума   Ответить с цитированием
Старый 07.07.2018, 16:28   #12
Константин
Местный
 
Аватар для Константин
 
Регистрация: 13.09.2010
Адрес: Россия, ЛНР
Сообщений: 413
По умолчанию

Висилий, а ты не мог бы подправить ФМ Раннему Спитфайр 1 от САС?
Константин вне форума   Ответить с цитированием
Старый 07.07.2018, 17:08   #13
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Радость

Цитата:
Сообщение от Константин Посмотреть сообщение
Висилий, а ты не мог бы подправить ФМ Раннему Спитфайр 1 от САС?
Давай ссылку.
Vasya вне форума   Ответить с цитированием
Старый 07.07.2018, 17:28   #14
Константин
Местный
 
Аватар для Константин
 
Регистрация: 13.09.2010
Адрес: Россия, ЛНР
Сообщений: 413
По умолчанию

Цитата:
Сообщение от Vasya Посмотреть сообщение
Давай ссылку.
https://www.sas1946.com/main/index.p...c,13798.0.html
вот
Константин вне форума   Ответить с цитированием
Старый 07.07.2018, 20:21   #15
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Смех

Цитата:
Сообщение от Mauser Посмотреть сообщение
Вася, Вася...Вы не исправимы. Какая D-10? Её отродясь не было! D-9, D-11, D-12, D-13 =УСЁ!
И в чом может быть аэродинамика A vs. D сопоставима если в одном:

Rumpf % -A=32,1 D=31,4 %

Flugel % -A=34,0 D=37,1%

Leitwerk % -A=9,1 D=10,6%

Ansaughutzen % -A=0,6 D=4,3%

Kühlung % -A=15,0 D=8,8%

оттуда и подёмная сила (m/s) даже у раних А (18m/s = самый быстрый из них /U7) vs. D-9=26m/s...а о стандарте-А так ваще малчу (16m/s).
Так же и с мощностями, которые не на каких стадиях быть одинаковыми/почти одинаковыми НИКАК НЕ МОГУТ! Хотя бы потому, шО 2а сапсем разных мотора, разной высотности нагнетателя, разных их установочных ступеней по высоте...
да и с кучей мелочей в совокупности онных обсолютно разной!
Далее опять 25ть...смотрик в книгу видем...как всегда...)))))
Это Leistungsblatt /Kurvenblatt Jumo 213AG-1 ЗАПОМИНАЙТЕ это, это то, шО было на Dora, а не 213А-1, как некоторые вумные мурзилки вам раскажут.
А это 2а! сапсем разных мотора!!!! 213А=Bomber-Motor, 213AG-1 Jäger-Motor и стоит там всё до мелочи прально в отношении к 213AG-1 =1700PS=3000U/min=Steig.-Kampfleistung+Mehrleistung durch GM1!
Шо там по вашему не так bitteschön?

К тому же 213А-1 теоретически можно поставить на D-9, нО практически это будет оначать -отказ от всего вооружения! С-т типа гражданской направлености, т-к полное отсутствие даже гнезда на м-ре под синхронизатор!
Так же и Бензин (В4) в них лился всегда, а не С3. И если уж о авиабензине реч, тО В4=87OZ=Army Benzin 92OZ т.е. реальных 92Октан, а не та блаж шО Вы там на просторах WWW пытаетесь искать.
Так же и с МК103 её туда никак не запихнуть, т-к нос удлинять надо! Шо собствено на Та-152 и зделали...
Мндя...Вам бы слушать да запоминать хотябы...ah, ist ja scheißegal...реально устал даже носом всяко тыкать...Вы бы может того...ну какнить оставили колечить немц.-технику то?
Нет ну если не даётся там шО, ну фобия приследует или еще шО...есть же куча другой ЛА...попытайте сщастя там.

Коротко по-изьмам и всем тем, шО их вяжет воедино. Читайте Тора, Шулхан-Аруx и сами всё поймёте откуда корни "жыдонацизьмафашОкоммунизьма" тянутся. И не путайте их с "национальностью" - עִבְרִי К Hakenkreuz опсолютно-положительно, когда он на Будда. За сим - Namaste!
Спасибо за разъяснения!
Как нибуть разберусь.
Стараюсь, однако.
Даже чукчи люди, аж с моими корнями то. Мож человеком стану.
-----------------------------------
П.С.
В игре можно "втулить" в мотор и МК-103.
Людям поиграться.
Не принимайте фантазию (на тему вальса Шопена) близко к сердцу.
Инфаркт - дело очень неприятное.
Носом тыкать лучше собачку в шкоду.
Так шо - звыняйте гер пане Маузер.
Бувайтє здоровлі!

Последний раз редактировалось Vasya; 07.07.2018 в 20:26.
Vasya вне форума   Ответить с цитированием
Старый 10.07.2018, 23:31   #16
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Радость

Цитата:
Сообщение от Константин Посмотреть сообщение
Висилий, а ты не мог бы подправить ФМ Раннему Спитфайр 1 от САС?
Можно - не проблема.
Но когда вскрыл - то там ковыряния надолго.
Фм взял от дефолтных Спитов-5. Но моторы нужно писать заново - в батонах всё от фонаря написано. К тому же есть известные Иловские ограничения на работу ВМГ на оборотах выше 2700. Приходиться выкручиваться.
Опирался на данные из Тундры.
https://forum.warthunder.ru/index.ph...pitfire-mkiia/
И читал тут:
http://www.rafjever.org/spitfire.htm
-----------------------------------------
У Спитов в кабине нет шарика и выставить триммирование невероятно тяжело. Там справа на приборке болтается палочка в разные стороны и настроить управление по ней как по колокольчику на козе.
Архив с фм и классами внизу. Нужно совместить с САСовским
https://www.sas1946.com/main/index.p...c,13798.0.html
- на замену файлов согласиться.
ФМ МК1а такая:
Код:
[Aircraft]
  Type 1
  Crew 1
  Wingspan 11.23
  Length 9.12
  Seaplane 0
  Canard 0
  Jet 0
  JetHiV 0
[Mass]
  Empty 2031.0
  TakeOff 2749.0
  Oil 52.0
  Fuel 289.0
[Controls]
  CAileron 1
  CAileronTrim 0
  CElevator 1
  CElevatorTrim 1
  CRudder 1
  CRudderTrim 1
  CFlap 1
  CFlapPos 2
  CDiveBrake 0
  CInterceptor 0
  CEngine 1
  CVectoredThrust 0
  CUndercarriage 1
  CLockTailwheel 1
  CStabilizer 0
  CArrestorHook 0
  CWingFold 0
  CCockpitDoor 1
  CockpitDoorPeriod 1.0
  CAileronThreshold 300.0
  CRudderThreshold 400.0
  CElevatorThreshold 400.0
  DefaultAileronTrim 0.007
  DefaultElevatorTrim 0.005
  DefaultRudderTrim 0.053
[Squares]
  Wing 22.48
  Aileron 1.74
  Flap 1.46
  Stabilizer 1.90
  Elevator 1.16
  Keel 0.85
  Rudder 0.80
  Wing_In 4.0
  Wing_Mid 3.84
  Wing_Out 3.4
  AirbrakeCxS 0.0
[Arm]
  Aileron 3.8
  Flap 1.3
  Stabilizer 4.3
  Keel 4.4
  Elevator 4.8
  Rudder 5.1
  Wing_In 1.2
  Wing_Mid 2.6
  Wing_Out 4.3
  Wing_V 1.8
  GCenter 0.05
  GCenterZ 0.00
  GC_AOA_Shift 0.50
  GC_Flaps_Shift 0.20
  GC_Gear_Shift -0.05
[Toughness]
  AroneL 50
  AroneR 50
  CF 400
  Engine1 70
  Engine2 70
  Engine3 70
  Engine4 70
  GearL2 150
  GearR2 150
  Keel1 70
  Keel2 70
  Nose 100
  Oil 70
  Rudder1 50
  Rudder2 50
  StabL 70
  StabR 70
  Tail1 100
  Tail2 100
  Turret1B 100
  Turret2B 100
  Turret3B 100
  Turret4B 100
  Turret5B 100
  Turret6B 100
  VatorL 50
  VatorR 50
  WingLIn 100
  WingLMid 90
  WingLOut 50
  WingRIn 100
  WingRMid 90
  WingROut 50
  Flap01 50
  Flap02 50
  Flap03 50
  Flap04 50
[Engine]
  Engine0Family Rolls-Royce-Merlin(MOD_EARLY):SPIT_EARLY
  Engine0SubModel Merlin-III/12lb/DF/Spitfire-Ia
[Gear]
  H 1.614541
  Pitch 11.842
  SinkFactor 1000.0
  SpringsStiffness 0.8
  TailStiffness 0.7
[Params]
  CriticalAOA 17.0
  CriticalCy 01.40
  CxCurvature 00.70
  CxStraightness 00.08
  CriticalAOAFlap 15.00
  CriticalCyFlap 01.70
  SpinTailAlpha 13.00
  SpinCxLoss 0.032
  SpinCyLoss 0.012
  Vyfac 1.00
  Tfac 1.0
  Vmin 142.0
  Vmax 472.0
  VmaxAllowed 780.0
  VmaxH 596.0
  HofVmax 6100.0
  VminFLAPS 129.0
  VmaxFLAPS 250.0
  Vz_climb 17.1
  V_climb 250.0
  T_turn 18.8
  V_turn 235.0
  K_max 12.6
  Cy0_max 0.15
  FlapsMult 0.9
  FlapsAngSh 10.0
  G_class_coeff 20.0
  G_class 9.0
  Range 800.0
  CruiseSpeed 300.0
  SensYaw 0.52
  SensPitch 0.60
  SensRoll 0.32
[Polares]
  lineCyCoeff 0.081
  AOAMinCx_Shift 0.072
  Cy0_0 0.16
  AOACritH_0 19.8
  AOACritL_0 -17.0
  CyCritH_0 1.38
  CyCritL_0 -0.90
  CxMin_0 0.0213
  parabCxCoeff_0 5.3E-4
  Cy0_1 0.63
  AOACritH_1 17.5
  AOACritL_1 -24.5
  CyCritH_1 1.70
  CyCritL_1 -0.8
  CxMin_1 0.0512
  parabCxCoeff_1 6.0E-4
  parabAngle 4.0
  Decline 0.010
  maxDistAng 50.0
  draw_graphs 0
  mc3 -26.464,-13.497,-12.705,-72.354,-66.117,-36.136,-60.497,-17.971
  mc4 59.294,34.677,38.145,665.61,454.62,233.29,375.72,175.28
  mm 0.644,0.714,0.785,0.781,0.785,0.732,0.679,0.613
  mz 0.251,0.254,0.239,0.086,0.09,0.11,0.097,0.09
[SOUND]
  Engine Std
Поляра чуть изменённая дефолтная от патча 4.12.
-----------------------------------------
Кто имеет программу, которая показывает скороподъёмность в реальном времени - прошу померять. Ввод в набор высоты на скорости около 260 км. в час и максимальной мощности.
Двигатель у земли будет греться через минут пять на форсаже.
Промежуточной мощности на 3000 об. как в Тундре нет. Есть номинал 2850 об и форсаж 3000 об. буст 12-16. Такие возможности Ила(не щитая патч 4.13.4), там возможен отдельный буст.
Жалобы принимаються.
Нужно ещё как то донастроить триммирование.
Есть недостаток - Спит висит на малой скорости, хотя в реале он не мог набирать высоту под большим углом атаки.
Всем приятных полётов!
---------------------------------------
П.С.
Внёс небольшие изменения в фм - после тестов будет предложен новый вариант. Хочеться добиться отсутствия "вертолётности" в поведении Спита.
Вложения
Тип файла: rar SAS_Spitfire_Pack_v30.rar (173.8 Кб, 538 просмотров)

Последний раз редактировалось Vasya; 12.07.2018 в 04:02.
Vasya вне форума   Ответить с цитированием
Старый 11.07.2018, 19:52   #17
Константин
Местный
 
Аватар для Константин
 
Регистрация: 13.09.2010
Адрес: Россия, ЛНР
Сообщений: 413
По умолчанию

Цитата:
Сообщение от Vasya Посмотреть сообщение
Можно - не проблема.
Но когда вскрыл - то там ковыряния надолго.
Фм взял от дефолтных Спитов-5. Но моторы нужно писать заново - в батонах всё от фонаря написано. К тому же есть известные Иловские ограничения на работу ВМГ на оборотах выше 2700. Приходиться выкручиваться.
Опирался на данные из Тундры.
https://forum.warthunder.ru/index.ph...pitfire-mkiia/
И читал тут:
http://www.rafjever.org/spitfire.htm
-----------------------------------------
У Спитов в кабине нет шарика и выставить триммирование невероятно тяжело. Там справа на приборке болтается палочка в разные стороны и настроить управление по ней как по колокольчику на козе.
Архив с фм и классами внизу. Нужно совместить с САСовским
https://www.sas1946.com/main/index.p...c,13798.0.html
- на замену файлов согласиться.
ФМ МК1а такая:
Код:
[Aircraft]
  Type 1
  Crew 1
  Wingspan 11.23
  Length 9.12
  Seaplane 0
  Canard 0
  Jet 0
  JetHiV 0
[Mass]
  Empty 2031.0
  TakeOff 2749.0
  Oil 52.0
  Fuel 289.0
[Controls]
  CAileron 1
  CAileronTrim 0
  CElevator 1
  CElevatorTrim 1
  CRudder 1
  CRudderTrim 1
  CFlap 1
  CFlapPos 2
  CDiveBrake 0
  CInterceptor 0
  CEngine 1
  CVectoredThrust 0
  CUndercarriage 1
  CLockTailwheel 1
  CStabilizer 0
  CArrestorHook 0
  CWingFold 0
  CCockpitDoor 1
  CockpitDoorPeriod 1.0
  CAileronThreshold 300.0
  CRudderThreshold 400.0
  CElevatorThreshold 400.0
  DefaultAileronTrim 0.007
  DefaultElevatorTrim 0.005
  DefaultRudderTrim 0.053
[Squares]
  Wing 22.48
  Aileron 1.74
  Flap 1.46
  Stabilizer 1.90
  Elevator 1.16
  Keel 0.85
  Rudder 0.80
  Wing_In 4.0
  Wing_Mid 3.84
  Wing_Out 3.4
  AirbrakeCxS 0.0
[Arm]
  Aileron 3.8
  Flap 1.3
  Stabilizer 4.3
  Keel 4.4
  Elevator 4.8
  Rudder 5.1
  Wing_In 1.2
  Wing_Mid 2.6
  Wing_Out 4.3
  Wing_V 1.8
  GCenter 0.05
  GCenterZ 0.00
  GC_AOA_Shift 0.50
  GC_Flaps_Shift 0.20
  GC_Gear_Shift -0.05
[Toughness]
  AroneL 50
  AroneR 50
  CF 400
  Engine1 70
  Engine2 70
  Engine3 70
  Engine4 70
  GearL2 150
  GearR2 150
  Keel1 70
  Keel2 70
  Nose 100
  Oil 70
  Rudder1 50
  Rudder2 50
  StabL 70
  StabR 70
  Tail1 100
  Tail2 100
  Turret1B 100
  Turret2B 100
  Turret3B 100
  Turret4B 100
  Turret5B 100
  Turret6B 100
  VatorL 50
  VatorR 50
  WingLIn 100
  WingLMid 90
  WingLOut 50
  WingRIn 100
  WingRMid 90
  WingROut 50
  Flap01 50
  Flap02 50
  Flap03 50
  Flap04 50
[Engine]
  Engine0Family Rolls-Royce-Merlin(MOD_EARLY):SPIT_EARLY
  Engine0SubModel Merlin-III/12lb/DF/Spitfire-Ia
[Gear]
  H 1.614541
  Pitch 11.842
  SinkFactor 1000.0
  SpringsStiffness 0.8
  TailStiffness 0.7
[Params]
  CriticalAOA 17.0
  CriticalCy 01.40
  CxCurvature 00.70
  CxStraightness 00.08
  CriticalAOAFlap 15.00
  CriticalCyFlap 01.70
  SpinTailAlpha 13.00
  SpinCxLoss 0.032
  SpinCyLoss 0.012
  Vyfac 1.00
  Tfac 1.0
  Vmin 142.0
  Vmax 472.0
  VmaxAllowed 780.0
  VmaxH 596.0
  HofVmax 6100.0
  VminFLAPS 129.0
  VmaxFLAPS 250.0
  Vz_climb 17.1
  V_climb 250.0
  T_turn 18.8
  V_turn 235.0
  K_max 12.6
  Cy0_max 0.15
  FlapsMult 0.9
  FlapsAngSh 10.0
  G_class_coeff 20.0
  G_class 9.0
  Range 800.0
  CruiseSpeed 300.0
  SensYaw 0.52
  SensPitch 0.60
  SensRoll 0.32
[Polares]
  lineCyCoeff 0.081
  AOAMinCx_Shift 0.072
  Cy0_0 0.16
  AOACritH_0 19.8
  AOACritL_0 -17.0
  CyCritH_0 1.38
  CyCritL_0 -0.90
  CxMin_0 0.0213
  parabCxCoeff_0 5.3E-4
  Cy0_1 0.63
  AOACritH_1 17.5
  AOACritL_1 -24.5
  CyCritH_1 1.70
  CyCritL_1 -0.8
  CxMin_1 0.0512
  parabCxCoeff_1 6.0E-4
  parabAngle 4.0
  Decline 0.010
  maxDistAng 50.0
  draw_graphs 0
  mc3 -26.464,-13.497,-12.705,-72.354,-66.117,-36.136,-60.497,-17.971
  mc4 59.294,34.677,38.145,665.61,454.62,233.29,375.72,175.28
  mm 0.644,0.714,0.785,0.781,0.785,0.732,0.679,0.613
  mz 0.251,0.254,0.239,0.086,0.09,0.11,0.097,0.09
[SOUND]
  Engine Std
Поляра чуть изменённая дефолтная от патча 4.12.
-----------------------------------------
Кто имеет программу, которая показывает скороподъёмность в реальном времени - прошу померять. Ввод в набор высоты на скорости около 260 км. в час и максимальной мощности.
Двигатель у земли будет греться через минут пять на форсаже.
Промежуточной мощности на 3000 об. как в Тундре нет. Есть номинал 2850 об и форсаж 3000 об. буст 12-16. Такие возможности Ила(не щитая патч 4.13.4), там возможен отдельный буст.
Жалобы принимаються.
Нужно ещё как то донастроить триммирование.
Есть недостаток - Спит висит на малой скорости, хотя в реале он не мог набирать высоту под большим углом атаки.
Всем приятных полётов.
Большое тебе спасибо, супер!
А в этом топике нет случайно темы про Мерлин ХХ?

Последний раз редактировалось Константин; 11.07.2018 в 19:58.
Константин вне форума   Ответить с цитированием
Старый 07.07.2018, 17:10   #18
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
По умолчанию

Стих о нетленном господину Маузеру.
Цитата:
(автор Юрій Нестеренко)
Ах, какая была держава!
Ах, какие в ней люди были!
Как торжественно-величаво
Звуки гимна над миром плыли!
Ах, как были открыты лица,
Как наполнены светом взгляды!
Как красива была столица!
Как величественны парады!
Проходя триумфальным маршем,
Безупречно красивым строем,
Молодежь присягала старшим,
Закаленным в боях героям -
Не деляги и прохиндеи
Попадали у нас в кумиры...
Ибо в людях жила - идея!
Жажда быть в авангарде мира!
Что же было такого злого
В том, что мы понимали твердо,
Что "товарищ" - не просто слово,
И звучит это слово гордо?
В том, что были одним народом,
Крепко спаянным общей верой,
Что достоинства - не доходом,
А иной измеряли мерой?
В том, что пошлости на потребу
Не топили в грязи искусство?
Что мальчишек манило небо?
Что у девушек были чувства?
Ах, насколько все нынче гаже,
Хуже, ниже и даже реже:
Пусть мелодия гимна - та же,
Но порыв и идея - где же?
И всего нестерпимей горе
В невозможности примирений
Не с утратою территорий,
Но с потерею поколений!
Как ни пыжатся эти рожи,
Разве место при них надежде?
Ах, как все это непохоже
На страну, что мы знали прежде!
Что была молода, крылата,
Силы множила год за годом,
Где народ уважал солдата
И гордился солдат народом.
Ту, где светлыми были дали,
Ту, где были чисты просторы...
А какое кино снимали
Наши лучшие режиссеры!
А какие звенели песни!
Как от них расправлялись плечи!
Как под них мы шагали вместе
Ранним утром заре навстречу!
Эти песни - о главном в жизни:
О свободе, мечте, полете,
О любви к дорогой отчизне,
О труде, что всегда в почете,
И о девушках, что цветами
Расцветают под солнцем мая,
И о ждущей нас дома маме,
И о с детства знакомом крае,
И о чести, и об отваге,
И о верном, надежном друге...
И алели над нами флаги
С черной свастикой в белом круге.
Vasya вне форума   Ответить с цитированием
Старый 07.07.2018, 17:23   #19
Leopard
Местный
 
Аватар для Leopard
 
Регистрация: 29.11.2013
Сообщений: 1,049
По умолчанию

Василий, просьба, сделайте фм для И-180 с мотором М-89НВ (вес мотора 760 кг, мощность 1475 л/с, непосредственный впрыск) для вашей доработки Димоновской стовосьмидесятки
Leopard вне форума   Ответить с цитированием
Старый 07.07.2018, 20:23   #20
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,322
Радость

Цитата:
Сообщение от Leopard Посмотреть сообщение
Василий, просьба, сделайте фм для И-180 с мотором М-89НВ (вес мотора 760 кг, мощность 1475 л/с, непосредственный впрыск) для вашей доработки Димоновской стовосьмидесятки
Хорошо.
Всё по порядку.
Сначала Бумеранг доведём.
Потом И-180 с поправленнім планером.
Vasya вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 3 (пользователей: 0 , гостей: 3)
 

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

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

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


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


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