Показать сообщение отдельно
Старый 01.04.2018, 17:11   #334
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,054
Радость

Если при декомпиляции разных "сложных" классов вылазяет вот такое:
Код:
bIsMaster = flag;
        i = 0;
_L3:
        if(i >= 4) goto _L2; else goto _L1
_L1:
        try
        {
            astateEffectChunks[i + 0] = actor.findHook("_Tank" + (i + 1) + "Burn").chunkName();
            astateEffectChunks[i + 0] = astateEffectChunks[i + 0].substring(0, astateEffectChunks[i + 0].length() - 1);
            Aircraft.debugprintln(aircraft, "AS: Tank " + i + " FX attached to '" + astateEffectChunks[i + 0] + "' substring..");
        }
        catch(Exception exception) { }
        continue; /* Loop/switch isn't completed */
        Exception exception5;
        exception5;
        throw exception5;
        i++;
          goto _L3
_L2:
        i = 0;
_L6:
        if(i >= aircraft.FM.EI.getNum()) goto _L5; else goto _L4
_L4:
        try
        {
            astateEffectChunks[i + 4] = actor.findHook("_Engine" + (i + 1) + "Smoke").chunkName();
            astateEffectChunks[i + 4] = astateEffectChunks[i + 4].substring(0, astateEffectChunks[i + 4].length() - 1);
            Aircraft.debugprintln(aircraft, "AS: Engine " + i + " FX attached to '" + astateEffectChunks[i + 4] + "' substring..");
        }
        catch(Exception exception1) { }
        continue; /* Loop/switch isn't completed */
        Exception exception6;
        exception6;
        throw exception6;
        i++;
          goto _L6
_L5:
        i = 0;
_L9:
        if(i >= astateNavLightsEffects.length) goto _L8; else goto _L7
_L7:
То эти Л-ки нужно удалять "нахер". Это декомпилятор пишет ахинею - пытаеться показать методы которые забыл понимать.
Там нужно писать типа так:
Код:
bIsMaster = flag;
        for(int i = 0; i < 4; i++)
            try
            {
                astateEffectChunks[i + 0] = actor.findHook("_Tank" + (i + 1) + "Burn").chunkName();
                astateEffectChunks[i + 0] = astateEffectChunks[i + 0].substring(0, astateEffectChunks[i + 0].length() - 1);
                Aircraft.debugprintln(aircraft, "AS: Tank " + i + " FX attached to '" + astateEffectChunks[i + 0] + "' substring..");
            }
            catch(Exception exception) { }
            finally { }
Код:
for(int j = 0; j < ((FlightModelMain) (((SndAircraft) (aircraft)).FM)).EI.getNum(); j++)
            try
Это нужно сидеть и править каждую строку, добавляя указатели для чего/к чему обращается код.
И ещё:
бывает при декомпиляции появляются лишние строки, которые рассказывают нам о том, что есть блок команд, который не совсем похож на метод в других классах среды., то есть - не так записана пунктуация.
Вот и вылазяет:
Код:
byte byte0;
        if(!bIsAboutToBailout)
            break MISSING_BLOCK_LABEL_1119;
        if(astateBailoutStep >= 0 && astateBailoutStep < 2)
        {
            if(aircraft.FM.CT.cockpitDoorControl > 0.5F && aircraft.FM.CT.getCockpitDoor() > 0.5F)
            {
                astateBailoutStep = 11;
                doRemoveBlisters();
            } else
            {
                astateBailoutStep = 2;
            }
            break MISSING_BLOCK_LABEL_1119;
        }
Нужно открывать скобку
Код:
if(astateBailoutStep >= 0 && astateBailoutStep < 2)
            {
а "абабугаламагу" break MISSING_BLOCK_LABEL_1119; выкидывать в мусорную кучу.
Вместо миссинг-блок ниже в командах(подразделах) пишется так:
Код:
{
                    astateBailoutStep = 2;
                }
            } else
В самом низу раздела команд private void .... нужно ещё раз закрыть скобку.
Как то вот так. Шо понял - то и написал. Может кому пригодится для делания модов.

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