Не видно больше трех иконок в слоте

  • Автор темы Автор темы Psycho
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Psycho

Легенда
Если в etc слоте весит 3 эффекта, и к примеру сожрать банку хп, то она не будет отображаться.
Кто в курсе, где в интерфейсе стоит ограничение? В скрипте AbnormalUpdate не увидел ничего подобного на первый взгляд.
542 прот.

Screenshot_9.webp Screenshot_8.webp
 
Последнее редактирование:
на вид, такое ощущение что интерфейс просто скрывает полоску для отображения статуса банок.
Если я правильно помню - данные иконки идут от пакета EtcStatus
 
на вид, такое ощущение что интерфейс просто скрывает полоску для отображения статуса банок.
Если я правильно помню - данные иконки идут от пакета EtcStatus
скорей лимит отображения etc-иконок, а не проблема самой банки HP
 
на вид, такое ощущение что интерфейс просто скрывает полоску для отображения статуса банок.
Если я правильно помню - данные иконки идут от пакета EtcStatus
Не, я же прикрепил скрин где банку видно. Видать где-то ограничение на кол-во иконок в этом слоте.
Сообщение объединено:
Ну типо
Java:
/**
 * @author Luca Baldi
 */
public class EtcStatusUpdate extends ServerPacket
{
    private final Player _player;
    private int _mask;
 
    public EtcStatusUpdate(Player player)
    {
        _player = player;
        _mask = _player.getMessageRefusal() || _player.isChatBanned() || _player.isSilenceMode() ? 1 : 0;
        _mask |= _player.isInsideZone(ZoneId.DANGER_AREA) ? 2 : 0;
        _mask |= _player.hasCharmOfCourage() ? 4 : 0;
    }
 
    @Override
    public void writeImpl(GameClient client, WritableBuffer buffer)
    {
        ServerPackets.ETC_STATUS_UPDATE.writeId(this, buffer);
        buffer.writeByte(_player.getCharges()); // 1-7 increase force, level
        buffer.writeInt(_player.getWeightPenalty()); // 1-4 weight penalty, level (1=50%, 2=66.6%, 3=80%, 4=100%)
        buffer.writeByte(_player.getExpertiseWeaponPenalty()); // Weapon Grade Penalty [1-4]
        buffer.writeByte(_player.getExpertiseArmorPenalty()); // Armor Grade Penalty [1-4]
        buffer.writeByte(_player.getDeathPenaltyBuffLevel()); // 1-15 death penalty, level (combat ability decreased due to death)
        buffer.writeByte(_player.getChargedSouls());
        buffer.writeByte(_mask);
    }
}
Сообщение объединено:
Туда даже грейд пенальти не попадает, если заняты 3 слота.
Screenshot_15.webp
Сообщение объединено:
Я так понимаю где-то здесь логика говна, которая и обрезает иконки?
Код:
function HandleAddEtcStatus(string param)
{
    local int i, Max;
    local StatusIconInfo Info;

    ClearStatus(true, false);
    Info.Size = 24;
    Info.BackTex = "L2UI.EtcWndBack.AbnormalBack";
    Info.bShow = true;
    Info.bEtcItem = true;
    Info.bShortItem = false;
    ParseInt(param, "Max", Max);
    for(i = 0; i < Max; i++)
    {
        ParseItemIDWithIndex(param, Info.Id, i);
        ParseInt(param, "SkillLevel_" $ string(i), Info.Level);
        ParseInt(param, "RemainTime_" $ string(i), Info.RemainTime);
        ParseString(param, "Name_" $ string(i), Info.Name);
        ParseString(param, "IconName_" $ string(i), Info.IconName);
        ParseString(param, "Description_" $ string(i), Info.Description);
        ParseString(param, "IconPanel_" $ string(i), Info.IconPanel);
        if(IsValidItemID(Info.Id))
        {
            if((m_EtcStatusRow == -1) && m_ShortStatusRow == -1)
            {
                m_EtcStatusRow = StatusIcon.GetRowCount();
                StatusIcon.AddRow();
            }
            StatusIcon.AddCol(m_EtcStatusRow, Info);
        }
    }
    UpdateWindowSize();
}
Код:
function HandleAddShortStatus(string param)
{
    local int i, Max, CurCol;
    local StatusIconInfo Info;

    ClearStatus(false, true);
    Info.Size = 24;
    Info.BackTex = "L2UI.EtcWndBack.AbnormalBack";
    Info.bShow = true;
    Info.bEtcItem = false;
    Info.bShortItem = true;
    CurCol = -1;
    ParseInt(param, "Max", Max);
    for(i = 0; i < Max; i++)
    {
        ParseItemIDWithIndex(param, Info.Id, i);
        ParseInt(param, "SkillLevel_" $ string(i), Info.Level);
        ParseInt(param, "SkillSubLevel_" $ string(i), Info.SubLevel);
        ParseInt(param, "RemainTime_" $ string(i), Info.RemainTime);
        ParseString(param, "Name_" $ string(i), Info.Name);
        ParseString(param, "IconName_" $ string(i), Info.IconName);
        ParseString(param, "Description_" $ string(i), Info.Description);
        ParseString(param, "IconPanel_" $ string(i), Info.IconPanel);
        if(IsValidItemID(Info.Id))
        {
            if((m_EtcStatusRow == -1) && m_ShortStatusRow == -1)
            {
                m_ShortStatusRow = StatusIcon.GetRowCount();
                StatusIcon.AddRow();
            }
            CurCol++;
            StatusIcon.InsertCol(m_ShortStatusRow, CurCol, Info);
        }
    }
    UpdateWindowSize();
}
Код:
function HandleAddEtcStatus(string param)
{
    local int i;
    local int Max;
    local int BuffCnt;
    local int CurRow;
    local bool bNewRow;
    local StatusIconInfo info;

    ClearStatus(true, false);
    ...
    if (m_ShortStatusRow>-1)
    {
        bNewRow = false;
        CurRow = m_ShortStatusRow;
    }
    else
    {
        bNewRow = true;
        CurRow = m_NormalStatusRow;
        ...
    }

    ParseInt(param, "Max", Max);
    for (i=0; i<Max; i++)
    {
        ...
        if (IsValidItemID(info.ID))
        {
            if (bNewRow)
            {
                bNewRow = !bNewRow;
                CurRow++;
                StatusIcon.InsertRow(CurRow);
            }
            StatusIcon.AddCol(CurRow, info);
            m_EtcStatusRow = CurRow;
            BuffCnt++;
        }
    }

    UpdateWindowSize();
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу