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

Цитата:
Сообщение от Dimas1999 Посмотреть сообщение
Здесь коллизии очень даже неплохо сделаны. Надо пробежаться по hier.him и сравнить с классом.
Посмотри пожалуйста!
Ниже в архиве класс и джава, так же архив с хиер-химом.
Целый вечер бьюсь - толку мало.
Отбиваюсь на бомбёре от этих венгров, но мотор не дамажиться,
хотя на капоте куча попаданий.
А вот тяги видать перебиваются - пилоты прыгают, и даже помирают.
Вписал точно и маслобак и другие коллизии мотора - не получаеться.
Твоя посильная помощь - хорошее дело., я ведь тоже учусь понимать код.
Код:
if(s.startsWith("xxeng"))
            {
                if(s.endsWith("karter"))
                {
                    if(getEnergyPastArmor(World.Rnd().nextFloat(0.0F, 2.8F), shot) > 0.0F)
                    {
                        if(World.Rnd().nextFloat() < shot.power / 170000F)
                        {
                            FM.AS.setEngineStuck(shot.initiator, 0);
                            Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Engine Stucks..");
			}
                        if(World.Rnd().nextFloat() < shot.power / 56000F)
                        {
                            FM.AS.hitEngine(shot.initiator, 0, 2);
                            Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Engine Damaged..");
			}
                        if(World.Rnd().nextFloat() < shot.power / 48000F)
                        {
                            FM.EI.engines[0].setCyliderKnockOut(shot.initiator, 1);
                            Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Cylinder Feed Out, " + FM.EI.engines[0].getCylindersOperable() + "/" + FM.EI.engines[0].getCylinders() + " Left..");
			}
                        if(World.Rnd().nextFloat() < 0.08F)
                        {
                            FM.EI.engines[0].setEngineStuck(shot.initiator);
                            Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Ball Bearing Jammed - Engine Stuck..");
			}
                        FM.EI.engines[0].setReadyness(shot.initiator, FM.EI.engines[0].getReadyness() - World.Rnd().nextFloat(0.0F, shot.power / 48000F));
                        Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Readyness Reduced to " + FM.EI.engines[0].getReadyness() + "..");
		    }
                    if(World.Rnd().nextFloat() < 0.01F)
                    {
                        FM.EI.engines[0].setEngineStops(shot.initiator);
                        Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Engine Stalled..");
		    }
                    if(World.Rnd().nextFloat() < 0.08F)         
                    {
                        FM.AS.hitEngine(shot.initiator, 0, 10);
                        Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Fuel Feed Hit - Engine Flamed..");			
                    } 
                    getEnergyPastArmor(6F, shot);
                } 
                if(s.endsWith("cyl"))
                {
                    if(getEnergyPastArmor(2.5F, shot) > 0.0F && World.Rnd().nextFloat() < FM.EI.engines[0].getCylindersRatio() * 1.75F)
                    {
                        FM.EI.engines[0].setCyliderKnockOut(shot.initiator, World.Rnd().nextInt(1, (int)(shot.power / 4800F)));
                        debugprintln(this, "*** Engine Module: Cylinders Hit, " + FM.EI.engines[0].getCylindersOperable() + "/" + FM.EI.engines[0].getCylinders() + " Left..");
                        if(FM.AS.astateEngineStates[0] < 1)
                            FM.AS.hitEngine(shot.initiator, 0, 1);
                        if(World.Rnd().nextFloat() < shot.power / 48000F)
                        {
                            FM.AS.hitEngine(shot.initiator, 0, 3);
                            debugprintln(this, "*** Engine Module: Cylinders Hit, Engine Fires..");
                        }
                        if(World.Rnd().nextFloat() < 0.01F)
                        {
                            FM.AS.setEngineStuck(shot.initiator, 0);
                            debugprintln(this, "*** Engine Module: Bullet Jams Piston Head..");
                        }
                        getEnergyPastArmor(6F, shot);
                    }
                }
                if(s.startsWith("xxoiltank1"))
                {
                    if(getEnergyPastArmor(0.25F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F)
                    {
                        FM.AS.hitOil(shot.initiator, 0);
                        getEnergyPastArmor(0.25F, shot);
                        debuggunnery("Engine Module: Oil Radiator  Pierced..");
                    }
                    return;
                } 

            } 
            if(s.startsWith("xxtank"))
            {
                int i = s.charAt(6) - 49;
                if(i > 3)
                    return;
                if(getEnergyPastArmor(1.25F, shot) > 0.0F && World.Rnd().nextFloat() < 0.5F)
                {
                    if(FM.AS.astateTankStates[i] == 0)
                    {
                        debuggunnery("Fuel Tank (" + i + "): Pierced..");
                        FM.AS.hitTank(shot.initiator, i, 1);
                        FM.AS.doSetTankState(shot.initiator, i, 1);
                    }else
                    if(FM.AS.astateTankStates[i] == 1)
                    {
                        debuggunnery("Fuel Tank (" + i + "): Pierced..");
                        FM.AS.hitTank(shot.initiator, i, 2);
                        FM.AS.doSetTankState(shot.initiator, i, 2);  
                    }
                    if(World.Rnd().nextFloat() < 0.01F || shot.powerType == 3 && World.Rnd().nextFloat() < 0.8F)
                    {
                        debuggunnery("Fuel Tank (" + i + "): Hit..");
                        FM.AS.hitTank(shot.initiator, i, 4);                        
                        FM.AS.doSetTankState(shot.initiator, i, 3);
                    }  // else
                  //  {
                  //      FM.AS.hitTank(shot.initiator, i, World.Rnd().nextInt(0, (int)(shot.power / 56000F)));
                  //  }
                }
                return;
            }
Вложения
Тип файла: rar WM23_xyz.class.rar (13.7 Кб, 4 просмотров)
Тип файла: rar hier.rar (2.4 Кб, 5 просмотров)

Последний раз редактировалось Vasya; Вчера в 23:42.
Vasya вне форума   Ответить с цитированием