Цитата:
Сообщение от YurBorR
Вась, хочешь верь, хочешь не верь, но когда писал этот вопрос думал, что именно ты и откликнешься. А эти дела пробовал: и касе 6 резал и писал новый виод, но видно не так резал и писал... Поэтому Василь, вся надежда на тебя, буду ждать, когда спадёт у вас жара и пиво выйдет...
|
Только сегодня вечером добрался к этим еффектам.
Буду с ходу расстраивать.
Соображения пока такие:
насколько я понял нужно изменить еффекты аэродромным бочкам и другим ёмкостям с топливом.,
но они заразы все расположены в разделе Objects\3do\Buildings\Airdrome.,
записаны же они в классе com\maddox\il2\objects\buildings
House.,
вот:
Код:
if(s4.equalsIgnoreCase("FuelSmall"))
{
properties.MAT_TYPE = 2;
properties.EFF_BODY_MATERIAL = 2;
properties.EXPL_TYPE = 5;
properties.MIN_TNT = 0.2F * (properties.PANZER / 0.002F);
properties.MAX_TNT = properties.MIN_TNT * 1.7F;
properties.PROBAB_DEATH_WHEN_EXPLOSION = 0.01F;
} else
if(s4.equalsIgnoreCase("FuelBig"))
{
properties.MAT_TYPE = 2;
properties.EFF_BODY_MATERIAL = 2;
properties.EXPL_TYPE = 6;
properties.MIN_TNT = 0.8F * (properties.PANZER / 0.008F);
properties.MAX_TNT = properties.MIN_TNT * 1.7F;
properties.PROBAB_DEATH_WHEN_EXPLOSION = 0.01F;
} else
поэтому и еффекты прописаны общие для домиков:
Код:
case 6: // '\006'
s = "Fuel";
boolean flag1 = true;
byte0 = 5;
break;
default:
System.out.println("WARNING: HouseExplode(): unknown type");
return;
}
вагоны же и машинки с топливом находяться все в классе
com\maddox\il2\objects\vehicles\stationary
Stationary .,
вот например:
Код:
public static class OpelBlitz6700A_fuel extends StationaryGeneric
implements TgtVehicle
{
public OpelBlitz6700A_fuel()
{
}
}
public static class Wagon1 extends StationaryGeneric
implements TgtTrain, SWagon
{
public Wagon1()
{
}
}
поэтому им и можно написать отдельные еффекты в классе Explosions
типа так:
Код:
public static void ExplodeVagonArmor(Point3d point3d, Point3d point3d1, float f)
{
if(!Config.isUSE_RENDER())
return;
Point3d point3d2 = new Point3d();
for(int i = 0; i < 3; i++)
{
point3d2.interpolate(point3d, point3d1, Math.random());
AirFlak(point3d2, 0);
}
LinearExplode(point3d, point3d1, f, 0.5F, "effects/Explodes/Objects/VagonArmor/SmokeBoiling.eff", "effects/Explodes/Objects/VagonArmor/SmokeBoiling2.eff");
SfxExplosion.wagon(point3d, point3d1, f, 6);
}
public static void ExplodeVagonFuel(Point3d point3d, Point3d point3d1, float f)
{
if(!Config.isUSE_RENDER())
{
return;
} else
{
LinearExplode(point3d, point3d1, f, 0.75F, "effects/Explodes/Objects/VagonFuel/SmokeBoilingFire.eff", "effects/Explodes/Objects/VagonFuel/SmokeBoilingFire2.eff");
SfxExplosion.wagon(point3d, point3d1, f, 5);
return;
}
}
то есть: сами объекты с топливом для начала нужно хотя бы поместить в раздел Objects\3do\Cars, потом переделать их 3До по образцу:
Код:
public static class StationaryProperties
{
public String meshName;
public String meshName1;
public String meshSummer;
public String meshDesert;
public String meshWinter;
public String meshSummer1;
public String meshDesert1;
public String meshWinter1;
public TableFunction2 fnShotPanzer;
public TableFunction2 fnExplodePanzer;
public float PANZER_BODY_FRONT;
public float PANZER_BODY_BACK;
public float PANZER_BODY_SIDE;
public float PANZER_BODY_TOP;
public float PANZER_HEAD;
public float PANZER_HEAD_TOP;
public float PANZER_TNT_TYPE;
public int HITBY_MASK;
public String explodeName;
public StationaryProperties()
{
meshName = null;
meshName1 = null;
meshSummer = null;
meshDesert = null;
meshWinter = null;
meshSummer1 = null;
meshDesert1 = null;
meshWinter1 = null;
fnShotPanzer = null;
fnExplodePanzer = null;
PANZER_BODY_FRONT = 0.001F;
PANZER_BODY_BACK = 0.001F;
PANZER_BODY_SIDE = 0.001F;
PANZER_BODY_TOP = 0.001F;
PANZER_HEAD = 0.001F;
PANZER_HEAD_TOP = 0.001F;
PANZER_TNT_TYPE = 1.0F;
HITBY_MASK = -2;
explodeName = null;
}
}
потом записать каждый объект(бочки, вагончики, дижечкы) в класс Stationary.,
потом спокойно дописываеться код типа:
Код:
public static void ExplodeBarrelBlockFuel(Point3d point3d)
{
if(!Config.isUSE_RENDER())
return;
Loc loc = new Loc(point3d);
Eff3DActor.New(loc, 1.0F, "3DO/Effects/Fireworks/Tank_Burn.eff", -1F);
Eff3DActor.New(loc, 1.0F, "3DO/Effects/Fireworks/Tank_SmokeBoiling.eff", -1F);
Eff3DActor.New(loc, 1.0F, "3DO/Effects/Fireworks/Tank_Sparks.eff", -1F);
Eff3DActor.New(loc, 1.0F, "3DO/Effects/Fireworks/Tank_SparksP.eff", -1F);
if(point3d.z - World.cur().land().HQ(point3d.x, point3d.y) > 3D)
{
SfxExplosion.crashAir(point3d, 1);
} else
{
World.cur();
if(World.land().isWater(point3d.x, point3d.y))
SfxExplosion.crashAir(point3d, 2);
else
SfxExplosion.crashAir(point3d, 0);
}
}
То есть - это так по нормальному можно сделать без заднеприводного сношения мозга.
Я - конечно попробую ввернуть код горения топлива, но может так быть что все домики будут гореть как нафтови гуральни. Это если закомпилиться.
Буду думать дальше.
П.С. Как Ил отличает вагоны с динамитом и топливом пока не знаю. Я еффекты ковыряю ооочень редко.
В общем - нужно писать телегу в ДТ что бы топливные цыстерны выделили из домиков в отдельный вид объектов.