AviaSkins.Forums

AviaSkins.Forums (http://forum.aviaskins.com/index.php)
-   Баллада об оружии (http://forum.aviaskins.com/forumdisplay.php?f=32)
-   -   weaponsRegister (http://forum.aviaskins.com/showthread.php?t=4403)

LeaderAI 04.05.2016 21:00

weaponsRegister
 
Куда прописывается оригинальное вооружение и почему не работает прописка как на стандартных самолетах на модовых вооружение?
Aircraft.weaponTriggersRegister(var_class, new int[] { 1, 1, 3, 3, 9, 9 }); Это кнопки для оружия они и в модовых самолетах так же.
Aircraft.weaponHooksRegister(var_class,
new String[] { "_CANNON01", "_CANNON02","_ExternalBomb01", "_ExternalBomb02", "_ExternalBomb01", "_ExternalBomb02" }); Это хуки из моделей. Они так же прописаны.
А дальше самое интересное:
Aircraft.weaponsRegister(var_class, "default", new String[] { "MGunShVAKs 200", "MGunShVAKs 200", null, null, null, null }); В стандартных самолетах только это прописано. Даже если я эти строки совсем удалю из класса все вооружение остается. Вопрос где оно еще забито и как сделать для своего самолета так же?
try {
ArrayList arraylist = new ArrayList();
Property.set(var_class, "weaponsList", arraylist);
HashMapInt hashmapint = new HashMapInt();
Property.set(var_class, "weaponsMap", hashmapint);
int i = 8;
String string = "default";
Aircraft._WeaponSlot[] var__WeaponSlots
= new Aircraft._WeaponSlot[i];
var__WeaponSlots[0]
= new Aircraft._WeaponSlot(2, "CannonRocketSimpleRS132", 16);
var__WeaponSlots[3] = null;
for (int i_0_ = 8; i_0_ < i; i_0_++)
var__WeaponSlots[i_0_] = null;
arraylist.add(string);
hashmapint.put(Finger.Int(string), var__WeaponSlots);
string = "None";
var__WeaponSlots = new Aircraft._WeaponSlot[i];
for (int i_1_ = 0; i_1_ < i; i_1_++)
var__WeaponSlots[i_1_] = null;
arraylist.add(string);
hashmapint.put(Finger.Int(string), var__WeaponSlots);
} catch (Exception exception) {
/* empty */
} чтоб не писать вот такую кучу кода.

LeaderAI 05.05.2016 22:16

Aircraft.weaponTriggersRegister(var_class, new int[] { 1, 1});
Aircraft.weaponHooksRegister(var_class, new String[] { "_MGUN01", "_MGUN02"});
Aircraft.weaponsRegisterMod(var_class, "default", (new String[] { "MGunMG17si 1000", "MGunMG17si 1000" }));
Aircraft.weaponsRegisterMod(var_class, "none", new String[] { null, null });
Вот так то. Теперь читает 2 варианта.
Без кучи кода почти как в оригинале только имя с препиской Mod

Vasya 05.05.2016 23:20

А зачем всьо так делать?
Есть же проверенный способ записи вооружния.
Я всегда расписую каждую строку.
Типа так:
Код:

static java.lang.Class _mthclass$(java.lang.String s)
    {
        java.lang.Class class1;
        try
        {
            class1 = java.lang.Class.forName(s);
        }
        catch(java.lang.ClassNotFoundException classnotfoundexception)
        {
            throw new NoClassDefFoundError(classnotfoundexception.getMessage());
        }
        return class1;
    }

    static float _GearDst = 52.096F;
    static float _BaseDst = 66.26443F;

    static
    {
        Class class1 = com.maddox.il2.objects.air.N1K2JA_KUSHU_SR.class;
        new NetAircraft.SPAWN(class1);
        Property.set(class1, "iconFar_shortClassName", "N1K2JA-KUSHU-SR");
        Property.set(class1, "meshName", "3DO/Plane/N1K2-Ja(ja)_NEW/hier_KUSHU.him");
        Property.set(class1, "PaintScheme", new PaintSchemeFMPar01());
        Property.set(class1, "meshName_ja", "3DO/Plane/N1K2-Ja(ja)_NEW/hier_KUSHU.him");
        Property.set(class1, "PaintScheme_ja", new PaintSchemeFCSPar05());
        Property.set(class1, "yearService", 1944F);
        Property.set(class1, "yearExpired", 1945.5F);
        Property.set(class1, "FlightModel", "FlightModels/N1K2-Ja-KUSHU-Schnellere-Reducer.fmd:N1K2JA_KUSHU");
        Property.set(class1, "cockpitClass", new Class[] {
            com.maddox.il2.objects.air.CockpitN1K2JA_KUSHU.class
        });
        Property.set(class1, "LOSElevation", 1.1716F);
        Aircraft.weaponTriggersRegister(class1, new int[] {
            1, 0, 0, 1, 3, 3, 3, 3, 9, 9,
            9, 3, 9, 9, 9, 3
        });
        Aircraft.weaponHooksRegister(class1, new String[] {
            "_CANNON01", "_CANNON02", "_CANNON03", "_CANNON04", "_ExternalBomb01", "_ExternalBomb02", "_ExternalBomb03", "_ExternalBomb04", "_ExternalDev01", "_ExternalDev02",
            "_ExternalDev03", "_ExternalBomb05", "_ExternalDev04", "_ExternalDev05", "_ExternalDev06", "_ExternalBomb06"
        });
        try
        {
            ArrayList arraylist = new ArrayList();
            Property.set(class1, "weaponsList", arraylist);
            HashMapInt hashmapint = new HashMapInt();
            Property.set(class1, "weaponsMap", hashmapint);
            byte byte0 = 16;
            String s = "default";
            Aircraft._WeaponSlot a_lweaponslot[] = new Aircraft._WeaponSlot[byte0];
            a_lweaponslot[0] = new Aircraft._WeaponSlot(1, "MGunType99model_2k", 220);
            a_lweaponslot[1] = new Aircraft._WeaponSlot(0, "MGunType99model_2k", 220);
            a_lweaponslot[2] = new Aircraft._WeaponSlot(0, "MGunType99model_2k", 220);
            a_lweaponslot[3] = new Aircraft._WeaponSlot(1, "MGunType99model_2k", 220);
            a_lweaponslot[4] = null;
            a_lweaponslot[5] = null;
            a_lweaponslot[6] = null;
            a_lweaponslot[7] = null;
            a_lweaponslot[8] = null;
            a_lweaponslot[9] = null;
            a_lweaponslot[10] = null;
            a_lweaponslot[11] = null;
            a_lweaponslot[12] = null;
            a_lweaponslot[13] = null;
            a_lweaponslot[14] = null;
            a_lweaponslot[15] = null;
            for(int i = 16; i < byte0; i++)
                a_lweaponslot[i] = null;

            arraylist.add(s);
            hashmapint.put(Finger.Int(s), a_lweaponslot);
            s = "HO12/CANNON";
            a_lweaponslot = new Aircraft._WeaponSlot[byte0];
            a_lweaponslot[0] = new Aircraft._WeaponSlot(1, "MGunHO12LS", 220);
            a_lweaponslot[1] = new Aircraft._WeaponSlot(0, "MGunHO12LS", 220);
            a_lweaponslot[2] = new Aircraft._WeaponSlot(0, "MGunHO12LS", 220);
            a_lweaponslot[3] = new Aircraft._WeaponSlot(1, "MGunHO12LS", 220);
            a_lweaponslot[4] = null;
            a_lweaponslot[5] = null;
            a_lweaponslot[6] = null;
            a_lweaponslot[7] = null;
            a_lweaponslot[8] = null;
            a_lweaponslot[9] = null;
            a_lweaponslot[10] = null;
            a_lweaponslot[11] = null;
            a_lweaponslot[12] = null;
            a_lweaponslot[13] = null;
            a_lweaponslot[14] = null;
            a_lweaponslot[15] = null;
            for(int i1 = 16; i1 < byte0; i1++)
                a_lweaponslot[i1] = null;

            arraylist.add(s);
            hashmapint.put(Finger.Int(s), a_lweaponslot);
            s = "HO12_400L_FuelTank";
            a_lweaponslot = new Aircraft._WeaponSlot[byte0];
            a_lweaponslot[0] = new Aircraft._WeaponSlot(1, "MGunHO12LS", 220);
            a_lweaponslot[1] = new Aircraft._WeaponSlot(0, "MGunHO12LS", 220);
            a_lweaponslot[2] = new Aircraft._WeaponSlot(0, "MGunHO12LS", 220);
            a_lweaponslot[3] = new Aircraft._WeaponSlot(1, "MGunHO12LS", 220);
            a_lweaponslot[4] = null;
            a_lweaponslot[5] = null;
            a_lweaponslot[6] = null;
            a_lweaponslot[7] = null;
            a_lweaponslot[8] = new Aircraft._WeaponSlot(9, "PylonN1K1PLN1", 1);
            a_lweaponslot[9] = new Aircraft._WeaponSlot(9, "FuelTankGun_TankN1K1", 1);
            a_lweaponslot[10] = null;
            a_lweaponslot[11] = null;
            a_lweaponslot[12] = null;
            a_lweaponslot[13] = null;
            a_lweaponslot[14] = null;
            a_lweaponslot[15] = null;
            for(int i2 = 16; i2 < byte0; i2++)
                a_lweaponslot[i2] = null;

            arraylist.add(s);
            hashmapint.put(Finger.Int(s), a_lweaponslot);
            s = "400L_FuelTank";
            a_lweaponslot = new Aircraft._WeaponSlot[byte0];
            a_lweaponslot[0] = new Aircraft._WeaponSlot(1, "MGunType99model_2k", 220);
            a_lweaponslot[1] = new Aircraft._WeaponSlot(0, "MGunType99model_2k", 220);
            a_lweaponslot[2] = new Aircraft._WeaponSlot(0, "MGunType99model_2k", 220);
            a_lweaponslot[3] = new Aircraft._WeaponSlot(1, "MGunType99model_2k", 220);
            a_lweaponslot[4] = null;
            a_lweaponslot[5] = null;
            a_lweaponslot[6] = null;
            a_lweaponslot[7] = null;
            a_lweaponslot[8] = new Aircraft._WeaponSlot(9, "PylonN1K1PLN1", 1);
            a_lweaponslot[9] = new Aircraft._WeaponSlot(9, "FuelTankGun_TankN1K1", 1);
            a_lweaponslot[10] = null;
            a_lweaponslot[11] = null;
            a_lweaponslot[12] = null;
            a_lweaponslot[13] = null;
            a_lweaponslot[14] = null;
            a_lweaponslot[15] = null;
            for(int j = 16; j < byte0; j++)
                a_lweaponslot[j] = null;

 .....................................................................
         
            arraylist.add(s);
            hashmapint.put(Finger.Int(s), a_lweaponslot);
            s = "HO12_RocketRA8SCHIFF";
            a_lweaponslot = new Aircraft._WeaponSlot[byte0];
            a_lweaponslot[0] = new Aircraft._WeaponSlot(1, "MGunHO12LS", 220);
            a_lweaponslot[1] = new Aircraft._WeaponSlot(0, "MGunHO12LS", 220);
            a_lweaponslot[2] = new Aircraft._WeaponSlot(0, "MGunHO12LS", 220);
            a_lweaponslot[3] = new Aircraft._WeaponSlot(1, "MGunHO12LS", 220);
            a_lweaponslot[4] = null;
            a_lweaponslot[5] = null;
            a_lweaponslot[6] = null;
            a_lweaponslot[7] = null;
            a_lweaponslot[8] = null;
            a_lweaponslot[9] = null;
            a_lweaponslot[10] = null;
            a_lweaponslot[11] = null;
            a_lweaponslot[12] = null;
            a_lweaponslot[13] = null;
            a_lweaponslot[14] = new Aircraft._WeaponSlot(9, "PylonETC250", 1);
            a_lweaponslot[15] = new Aircraft._WeaponSlot(3, "RocketGunRA8SCHIFF", 1);
            for(int j9 = 16; j9 < byte0; j9++)
                a_lweaponslot[j9] = null;

            arraylist.add(s);
            hashmapint.put(Finger.Int(s), a_lweaponslot);
            s = "none";
            a_lweaponslot = new Aircraft._WeaponSlot[byte0];
            a_lweaponslot[0] = null;
            a_lweaponslot[1] = null;
            a_lweaponslot[2] = null;
            a_lweaponslot[3] = null;
            a_lweaponslot[4] = null;
            a_lweaponslot[5] = null;
            a_lweaponslot[6] = null;
            a_lweaponslot[7] = null;
            a_lweaponslot[8] = null;
            a_lweaponslot[9] = null;
            a_lweaponslot[10] = null;
            a_lweaponslot[11] = null;
            a_lweaponslot[12] = null;
            a_lweaponslot[13] = null;
            a_lweaponslot[14] = null;
            a_lweaponslot[15] = null;                               
            arraylist.add(s);
            hashmapint.put(Finger.Int(s), a_lweaponslot);
        }
        catch(Exception exception) { }
    }
}

Без всяких вар_классов.

yt2 05.05.2016 23:36

Велосипед изобретён.
Уже несколько лет в коде есть дефолтная функция XweaponsRegister
по синтаксису совместимая с weaponsRegister
Кто знает тот использует. Кто не знает - пишет сотни лишних строк кода.

LeaderAI 06.05.2016 12:00

AircraftLH нашел тут ее.

Vasya 06.05.2016 13:46

Вложений: 1
Цитата:

Сообщение от yt2 (Сообщение 152276)
Велосипед изобретён.
Уже несколько лет в коде есть дефолтная функция XweaponsRegister
по синтаксису совместимая с weaponsRegister
Кто знает тот использует. Кто не знает - пишет сотни лишних строк кода.

Допустим есть., такую информацию(с пояснениями) публиковали где либо? Для тех кто не знает.
==========================
Тот вариант записи вооружния что я привёл выше - был общепринятым как раз несколько лет назад. Он мне нравиться и я больше склоняюсь к полной записи без сокращений. Как говорят - дело вкуса., тем более что старинный способ нормально работает и позволяет легко видеть соотношения хуков и того что подвешивают и прикручивают к крафту. Правда если дополняешь хуками и переподвешивашь бомбы или ракеты - приходиться переписывать все разделы(наборы) вооружения - для этого нужно потрудиться, но я уже привык., считаю это малой платой за удобство видеть полный расклад, а не ломать голову в догадках построить виртуальную схему вооружения в воображнии.
Поэтому - повторюсь - это хорошо когда есть несколько способов записи вооружения.
Кому как удобно - так и записывает. Главное: что бы компиллилось и Ил легко читал написанный код. /// Про способ записи которым пользуюсь я скажу опираясь на английский опыт: Ролс-Ройс может быть любой формы и цвета - главное большущий радиатор украшающий капот., ценность этого аглицкого аппарата от здоровенного радиатора не уменьшаеться.

LeaderAI 06.05.2016 20:41

Цитата:

Сообщение от Vasya (Сообщение 152288)
Допустим есть., такую информацию(с пояснениями) публиковали где либо? Для тех кто не знает.
==========================
Тот вариант записи вооружния что я привёл выше - был общепринятым как раз несколько лет назад. Он мне нравиться и я больше склоняюсь к полной записи без сокращений. Как говорят - дело вкуса., тем более что старинный способ нормально работает и позволяет легко видеть соотношения хуков и того что подвешивают и прикручивают к крафту. Правда если дополняешь хуками и переподвешивашь бомбы или ракеты - приходиться переписывать все разделы(наборы) вооружения - для этого нужно потрудиться, но я уже привык., считаю это малой платой за удобство видеть полный расклад, а не ломать голову в догадках построить виртуальную схему вооружения в воображнии.
Поэтому - повторюсь - это хорошо когда есть несколько способов записи вооружения.
Кому как удобно - так и записывает. Главное: что бы компиллилось и Ил легко читал написанный код. /// Про способ записи которым пользуюсь я скажу опираясь на английский опыт: Ролс-Ройс может быть любой формы и цвета - главное большущий радиатор украшающий капот., ценность этого аглицкого аппарата от здоровенного радиатора не уменьшаеться.

Ну дак там проще сколько хуков столько и прописок все компактно.
Нзвание вооружения и количесво патронов 1 хук.


Текущее время: 23:56. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot