Баг интерфейса Interlude

Menma

Выдающийся
Местный
Старожил I степени
Сообщения
141
Розыгрыши
0
Решения
1
Репутация
42
Реакции
52
Баллы
1 323
Здравствуйте. Кто-нибудь знает как можно это поправить? При первом открытии окна статуса персонажа, поверх него накладывается окно клана.
intbug.webp
 
да эт стандартный баг ила
в некоторых исходниках ила если скомпилить он пропадает (надо искать подходящие ибо декомпилы тож кривые бывают)
 
Єто что на дефолте такое? :eek:
Да. По-моему в 2009 я когда ни Интерлюде играла, такого не замечала, хотя может просто внимания не обращала. А теперь прям вот в глаза бросается. Клиент чистый и патч чистый.
 
по всей видимости связано с тем что команда открывать это окно аль+и а для вкладок в нём другие команды например статы альт+т
вот окно на альт+и или просто и
1745059696055.webp
а вот его код, ну меня тут смущает только строка скрывание клан окна, может проблем в этом

вот анализ от гпт

Код:
class MainWnd extends UIScript;

var ClanWnd ClanWndScript;

function OnLoad ()
{
  Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",433); // 0x00000014 : 0x0000
  ClanWndScript = ClanWnd(GetScript("ClanWnd")); // 0x0000002C : 0x001D
}

function OnHide ()
{
}

function OnMinimize ()
{
  local int Index;

  Index = Class'UIAPI_TABCTRL'.GetTopIndex("MainWnd.MainTabCtrl"); // 0x00000017 : 0x0000
  if ( Index == 0 ) // 0x0000003B : 0x002A
  {
    Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon1",194); // 0x00000044 : 0x0035
  } else { // 0x0000007D : 0x0073
    if ( Index == 1 ) // 0x00000080 : 0x0076
    {
      Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon2",196); // 0x00000089 : 0x0081
    } else { // 0x000000C2 : 0x00BF
      if ( Index == 2 ) // 0x000000C5 : 0x00C2
      {
        Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon3",197); // 0x000000CF : 0x00CE
      } else { // 0x00000108 : 0x010C
        if ( Index == 3 ) // 0x0000010B : 0x010F
        {
          Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon4",895); // 0x00000115 : 0x011B
        } else { // 0x00000151 : 0x015C
          if ( Index == 4 ) // 0x00000154 : 0x015F
          {
            Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon5",198); // 0x0000015E : 0x016B
          }
        }
      }
    }
  }
  ClanWndScript.ResetOpeningVariables(); // 0x00000197 : 0x01A9
}

function OnClickButton (string strID)
{
  if ( strID == "MainTabCtrl0" ) // 0x00000016 : 0x0000
  {
    Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",433); // 0x0000002C : 0x0018
    Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 0x00000044 : 0x0035
    ClanWndScript.ResetOpeningVariables(); // 0x0000005C : 0x0053
  } else { // 0x00000067 : 0x0062
    if ( strID == "MainTabCtrl1" ) // 0x0000006A : 0x0065
    {
      Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",119); // 0x00000080 : 0x007D
      Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 0x00000095 : 0x0097
      ClanWndScript.ResetOpeningVariables(); // 0x000000AD : 0x00B5
    } else { // 0x000000B8 : 0x00C4
      if ( strID == "MainTabCtrl2" ) // 0x000000BB : 0x00C7
      {
        Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",127); // 0x000000D1 : 0x00DF
        Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 0x000000E6 : 0x00F9
        ClanWndScript.ResetOpeningVariables(); // 0x000000FE : 0x0117
      } else { // 0x00000109 : 0x0126
        if ( strID == "MainTabCtrl3" ) // 0x0000010C : 0x0129
        {
          Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",439); // 0x00000122 : 0x0141
          ClanWndScript.getmyClanInfo(); // 0x0000013A : 0x015E
          ClanWndScript.NoblessMenuValidate(); // 0x00000145 : 0x016D
          ClanWndScript.ResetOpeningVariables(); // 0x00000150 : 0x017C
        } else { // 0x0000015B : 0x018B
          if ( strID == "MainTabCtrl4" ) // 0x0000015E : 0x018E
          {
            Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 0x00000174 : 0x01A6
            Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",118); // 0x0000018C : 0x01C4
            ClanWndScript.ResetOpeningVariables(); // 0x000001A1 : 0x01DE
          }
        }
      }
    }
  }
}

гпт предлагает исправить так - проверил на компиле - фигня)) ну собственно как всегда)

Код:
if ( strID == "MainTabCtrl3" )
{
  Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 👈 ДОБАВИТЬ ЭТО
  Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",439);
  ClanWndScript.getmyClanInfo();
  ClanWndScript.NoblessMenuValidate();
  ClanWndScript.ResetOpeningVariables();
}
 
Последнее редактирование:
по всей видимости связано с тем что команда открывать это окно аль+и а для вкладок в нём другие команды например статы альт+т
вот окно на альт+и или просто и
Посмотреть вложение 86685
а вот его код, ну меня тут смущает только строка скрывание клан окна, может проблем в этом

вот анализ от гпт

Код:
class MainWnd extends UIScript;

var ClanWnd ClanWndScript;

function OnLoad ()
{
  Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",433); // 0x00000014 : 0x0000
  ClanWndScript = ClanWnd(GetScript("ClanWnd")); // 0x0000002C : 0x001D
}

function OnHide ()
{
}

function OnMinimize ()
{
  local int Index;

  Index = Class'UIAPI_TABCTRL'.GetTopIndex("MainWnd.MainTabCtrl"); // 0x00000017 : 0x0000
  if ( Index == 0 ) // 0x0000003B : 0x002A
  {
    Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon1",194); // 0x00000044 : 0x0035
  } else { // 0x0000007D : 0x0073
    if ( Index == 1 ) // 0x00000080 : 0x0076
    {
      Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon2",196); // 0x00000089 : 0x0081
    } else { // 0x000000C2 : 0x00BF
      if ( Index == 2 ) // 0x000000C5 : 0x00C2
      {
        Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon3",197); // 0x000000CF : 0x00CE
      } else { // 0x00000108 : 0x010C
        if ( Index == 3 ) // 0x0000010B : 0x010F
        {
          Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon4",895); // 0x00000115 : 0x011B
        } else { // 0x00000151 : 0x015C
          if ( Index == 4 ) // 0x00000154 : 0x015F
          {
            Class'UIAPI_WINDOW'.Iconize("MainWnd","L2UI_CH3.TABBUTTON.MainWndTabIcon5",198); // 0x0000015E : 0x016B
          }
        }
      }
    }
  }
  ClanWndScript.ResetOpeningVariables(); // 0x00000197 : 0x01A9
}

function OnClickButton (string strID)
{
  if ( strID == "MainTabCtrl0" ) // 0x00000016 : 0x0000
  {
    Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",433); // 0x0000002C : 0x0018
    Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 0x00000044 : 0x0035
    ClanWndScript.ResetOpeningVariables(); // 0x0000005C : 0x0053
  } else { // 0x00000067 : 0x0062
    if ( strID == "MainTabCtrl1" ) // 0x0000006A : 0x0065
    {
      Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",119); // 0x00000080 : 0x007D
      Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 0x00000095 : 0x0097
      ClanWndScript.ResetOpeningVariables(); // 0x000000AD : 0x00B5
    } else { // 0x000000B8 : 0x00C4
      if ( strID == "MainTabCtrl2" ) // 0x000000BB : 0x00C7
      {
        Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",127); // 0x000000D1 : 0x00DF
        Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 0x000000E6 : 0x00F9
        ClanWndScript.ResetOpeningVariables(); // 0x000000FE : 0x0117
      } else { // 0x00000109 : 0x0126
        if ( strID == "MainTabCtrl3" ) // 0x0000010C : 0x0129
        {
          Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",439); // 0x00000122 : 0x0141
          ClanWndScript.getmyClanInfo(); // 0x0000013A : 0x015E
          ClanWndScript.NoblessMenuValidate(); // 0x00000145 : 0x016D
          ClanWndScript.ResetOpeningVariables(); // 0x00000150 : 0x017C
        } else { // 0x0000015B : 0x018B
          if ( strID == "MainTabCtrl4" ) // 0x0000015E : 0x018E
          {
            Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 0x00000174 : 0x01A6
            Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",118); // 0x0000018C : 0x01C4
            ClanWndScript.ResetOpeningVariables(); // 0x000001A1 : 0x01DE
          }
        }
      }
    }
  }
}

гпт предлагает исправить так - проверил на компиле - фигня)) ну собственно как всегда)

Код:
if ( strID == "MainTabCtrl3" )
{
  Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); // 👈 ДОБАВИТЬ ЭТО
  Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",439);
  ClanWndScript.getmyClanInfo();
  ClanWndScript.NoblessMenuValidate();
  ClanWndScript.ResetOpeningVariables();
}
Неа, не помогает. Хотя нашла какой то кастомный Interface.u и там эта штука пофикшена.

Я пыталась вставить в другом месте код этот, по-моему там логичнее, потому что проблема эта как раз при первом открытии окна после входа в игру, но что то оно не срабатывает.
Код:
function OnLoad (){
Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",433); // 0x00000014 : 0x0000
ClanWndScript = ClanWnd(GetScript("ClanWnd")); // 0x0000002C : 0x001D
Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); - вот тут
}
 
Последнее редактирование:
Неа, не помогает. Хотя нашла какой то кастомный Interface.u и там эта штука пофикшена.

Я пыталась вставить в другом месте код этот, по-моему там логичнее, потому что проблема эта как раз при первом открытии окна после входа в игру, но что то оно не срабатывает.
Код:
function OnLoad (){
Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",433); // 0x00000014 : 0x0000
ClanWndScript = ClanWnd(GetScript("ClanWnd")); // 0x0000002C : 0x001D
Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); - вот тут
}
та я уже везде перетыкал - не помогает)) надо чёто другое смотреть)
 
Как и все проблемы ИТ, 1745065510304.webp проблема с этим меню, смотреть нужно именно там(потому что alt+t открывает все правильно),кнопка инвентаря например не отправляет пакет обновления инвентаря и тп.
 
там кнопка на букве I и оно как будто открывает все 4 вкладки
 
Я interface.u взяла с клиента эльморлаба, там это пофикшено.
 
Я interface.u взяла с клиента эльморлаба, там это пофикшено.
а ну там ассемблер много чего исправлял, можно сделать декомпил и посмотреть что именно

я открывал файлы ю - UTTP и WOTgrealExporter
 

Вложения

Неа, не помогает. Хотя нашла какой то кастомный Interface.u и там эта штука пофикшена.

Я пыталась вставить в другом месте код этот, по-моему там логичнее, потому что проблема эта как раз при первом открытии окна после входа в игру, но что то оно не срабатывает.
Код:
function OnLoad (){
Class'UIAPI_WINDOW'.SetWindowTitle("MainWnd",433); // 0x00000014 : 0x0000
ClanWndScript = ClanWnd(GetScript("ClanWnd")); // 0x0000002C : 0x001D
Class'UIAPI_WINDOW'.HideWindow("ClanDrawerWnd"); - вот тут
}
У вас скорее всего не оригинальный интерфейс, а "кастомный" , вот файлы оригинального Interlude клиента , с ними этой проблемы нету, а вот если использовать "кастомный", с ним есть.
Вообще ClanDrawerWnd должен быть скрыт(по умолчанию) внутри interface.xdat , его следует редактировать если есть возможность.

Прикрепил как пример, можете взять interface.xdat и у вас не будет данной проблемы, а с custom будет .
 

Вложения

  • org.7z
    org.7z
    373,6 КБ · Просмотры: 1
  • custom.7z
    custom.7z
    2,1 МБ · Просмотры: 1
  • Мне нравится
Реакции: Dina
У вас скорее всего не оригинальный интерфейс, а "кастомный" , вот файлы оригинального Interlude клиента , с ними этой проблемы нету, а вот если использовать "кастомный", с ним есть.
Вообще ClanDrawerWnd должен быть скрыт(по умолчанию) внутри interface.xdat , его следует редактировать если есть возможность.

Прикрепил как пример, можете взять interface.xdat и у вас не будет данной проблемы, а с custom будет .
та не, у меня файлы стояли от 28.02.2007 и такой же косяк при первом открытии этого окна
 
Вот, вот. И я брала самый обычный патч без всяких кастомов, только, конечно с замененной нвиндов для винды 10. И проблема именно в interface.u так как .xdat я вообще не трогала, а баг то появлялся, то пропадал. Надо будет поискать там, может с иконок вызов какой то другой этого окна идет, не как с клавиш.
 
Так в чем проблема исправить то?
Откройте ClanWnd.uc
Найдите метод function Clear()
И добавьте где
Код:
class'UIAPI_WINDOW'.static.HideWindow("ClanDrawerWnd");

Код:
class'UIAPI_WINDOW'.static.HideWindow("ClanWnd");
 
Так в чем проблема исправить то?
Откройте ClanWnd.uc
Найдите метод function Clear()
И добавьте где
Код:
class'UIAPI_WINDOW'.static.HideWindow("ClanDrawerWnd");

Код:
class'UIAPI_WINDOW'.static.HideWindow("ClanWnd");
ну например вот она

Код:
function Clear()        // clear this Script
{
    local ClanDrawerWnd script;
    local int i;

    ClearList();
    script = ClanDrawerWnd( GetScript("ClanDrawerWnd") );
    script.Clear();
    
    class'UIAPI_WINDOW'.static.HideWindow("ClanDrawerWnd");
    class'UIAPI_WINDOW'.static.HideWindow("InviteClanPopWnd");

    class'UIAPI_TEXTBOX'.static.SetText( m_WindowName $ ".ClanNameText", "" );
    class'UIAPI_TEXTBOX'.static.SetText( m_WindowName $ ".ClanMasterNameText", "");
    class'UIAPI_TEXTBOX'.static.SetText( m_WindowName $ ".ClanAgitText", GetSystemString( 27 ) );    // 없음
    class'UIAPI_TEXTBOX'.static.SetText( m_WindowName $ ".ClanStatusText", "");
    class'UIAPI_TEXTBOX'.static.SetInt( m_WindowName $ ".ClanLevelText", 0);

    class'UIAPI_COMBOBOX'.static.Clear(m_WindowName $ ".ComboboxMainClanWnd");
    m_clanID = 0;
    m_clanName = "";
    m_clanRank = 0;
    m_clanLevel = 0;
    m_clanNameValue = 0;
    m_bMoreInfo = 0;
    m_currentShowIndex = 0;

    m_bClanMaster = 0;
    m_bJoin = 0;
    m_bNickName = 0;
    m_bCrest = 0;
    m_bWar = 0;
    m_bGrade = 0;
    m_bManageMaster = 0;
    m_bOustMember = 0;

    for( i=0; i < CLAN_KNIGHTHOOD_COUNT ; ++i )
    {
        m_memberList[ i ].m_array.Remove(0, m_memberList[ i ].m_array.Length);
        m_memberList[ i ].m_sName = "";
        m_memberList[ i ].m_sMasterName = "";
    }
}
 
ну например вот она

Код:
function Clear()        // clear this Script
{
    local ClanDrawerWnd script;
    local int i;

    ClearList();
    script = ClanDrawerWnd( GetScript("ClanDrawerWnd") );
    script.Clear();
  
    class'UIAPI_WINDOW'.static.HideWindow("ClanDrawerWnd");
    class'UIAPI_WINDOW'.static.HideWindow("InviteClanPopWnd");

    class'UIAPI_TEXTBOX'.static.SetText( m_WindowName $ ".ClanNameText", "" );
    class'UIAPI_TEXTBOX'.static.SetText( m_WindowName $ ".ClanMasterNameText", "");
    class'UIAPI_TEXTBOX'.static.SetText( m_WindowName $ ".ClanAgitText", GetSystemString( 27 ) );    // 없음
    class'UIAPI_TEXTBOX'.static.SetText( m_WindowName $ ".ClanStatusText", "");
    class'UIAPI_TEXTBOX'.static.SetInt( m_WindowName $ ".ClanLevelText", 0);

    class'UIAPI_COMBOBOX'.static.Clear(m_WindowName $ ".ComboboxMainClanWnd");
    m_clanID = 0;
    m_clanName = "";
    m_clanRank = 0;
    m_clanLevel = 0;
    m_clanNameValue = 0;
    m_bMoreInfo = 0;
    m_currentShowIndex = 0;

    m_bClanMaster = 0;
    m_bJoin = 0;
    m_bNickName = 0;
    m_bCrest = 0;
    m_bWar = 0;
    m_bGrade = 0;
    m_bManageMaster = 0;
    m_bOustMember = 0;

    for( i=0; i < CLAN_KNIGHTHOOD_COUNT ; ++i )
    {
        m_memberList[ i ].m_array.Remove(0, m_memberList[ i ].m_array.Length);
        m_memberList[ i ].m_sName = "";
        m_memberList[ i ].m_sMasterName = "";
    }
}
Ну добавьте
Код:
class'UIAPI_WINDOW'.static.HideWindow("ClanWnd");
и будет вам счастье
 
Назад
Сверху