|
|
|
|
|
#1 |
|
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,366
|
В планере Д-520 коллизии мотора скорее всего расположены не на месте мотора.
Код:
[Engine1_D0] Mesh Engine1_D0 Parent CF_D0 Separable Attaching 1 1.19209e-007 0 -1.19209e-007 1 0 0 0 1 2.85204 3.8147e-007 -0.22491 CollisionObject xengine1 CollisionObject .xxeng1case1 CollisionObject .xxeng1case2 CollisionObject .xxeng1cyls1 CollisionObject .xxeng1cyls2 CollisionObject .xxeng1eqpt1 CollisionObject .xxmgun01 Перенастраивал раздел хит-бон для более "точных" повреждений. Код:
if(s.startsWith("xxeng1"))
{
if(s.endsWith("case1") || s.endsWith("case2") || s.endsWith("eqpt1") && getEnergyPastArmor(0.1F, shot) > 0.0F)
{
if(World.Rnd().nextFloat() < shot.power / 125000F)
{
((FlightModelMain) (super.FM)).AS.setEngineStuck(shot.initiator, 0);
Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Engine Stucks..");
}
if(World.Rnd().nextFloat() < shot.power / 125000F)
{
((FlightModelMain) (super.FM)).AS.hitEngine(shot.initiator, 0, 2);
Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Engine Damaged..");
}
if(World.Rnd().nextFloat() < shot.power / 28000F)
{
((FlightModelMain) (super.FM)).EI.engines[0].setMagnetoKnockOut(shot.initiator, World.Rnd().nextInt(0, 1));
Aircraft.debugprintln(this, "*** Engine Magneto Out..");
}
if(World.Rnd().nextFloat() < shot.power / 28000F)
{
((FlightModelMain) (super.FM)).EI.engines[0].setKillCompressor(shot.initiator);
Aircraft.debugprintln(this, "*** Engine Compressor Feed Out..");
}
if(World.Rnd().nextFloat() < shot.power / 28000F)
{
debuggunnery("Engine Module: Crank Case Hit - Engine Stalled..");
FM.EI.engines[0].setEngineStops(shot.initiator);
}
if(World.Rnd().nextFloat() < shot.power / 48000F)
{
((FlightModelMain) (super.FM)).EI.engines[0].setCyliderKnockOut(shot.initiator, 1);
Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Cylinder Feed Out, " + ((FlightModelMain) (super.FM)).EI.engines[0].getCylindersOperable() + "/" + ((FlightModelMain) (super.FM)).EI.engines[0].getCylinders() + " Left..");
}
((FlightModelMain) (super.FM)).EI.engines[0].setReadyness(shot.initiator, ((FlightModelMain) (super.FM)).EI.engines[0].getReadyness() - World.Rnd().nextFloat(0.0F, shot.power / 48000F));
Aircraft.debugprintln(this, "*** Engine Crank Case Hit - Readyness Reduced to " + ((FlightModelMain) (super.FM)).EI.engines[0].getReadyness() + "..");
if(World.Rnd().nextFloat() < shot.power / 48000F)
{
debuggunnery("Engine Module: Crank Case Hit - Fuel Feed Hit - Engine Flamed..");
FM.AS.hitEngine(shot.initiator, 0, 10);
}
}
if((s.endsWith("cyl1") || s.endsWith("cyl2")) && getEnergyPastArmor(World.Rnd().nextFloat(0.5F, 2.542F), 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 / 48000F)));
Aircraft.debugprintln(this, "*** Engine Cylinders Hit, " + FM.EI.engines[0].getCylindersOperable() + "/" + FM.EI.engines[0].getCylinders() + " Left..");
if(((FlightModelMain) (super.FM)).AS.astateEngineStates[0] < 1)
((FlightModelMain) (super.FM)).AS.hitEngine(shot.initiator, 0, 1);
if(World.Rnd().nextFloat() < shot.power / 34000F)
{
FM.EI.engines[0].setEngineStuck(shot.initiator);
Aircraft.debugprintln(this, "*** Engine Cylinder Case Broken - Engine Stuck..");
}
if(World.Rnd().nextFloat() < shot.power / 34000F)
{
FM.AS.hitEngine(shot.initiator, 0, 3);
Aircraft.debugprintln(this, "*** Engine Cylinders Hit - Engine Fires..");
}
getEnergyPastArmor(World.Rnd().nextFloat(3F, 49.8F), shot);
}
if(s.endsWith("radtr"))
{
if(((FlightModelMain) (super.FM)).AS.astateEngineStates[0] == 0)
{
debuggunnery("Engine Module: Water Radiator Pierced..");
((FlightModelMain) (super.FM)).AS.hitEngine(shot.initiator, 0, 1);
((FlightModelMain) (super.FM)).AS.doSetEngineState(shot.initiator, 0, 1);
} else
if(((FlightModelMain) (super.FM)).AS.astateEngineStates[0] == 1)
{
debuggunnery("Engine Module: Water Radiator Pierced..");
((FlightModelMain) (super.FM)).AS.hitEngine(shot.initiator, 0, 1);
((FlightModelMain) (super.FM)).AS.doSetEngineState(shot.initiator, 0, 2);
}
return;
}
if(s.startsWith("xxeng1oil"))
{
if(getEnergyPastArmor(0.25F, shot) > 0.0F && World.Rnd().nextFloat() < 0.125F)
{
((FlightModelMain) (super.FM)).AS.hitOil(shot.initiator, 0);
((FlightModelMain) (super.FM)).AS.setCockpitState(shot.initiator, ((FlightModelMain) (super.FM)).AS.astateCockpitState | 0x80);
getEnergyPastArmor(0.22F, shot);
debuggunnery("Engine Module: Oil Radiator Pierced..");
}
return;
}
if(s.startsWith("xxtank1"))
{
int i = s.charAt(6) - 49;
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, 3);
FM.AS.doSetTankState(shot.initiator, i, 3);
}
if(World.Rnd().nextFloat() < 0.08F || shot.powerType == 3 && World.Rnd().nextFloat() < 0.7F)
{
debuggunnery("Fuel Tank (" + i + "): Hit..");
FM.AS.hitTank(shot.initiator, i, 4);
FM.AS.doSetTankState(shot.initiator, i, 5);
}
}
return;
}
Использую планер, который вытянули из сфс-ки патча 4.15. Пролетал над Б-17, который обстрелял самолёт снизу. После обстрела загорелся водо-радиатор внизу фюзеляжа и выскочила надпись - двигатель горит. Прошу обратить внимание !!! на расположение коллизий в планере Д-520. И по возможности правильно их расположить в планере, соттветствующе их назначению.
Последний раз редактировалось Vasya; 17.08.2023 в 12:34. Причина: Исправление код повреждений для Хит-бон |
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|