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

И protected void hitBone(String s, Shot shot, Point3d point3d)
должен быть хоть маленький., в нём обязательно должен быть вот такой кусочек:
Код:
if(s.startsWith("xxcontrols"))
            {
                int i = s.charAt(10) - 48;
                if(s.length() == 12)
                    i = 10 + (s.charAt(11) - 48);
                switch(i)
                {
                default:
                    break;

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

                case 2: // '\002'
                    if(getEnergyPastArmor(0.1F, shot) <= 0.0F)
                        break;
                    debugprintln(this, "*** Throttle Quadrant: Hit, Engine Controls Disabled..");
                    FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 8);
                    if(World.Rnd().nextFloat() < 0.5F)
                        FM.AS.setEngineSpecificDamage(shot.initiator, 0, 1);
                    else
                        FM.AS.setEngineSpecificDamage(shot.initiator, 1, 1);
                    break;

                case 3: // '\003'
                    if(getEnergyPastArmor(1.0F, shot) > 0.0F)
                        FM.AS.setEngineSpecificDamage(shot.initiator, 0, 1);
                    break;

                case 7: // '\007'
                    if(getEnergyPastArmor(1.0F, shot) > 0.0F)
                        FM.AS.setEngineSpecificDamage(shot.initiator, 0, 1);
                    break;

                case 4: // '\004'
                case 6: // '\006'
                case 8: // '\b'
                case 10: // '\n'
                    if(getEnergyPastArmor(2.1F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F)
                    {
                        debugprintln(this, "*** Aileron Controls: Disabled..");
                        FM.AS.setControlsDamage(shot.initiator, 0);
                    }
                    break;

                case 5: // '\005'
                case 9: // '\t'
                    if(getEnergyPastArmor(4.1F, shot) > 0.0F)
                    {
                        debugprintln(this, "*** Aileron Controls Crank: Disabled..");
                        FM.AS.setControlsDamage(shot.initiator, 0);
                    }
                    break;

                case 11: // '\013'
                case 12: // '\f'
                    if(getEnergyPastArmor(0.3F, shot) > 0.0F)
                    {
                        debugprintln(this, "*** Rudder Controls: Disabled / Strings Broken..");
                        FM.AS.setControlsDamage(shot.initiator, 2);
                    }
                    break;
                }
                return;
            }
            if(s.startsWith("xxEng"))
            {
                int j = s.charAt(5) - 49;
                if(point3d.x > 0.0D)
                {
                    if(getEnergyPastArmor(0.1F, shot) > 0.0F)
                    {
                        debugprintln(this, "*** Engine Module(s): Supercharger Disabled..");
                        FM.AS.setEngineSpecificDamage(shot.initiator, j, 0);
                    }
                } else
                {
                    if(getEnergyPastArmor(3.2F, shot) > 0.0F)
                        FM.EI.engines[j].setCyliderKnockOut(shot.initiator, 1);
                    if(World.Rnd().nextFloat(0.009F, 0.1357F) < shot.mass && FM.EI.engines[j].getStage() == 6)
                        FM.AS.hitEngine(shot.initiator, j, 1);
                    getEnergyPastArmor(14.296F, shot);
                }
                return;
            }
.....................
if(s.startsWith("xxTank"))
            {
                int k = s.charAt(6) - 49;
                if(getEnergyPastArmor(0.1F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F && shot.powerType == 3)
                    FM.AS.hitTank(shot.initiator, k, 2);
                return;
            } else
            {
                return;
            }
        }
ещё:
Код:
public void update(float f)
    {
        if(FM.AS.isMaster())
        {
            for(int i = 0; i < 2; i++)
            {
                if(curctl[i] == -1F)
                {
                    curctl[i] = oldctl[i] = FM.EI.engines[i].getControlThrottle();
                    continue;
                }
                curctl[i] = FM.EI.engines[i].getControlThrottle();
                if((curctl[i] - oldctl[i]) / f > 3F && FM.EI.engines[i].getRPM() < 2400F && FM.EI.engines[i].getStage() == 6 && World.Rnd().nextFloat() < 0.25F)
                    FM.AS.hitEngine(this, i, 100);
                if((curctl[i] - oldctl[i]) / f < -3F && FM.EI.engines[i].getRPM() < 2400F && FM.EI.engines[i].getStage() == 6)
                {
                    if(World.Rnd().nextFloat() < 0.25F && (FM instanceof RealFlightModel) && ((RealFlightModel)FM).isRealMode())
                        FM.EI.engines[i].setEngineStops(this);
                    if(World.Rnd().nextFloat() < 0.75F && (FM instanceof RealFlightModel) && ((RealFlightModel)FM).isRealMode())
                        FM.EI.engines[i].setKillCompressor(this);
                }
                oldctl[i] = curctl[i];
            }

            if(Config.isUSE_RENDER())
            {
                if(FM.EI.engines[0].getPowerOutput() > 0.8F && FM.EI.engines[0].getStage() == 6)
                {
                    if(FM.EI.engines[0].getPowerOutput() > 0.95F)
                        FM.AS.setSootState(this, 0, 3);
                    else
                        FM.AS.setSootState(this, 0, 2);
                } else
                {
                    FM.AS.setSootState(this, 0, 0);
                }
                if(FM.EI.engines[1].getPowerOutput() > 0.8F && FM.EI.engines[1].getStage() == 6)
                {
                    if(FM.EI.engines[1].getPowerOutput() > 0.95F)
                        FM.AS.setSootState(this, 1, 3);
                    else
                        FM.AS.setSootState(this, 1, 2);
                } else
                {
                    FM.AS.setSootState(this, 1, 0);
                }
            }
        }
        super.update(f);
    }
И вот это не помешало бы:
Код:
public void rareAction(float f, boolean flag)
    {
        super.rareAction(f, flag);
        if(flag && World.Rnd().nextFloat() < 0.04F)
        {
            if(FM.AS.astateEngineStates[0] > 3 && World.Rnd().nextFloat() < 0.12F)
            {
                FM.AS.explodeEngine(this, 0);
                msgCollision(this, "WingLIn_D0", "WingLIn_D0");
                if(World.Rnd().nextBoolean())
                    FM.AS.hitTank(this, 0, World.Rnd().nextInt(1, 8));
                else
                    FM.AS.hitTank(this, 1, World.Rnd().nextInt(1, 8));
            }
            if(FM.AS.astateEngineStates[1] > 3 && World.Rnd().nextFloat() < 0.12F)
            {
                FM.AS.explodeEngine(this, 1);
                msgCollision(this, "WingRIn_D0", "WingRIn_D0");
                if(World.Rnd().nextBoolean())
                    FM.AS.hitTank(this, 0, World.Rnd().nextInt(1, 8));
                else
                    FM.AS.hitTank(this, 1, World.Rnd().nextInt(1, 8));
            }
        }
        if(FM.getAltitude() < 3000F)
            hierMesh().chunkVisible("HMask1_D0", false);
        else
            hierMesh().chunkVisible("HMask1_D0", hierMesh().isChunkVisible("Head1_D0"));
    }
Vasya вне форума   Ответить с цитированием