Иконка ресурса

"Abstract" interface for Interlude

  • Автор темы Автор темы Petr
  • Дата начала Дата начала
I'm not absolutely sure about this, but i think the issue is the consumption of soulshots that updates the inventory i tried all versions and i can't replicate it even on clean c6 but i got infinite soulshots in my pack
On clean c6 and new abstract interface dosen’t have this problem , they have already fix it . I just only need to know which .uc file need to be fixed .
 
Посмотреть вложение 97812
Petr Привет, Пётр! Я знаю, что эта проблема уже исправлена в текущей версии интерфейса, но я использую более старую версию. Хотел узнать, какой именно файл нужно было заменить или изменить, чтобы исправить эту проблему. Помню, что раньше ты уже выкладывал этот фикс.
okey i fixed it thanks now work fine!
 
Последнее редактирование:
замените функцию OnClickItem на эту:
C-подобный:
function OnClickItem( string strID, int index )
{
    local int i, parrentWndId;
    local string parentWndName;
    if ( strID == "AutoItemSlot" )
    {
        parentWndName = ItemWindowHandle(GetHandle("ShortcutWnd."$strID)).GetParentWindowName();
        i = Int(Mid(parentWndName, InStr(parentWndName, "ItemWnd") + 7));
        if (Len(i) == 1)
            parrentWndId = int(0$i);
        else
            parrentWndId = i;
        if ( m_itemAutoUse[i] == 1 )
        {
            m_itemAutoUse[i] = 0;
            if ( i >= AUTO_ITEM_SLOT_ELIXIROFCP )
                Me.KillTimer(int(210$parrentWndId));
            ShowOnScreenMessage(("Auto use "$AutoItemInfo[i].Name)$": Off", 9, 1.5);
        }
        else
        {
            m_itemAutoUse[i] = 1;
            if ( i >= AUTO_ITEM_SLOT_ELIXIROFCP )
                Me.SetTimer(int(210$parrentWndId), 1000);
            ShowOnScreenMessage(("Auto use "$AutoItemInfo[i].Name)$": ON", 9, 1.5);
        }
        if ( i <= AUTO_ITEM_SLOT_BEAST_SPIRITSHOT )
            ExecuteEvent(EV_CUSTOM_TOGGLE_ITEM, "itemid="$AutoItemInfo[i].ClassID$" status="$m_itemAutoUse[i]);
        ToggleAutoEffect(i, m_itemAutoUse[i]);
    }
}

функцию UpdateAutoSlot на эту:
C-подобный:
function UpdateAutoSlot( int autoSlot )
{
    local int index;
    if (AutoItemInfo[autoSlot].ItemNum == 0)
    {
        DeleteItemPotion(autoSlot);
        ToggleAutoEffect(autoSlot, 0);
        AutoItemSlotNum[autoSlot].HideWindow();
        AutoItemSlotNum[autoSlot].SetTexture("");
    }
    else
    {
        if (m_itemAutoUse[autoSlot] == 1)
            ToggleAutoEffect(autoSlot, 1);
        index = -1;
        if (AutoItemSlot[autoSlot].GetItemNum() > 0)
            index = 0;
        else
        {
            AutoItemSlotAnim[autoSlot].SetLoopCount(1);
            AutoItemSlotAnim[autoSlot].Play();
        }
        AddItemWithNumTex(AutoItemSlot[autoSlot], AutoItemInfo[autoSlot], index);
        if (AutoItemInfo[autoSlot].ItemNum > 99)
            AutoItemSlotNum[autoSlot].SetTexture("L2UI_CH3.ItemCount.texCount99+");
        else
            AutoItemSlotNum[autoSlot].SetTexture("L2UI_CH3.ItemCount.texCount"$AutoItemInfo[autoSlot].ItemNum);
        AutoItemSlotNum[autoSlot].ShowWindow();
    }
}

функцию HandleUpdateElixirs на эту:
C-подобный:
function HandleUpdateElixirs()
{
    local int getItemCpID, getItemHpID;
    if (uInfo.nLevel > 75)
    {
        getItemCpID = 8639; // Elixir of CP (S)
        getItemHpID = 8627; // Elixir of Life (S)
    }
    else if (uInfo.nLevel > 60)
    {
        getItemCpID = 8638; // Elixir of CP (A)
        getItemHpID = 8626; // Elixir of CP (A)
    }
    else if (uInfo.nLevel > 51)
    {
        getItemCpID = 8637; // Elixir of CP (B)
        getItemHpID = 8625; // Elixir of Life (B)
    }
    else if (uInfo.nLevel > 39)
    {
        getItemCpID = 8636; // Elixir of CP (C)
        getItemHpID = 8624; // Elixir of Life (C)
    } 
    else if (uInfo.nLevel > 19)
    {
        getItemCpID = 8635; // Elixir of CP (D)
        getItemHpID = 8623; // Elixir of Life (D)
    }
    else
    {
        getItemCpID = 8634; // Elixir of CP (Ng)
        getItemHpID = 8622; // Elixir of Life (Ng)
    }
    if (getItemCpID != AutoItemInfo[AUTO_ITEM_SLOT_ELIXIROFCP].ClassID)
    {
        DeleteItemPotion(AUTO_ITEM_SLOT_ELIXIROFCP);
        GetItemByClassID(getItemCpID, False, AutoItemInfo[AUTO_ITEM_SLOT_ELIXIROFCP]);
        UpdateAutoSlot(AUTO_ITEM_SLOT_ELIXIROFCP);
    }
    if (getItemHpID != AutoItemInfo[AUTO_ITEM_SLOT_ELIXIROFCP].ClassID)
    {
        DeleteItemPotion(AUTO_ITEM_SLOT_ELIXIROFLIFE);
        GetItemByClassID(getItemHpID, False, AutoItemInfo[AUTO_ITEM_SLOT_ELIXIROFLIFE]);
        UpdateAutoSlot(AUTO_ITEM_SLOT_ELIXIROFLIFE);
    }
}


Для Lucera или любой другой движок в серверной части которого настроены доп итемы с хроник выше:
Прикрепляю инвентарь со слотами для браслетов брошей агатионов талисманов поясов и тд и тп...
левый браслет + 5 слотов под агатионы
правый браслет + 6 слотов под талисманы
брошь + 6 слотов под jewel (хз чё это такое)

*сами предметы не добавлял мне лень поэтому нужен тест*


Посмотреть вложение Video_2026-09-17_185455.mp4
 
Последнее редактирование:
замените функцию OnClickItem на эту:
C-подобный:
function OnClickItem( string strID, int index )
{
    local int i, parrentWndId;
    local string parentWndName;
    if ( strID == "AutoItemSlot" )
    {
        parentWndName = ItemWindowHandle(GetHandle("ShortcutWnd."$strID)).GetParentWindowName();
        i = Int(Mid(parentWndName, InStr(parentWndName, "ItemWnd") + 7));
        if (Len(i) == 1)
            parrentWndId = int(0$i);
        else
            parrentWndId = i;
        if ( m_itemAutoUse[i] == 1 )
        {
            m_itemAutoUse[i] = 0;
            if ( i >= AUTO_ITEM_SLOT_ELIXIROFCP )
                Me.KillTimer(int(210$parrentWndId));
            ShowOnScreenMessage(("Auto use "$AutoItemInfo[i].Name)$": Off", 9, 1.5);
        }
        else
        {
            m_itemAutoUse[i] = 1;
            if ( i >= AUTO_ITEM_SLOT_ELIXIROFCP )
                Me.SetTimer(int(210$parrentWndId), 1000);
            ShowOnScreenMessage(("Auto use "$AutoItemInfo[i].Name)$": ON", 9, 1.5);
        }
        if ( i <= AUTO_ITEM_SLOT_BEAST_SPIRITSHOT )
            ExecuteEvent(EV_CUSTOM_TOGGLE_ITEM, "itemid="$AutoItemInfo[i].ClassID$" status="$m_itemAutoUse[i]);
        ToggleAutoEffect(i, m_itemAutoUse[i]);
    }
}

функцию UpdateAutoSlot на эту:
C-подобный:
function UpdateAutoSlot( int autoSlot )
{
    local int index;
    if (AutoItemInfo[autoSlot].ItemNum == 0)
    {
        DeleteItemPotion(autoSlot);
        ToggleAutoEffect(autoSlot, 0);
        AutoItemSlotNum[autoSlot].HideWindow();
        AutoItemSlotNum[autoSlot].SetTexture("");
    }
    else
    {
        if (m_itemAutoUse[autoSlot] == 1)
            ToggleAutoEffect(autoSlot, 1);
        index = -1;
        if (AutoItemSlot[autoSlot].GetItemNum() > 0)
            index = 0;
        else
        {
            AutoItemSlotAnim[autoSlot].SetLoopCount(1);
            AutoItemSlotAnim[autoSlot].Play();
        }
        AddItemWithNumTex(AutoItemSlot[autoSlot], AutoItemInfo[autoSlot], index);
        if (AutoItemInfo[autoSlot].ItemNum > 99)
            AutoItemSlotNum[autoSlot].SetTexture("L2UI_CH3.ItemCount.texCount99+");
        else
            AutoItemSlotNum[autoSlot].SetTexture("L2UI_CH3.ItemCount.texCount"$AutoItemInfo[autoSlot].ItemNum);
        AutoItemSlotNum[autoSlot].ShowWindow();
    }
}

функцию HandleUpdateElixirs на эту:
C-подобный:
function HandleUpdateElixirs()
{
    local int getItemCpID, getItemHpID;
    if (uInfo.nLevel > 75)
    {
        getItemCpID = 8639; // Elixir of CP (S)
        getItemHpID = 8627; // Elixir of Life (S)
    }
    else if (uInfo.nLevel > 60)
    {
        getItemCpID = 8638; // Elixir of CP (A)
        getItemHpID = 8626; // Elixir of CP (A)
    }
    else if (uInfo.nLevel > 51)
    {
        getItemCpID = 8637; // Elixir of CP (B)
        getItemHpID = 8625; // Elixir of Life (B)
    }
    else if (uInfo.nLevel > 39)
    {
        getItemCpID = 8636; // Elixir of CP (C)
        getItemHpID = 8624; // Elixir of Life (C)
    }
    else if (uInfo.nLevel > 19)
    {
        getItemCpID = 8635; // Elixir of CP (D)
        getItemHpID = 8623; // Elixir of Life (D)
    }
    else
    {
        getItemCpID = 8634; // Elixir of CP (Ng)
        getItemHpID = 8622; // Elixir of Life (Ng)
    }
    if (getItemCpID != AutoItemInfo[AUTO_ITEM_SLOT_ELIXIROFCP].ClassID)
    {
        DeleteItemPotion(AUTO_ITEM_SLOT_ELIXIROFCP);
        GetItemByClassID(getItemCpID, False, AutoItemInfo[AUTO_ITEM_SLOT_ELIXIROFCP]);
        UpdateAutoSlot(AUTO_ITEM_SLOT_ELIXIROFCP);
    }
    if (getItemHpID != AutoItemInfo[AUTO_ITEM_SLOT_ELIXIROFCP].ClassID)
    {
        DeleteItemPotion(AUTO_ITEM_SLOT_ELIXIROFLIFE);
        GetItemByClassID(getItemHpID, False, AutoItemInfo[AUTO_ITEM_SLOT_ELIXIROFLIFE]);
        UpdateAutoSlot(AUTO_ITEM_SLOT_ELIXIROFLIFE);
    }
}


Для Lucera или любой другой движок в серверной части которого настроены доп итемы с хроник выше:
Прикрепляю инвентарь со слотами для браслетов брошей агатионов талисманов поясов и тд и тп...
левый браслет + 5 слотов под агатионы
правый браслет + 6 слотов под талисманы
брошь + 6 слотов под jewel (хз чё это такое)

*сами предметы не добавлял мне лень поэтому нужен тест*


Посмотреть вложение 97954
Did you fix the alt+g inventory? (when you press alt+g > inventory the textures of the inventory are broken/cut).
 

Вложения

  • ScreenShot02000.webp
    ScreenShot02000.webp
    57 КБ · Просмотры: 9
Назад
Сверху Снизу