Тема: Вопросы
Показать сообщение отдельно
Старый 19.07.2016, 21:13   #6489
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,085
Смущение

Цитата:
Сообщение от 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);
        }
    }
То есть - это так по нормальному можно сделать без заднеприводного сношения мозга.
Я - конечно попробую ввернуть код горения топлива, но может так быть что все домики будут гореть как нафтови гуральни. Это если закомпилиться.
Буду думать дальше.
П.С. Как Ил отличает вагоны с динамитом и топливом пока не знаю. Я еффекты ковыряю ооочень редко.
В общем - нужно писать телегу в ДТ что бы топливные цыстерны выделили из домиков в отдельный вид объектов.

Последний раз редактировалось Vasya; 19.07.2016 в 21:46.
Vasya вне форума   Ответить с цитированием