Обновление CS:GO [24.08.2022] Обновление — Изменения в коде Panorama UI

Легенда форума
Статус
Онлайн
Регистрация
10 Дек 2018
Сообщения
4,381
Реакции[?]
2,284
Поинты[?]
189K
Привет. Недавно в CSGO вышло обновление, которое повлекло за собой изменение в коде пользовательского интерфейса игры (Panorama), в этой теме Вы сможете наглядно увидеть нововведения через исходный код.

– ИЗМЕНЕНИЯ В МАГАЗИНЕ ГЛАВНОГО МЕНЮ –
– mainmenu_store.xml –

[+] Class: store-panel-inventory-full — класс новой панельки, уведомляющей, что инвентарь игрока полон.
HTML:
/* Объявляем новый класс панельки*/
<Panel class="store-panel-inventory-full hidden" id="StorePanelInventoryFull">
/* Объявляем лейбл-класс с текстом, который будет рисоваться */
    <Label class="store-panel-inventory-full__text" id="StorePanelInventoryFullText"
    /* Текстом будет #SFUI_InventoryFull */
        html="true" text="#SFUI_InventoryFull"/>

    <Panel id="JsStorageContainerItem" class="store-panel-inventory-full__item"/>
/* Объявляем новую кнопку */
    <TextButton id="StorePanelInventoryFullButton"

        class="store-panel-inventory-full__button PopupButton"
    /* При нажатии на кнопку вызовется JS-функция MainMenuStore.DismissInventoryFull(), она закроет эту панельку */
        onactivate="MainMenuStore.DismissInventoryFull()"

        selected="false" html="true"
    /* Рисуем на кнопке текст #Store_Dismiss_Inventory == Dismiss */  
        text="#Store_Dismiss_Inventory"/>

/* Конец класса панельки */
</Panel>

– mainmenu_store.xml –
[+] Function: _CheckInventoryFull() — проверяет, полон ли инвентарь игрока. Максимальный процент заполненности — 97%. При его превышении постоянно будет показываться уведомление с предложением купить Хранилище предметов.
[+] Function: _DismissInventoryFull() — при вызове скрывает панельку, уведомляющую о заполненности инвентаря.
[+] Constant: INVENTORY_FULL_THRESHOLD = 97 — определяет значение заполненности в процентах, после которого будет показываться уведомление о покупке хранилища. 97% = 970 предметов из 1000 мест.

JavaScript:
function _CheckInventoryFull ()
{
        // ЕСЛИ занято больше 96% свободного места инвентаря
    if ( InventoryAPI.GetInventoryUsagePercentage() >= INVENTORY_FULL_THRESHOLD )
    {
            // Объявляем новый предмет хранилища (?)
        let elStorageContainerItem = $( '#JsStorageContainerItem' );

            // Присваиваем значение переменной inv-usage, которая покажет, на сколько % заполнен наш инвентарь
        $( '#StorePanelInventoryFull' ).SetDialogVariableInt( "inv-usage", InventoryAPI.GetInventoryUsagePercentage() );

            // Как я понял, здесь рисуется предмет хранилища и заполняется его объект, чтобы он был кликабельным и т.п.
        let elItem = elStorageContainerItem.FindChildInLayoutFile( 'StorageUnit' );
        if ( !elItem )
        {
            elItem = $.CreatePanel( 'Panel', elStorageContainerItem, 'StorageUnit' );
   
            elItem.Data().oData = {
                id: "17293822569102705841",
                activationType: "store",
                isNewRelease: false,
                useItemId: true,
                isMarketItem: false
            }

            elItem.BLoadLayout( "file://{resources}/layout/mainmenu_store_tile.xml", false, false );
        }

            // Показываем наше уведомление пользователю
        $( '#StorePanelInventoryFull' ).RemoveClass( 'hidden' );
    }
        // Если инвентарь не заполнен, скрываем уведомление
    else
    {
        _DismissInventoryFull();
    }

}

С _DismissInventoryFull() всё просто — функция просто добавляет класс "Hidden" к панельке, тем самым скрывая её.


– ИЗМЕНЕНИЯ В ЛИЧНОЙ МИНИ-КАРТОЧКЕ ИГРОКА –
– context_menu_playercard.js –

[~] Check: новое условие в проверке на возможность пригласить игрока в лобби. Теперь, если у Вас нет праймстатуса, игрока можно пригласить только если он есть у вас в друзьях.

JavaScript:
    // Новое оригинальное условие:
( PartyListAPI.GetFriendPrimeEligible( MyPersonaAPI.GetXuid() ) || ( FriendsListAPI.GetFriendRelationship( id ) === "friend" ) )

// Разбор:

    // получаем собственный UID, а затем проверяем, есть ли у нас Prime-статус
( PartyListAPI.GetFriendPrimeEligible( MyPersonaAPI.GetXuid() )
    // ИЛИ
||
    // проверяем "отношения" с выбранным игроком: является ли он является нашим другом
( FriendsListAPI.GetFriendRelationship( id ) === "friend" ) )

/* Пояснение: нам нужно, чтобы у нас ЛИБО был прайм-статус, ЛИБО, чтобы мы дружили с игроком через Steam.
    Если мы завалим обе проверки, то у нас не будет возможности пригласить человека в пати. */

Пожалуйста, авторизуйтесь для просмотра ссылки.
На этом всё. Если Вам нравятся подобные разборы — напишите об этом в теме. Вопрос о том, нужны ли кому-то подобные темы, остаётся открытым.
 
Последнее редактирование:
Маленький волк
Участник
Статус
Оффлайн
Регистрация
17 Апр 2021
Сообщения
798
Реакции[?]
236
Поинты[?]
6K
Наконец-то инфу норм дали публике. Спасибо. Обнова говно конечно. Надеюсь, что это смогут обойти
 
Легенда форума
Статус
Онлайн
Регистрация
10 Дек 2018
Сообщения
4,381
Реакции[?]
2,284
Поинты[?]
189K
Маленький волк
Участник
Статус
Оффлайн
Регистрация
17 Апр 2021
Сообщения
798
Реакции[?]
236
Поинты[?]
6K
Что обойти? Фича с ограничением предметов как бы на сервере и её не обойдёшь, бтв её давно уже добавили.
Я имею в виду, что нельзя пригласить в лобби нонпрайм. Обойти смогут чи не?
 
Легенда форума
Статус
Онлайн
Регистрация
10 Дек 2018
Сообщения
4,381
Реакции[?]
2,284
Поинты[?]
189K
Я имею в виду, что нельзя пригласить в лобби нонпрайм. Обойти смогут чи не?
Хз, скорее всего, ограничение и на серверсайде тоже добавили, но если нет, то вообще изи, по-сути то.
Если на серверсайде есть, то тоже мб смогут, в системе инвайтов много дыр, на самом деле.
 
Легенда форума
Статус
Онлайн
Регистрация
10 Дек 2018
Сообщения
4,381
Реакции[?]
2,284
Поинты[?]
189K
EFI_COMPROMISED_DATA
лучший в мире
Статус
Оффлайн
Регистрация
26 Янв 2018
Сообщения
920
Реакции[?]
1,632
Поинты[?]
85K
Забаненный
Статус
Оффлайн
Регистрация
2 Июл 2021
Сообщения
155
Реакции[?]
21
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
интересно.
 
Сверху Снизу