Цитата:
Сообщение от 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;
}