Показать сообщение отдельно
Старый 25.02.2016, 14:59   #662
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,311
Радость Раздельное бомбосбрасывание для Пешек

Раздельное бомбосбрасывание для Пешек:
- http://filedeluxe.com/drg7keydu400.html -.,
- https://drive.google.com/file/d/0B9T...ew?usp=sharing -.
Сделано по прозьбе он-лайн ресурса.
Оригинальные Пешки не имеют раздельного бомбосбрасывание, только с приставкой МОД.
Фм не изменялась, емд - так же не трогал.
Дефолтным Пешкам сделать раздельное бомбосбрасывание для использования без енжин-мода - не возможно., там не собираеться 3До при дописывании хуков и прописки их в класс., потому как бомбёры жёстко привязаны на дефолтный файл код с вооружением.
--------------------------------------
Кто скачивал Пешки(Pe-2series402-4.12.x-RC6) - предлагаю в архиве фикс для бомбардира., в самолётах с раздельным сбрасыванием не включался кокпит бомбардира., поправил - теперь кабина бомбардира включаеться нажатием клавиши С., потом нужно переключить вид прицела
(у меня назначена кнопка О(в рус. алф. Щ))
и уже дальше двигать кнопками управление прицелом.
Есть один баг: миссию нужно завершать в кокпите пилота., если выйти из миссии в кокпите бомбардира - Ил зависнет в меню новой попытки и выйти из игры получиться только с помощью трёх кнопок и завершить процесс.
Баг пишет такой лог:
Код:
java.lang.ClassCastException: com.maddox.il2.objects.air.PE_2SERIES244_MODS
	at com.maddox.il2.objects.air.CockpitPE2_244_Bombardier_MODS$Interpolater.tick(CockpitPE2_244_Bombardier_MODS.java:94)
	at com.maddox.il2.engine.Interpolators.tick(Interpolators.java:222)
	at com.maddox.il2.engine.Actor.interpolateTick(Actor.java:434)
	at com.maddox.il2.engine.InterpolateAdapter.msgTimeOut(InterpolateAdapter.java:174)
	at com.maddox.rts.MsgTimeOut.invokeListener(MsgTimeOut.java:73)
	at com.maddox.rts.Message._send(Message.java:1217)
	at com.maddox.rts.Message.sendToObject(Message.java:1191)
	at com.maddox.rts.Message.sendTo(Message.java:1134)
	at com.maddox.rts.Message.trySend(Message.java:1115)
	at com.maddox.rts.Time.loopMessages(Time.java:252)
	at com.maddox.rts.RTSConf.loopMsgs(RTSConf.java:101)
	at com.maddox.il2.game.MainWin3D.loopApp(MainWin3D.java:131)
	at com.maddox.il2.game.Main.exec(Main.java:449)
	at com.maddox.il2.game.GameWin3D.main(GameWin3D.java:235)
.
Там в классе бомбардира есть такой раздел:
Код:
if(fm.CT.Weapons[2] != null)
                {
                    bHaveDAG10 = true;
                    if(fm.CT.Weapons[2].length > 0)
                        bDAG10 = fm.CT.Weapons[2][0].haveBullets();
                    else
                        bDAG10 = false;
                }
                if(fm.CT.Weapons[3] != null)
                    if(((PE_2NEW)aircraft()).BombLoadType == 1)
                    {
                        bBombs[5] = fm.CT.Weapons[3][2].haveBullets();
                        bBombs[4] = fm.CT.Weapons[3][3].haveBullets();
                        bBombs[7] = fm.CT.Weapons[3][4].haveBullets();
                        bBombs[6] = fm.CT.Weapons[3][5].haveBullets();
                    } else
                    if(((PE_2NEW)aircraft()).BombLoadType == 2)
                    {
                        bBombs[1] = fm.CT.Weapons[3][0].haveBullets();
                        bBombs[0] = fm.CT.Weapons[3][1].haveBullets();
                    } else
                    if(((PE_2NEW)aircraft()).BombLoadType == 3)
                    {
                        bBombs[1] = fm.CT.Weapons[3][0].haveBullets();
                        bBombs[0] = fm.CT.Weapons[3][1].haveBullets();
                        bBombs[7] = fm.CT.Weapons[3][2].haveBullets();
                        bBombs[6] = fm.CT.Weapons[3][3].haveBullets();
                    } else
                    if(((PE_2NEW)aircraft()).BombLoadType == 4)
                    {
                        bBombs[1] = fm.CT.Weapons[3][0].haveBullets();
                        bBombs[0] = fm.CT.Weapons[3][1].haveBullets();
                        bBombs[3] = fm.CT.Weapons[3][2].haveBullets();
                        bBombs[2] = fm.CT.Weapons[3][3].haveBullets();
                    } else
                    if(((PE_2NEW)aircraft()).BombLoadType == 5)
                    {
                        bBombs[5] = fm.CT.Weapons[3][2].haveBullets();
                        bBombs[4] = fm.CT.Weapons[3][3].haveBullets();
                    }
.,
он соответствует этому в классе:
Код:
if(thisWeaponsName.startsWith("default") || thisWeaponsName.startsWith("none"))
        {
            BombLoadType = 0;
            FM.CT.bHasBayDoorControl = false;
        } else
        if(thisWeaponsName.startsWith("6fab50") || thisWeaponsName.startsWith("6fab100"))
        {
            BombLoadType = 1;
            FM.CT.bHasBayDoorControl = true;
        } else
        if(thisWeaponsName.endsWith("2fab250") || thisWeaponsName.startsWith("2fab500"))
        {
            BombLoadType = 2;
            FM.CT.bHasBayDoorControl = false;
        } else
        if(thisWeaponsName.endsWith("2fab2502fab100"))
        {
            BombLoadType = 3;
            FM.CT.bHasBayDoorControl = true;
        } else
        if(thisWeaponsName.endsWith("4fab250"))
        {
            BombLoadType = 4;
            FM.CT.bHasBayDoorControl = false;
        } else
        if(thisWeaponsName.endsWith("2fab5002fab250"))
        {
            BombLoadType = 4;
            FM.CT.bHasBayDoorControl = false;
        } else
        {
            BombLoadType = 0;
            FM.CT.bHasBayDoorControl = false;
        }
    }
.
Мне пришлось переписать, потому как в классе самолёта я изменил такой раздел:
Код:
if(thisWeaponsName.startsWith("default") || thisWeaponsName.startsWith("none"))
        {
            BombLoadType = 0;
            FM.CT.bHasBayDoorControl = false;
        } else
        if(thisWeaponsName.endsWith("AG2"))
        {
            BombLoadType = 0;
            FM.CT.bHasBayDoorControl = false;
        } else
        if(thisWeaponsName.startsWith("6fab50") || thisWeaponsName.startsWith("6fab100"))
        {
            BombLoadType = 1;
            FM.CT.bHasBayDoorControl = true;
        } else
        if(thisWeaponsName.endsWith("2fab250") || thisWeaponsName.startsWith("2fab500"))
        {
            BombLoadType = 2;
            FM.CT.bHasBayDoorControl = false;
        } else
        if(thisWeaponsName.endsWith("2fab2502fab100"))
        {
            BombLoadType = 4;
            FM.CT.bHasBayDoorControl = false;
        } else
        if(thisWeaponsName.endsWith("4fab250"))
        {
            BombLoadType = 4;
            FM.CT.bHasBayDoorControl = false;
        } else
        if(thisWeaponsName.endsWith("2fab5002fab250"))
        {
            BombLoadType = 4;
            FM.CT.bHasBayDoorControl = false;
        } else
        {
            BombLoadType = 0;
            FM.CT.bHasBayDoorControl = false;
        }
    }
.
Потому как были изменены хуки и количество вооружения в модной Пешке.
Теперь в классе бомбардира сделано так:
Код:
if(fm.CT.Weapons[2] != null)
                {
                    bHaveDAG10 = true;
                    if(fm.CT.Weapons[2].length > 0)
                        bDAG10 = fm.CT.Weapons[2][0].haveBullets();
                    else
                        bDAG10 = false;
                }
                if(fm.CT.Weapons[3] != null)
                    if(((PE_2NEW_MODS)aircraft()).BombLoadType == 1)
                    {
                        bBombs[5] = fm.CT.Weapons[3][2].haveBullets();
                        bBombs[4] = fm.CT.Weapons[3][3].haveBullets();
                        bBombs[7] = fm.CT.Weapons[3][4].haveBullets();
                        bBombs[6] = fm.CT.Weapons[3][5].haveBullets();
                    } else
                    if(((PE_2NEW_MODS)aircraft()).BombLoadType == 2)
                    {
                        bBombs[1] = fm.CT.Weapons[3][0].haveBullets();
                        bBombs[0] = fm.CT.Weapons[3][1].haveBullets();
                    } else                    
                    if(((PE_2NEW_MODS)aircraft()).BombLoadType == 4)
                    {
                        bBombs[1] = fm.CT.Weapons[3][0].haveBullets();
                        bBombs[0] = fm.CT.Weapons[3][1].haveBullets();
                        bBombs[3] = fm.CT.Weapons[3][2].haveBullets();
                        bBombs[2] = fm.CT.Weapons[3][3].haveBullets();
                    }
.
Если кто меня поправит - буду признателен!!!
-----------------------------------------------------
Был глюк архиватора - прикреплённый архив фикс к Пешкам почему то был пустым. Исправил сегодня в моде разные глюки., выход в меню буд то получаеться уже с любого места в самолёте. Прицелы работают. Фикс положить поверх мода Pe-2series402-4.12.x-RC6., есть копия 265 модели - 179 модель с фм от 110 модели для он-лайн ресурса.
Замечания принимаються, мод исправляю по мере умственных возможностей.
Вложения
Тип файла: rar Pe-2series244МОДС, 265МОДС, 402МОДС--ФИКС БОМБАРДИРА.rar (333.0 Кб, 488 просмотров)

Последний раз редактировалось Vasya; 27.02.2016 в 22:23. Причина: ДОПОЛНЕНИЕ И ПОЯСНЕНИЕ ПО МОДУ
Vasya вне форума   Ответить с цитированием