-
Автор темы
- #1
Привет. Недавно в CSGO вышло обновление, которое повлекло за собой изменение в коде пользовательского интерфейса игры (Panorama), в этой теме Вы сможете наглядно увидеть нововведения через исходный код.
[+] Class:
– mainmenu_store.xml –
[+] Function:
[+] Function:
[+] Constant:
С
– ИЗМЕНЕНИЯ В ЛИЧНОЙ МИНИ-КАРТОЧКЕ ИГРОКА –
– context_menu_playercard.js –
[~] Check: новое условие в проверке на возможность пригласить игрока в лобби. Теперь, если у Вас нет праймстатуса, игрока можно пригласить только если он есть у вас в друзьях.
–На этом всё. Если Вам нравятся подобные разборы — напишите об этом в теме. Вопрос о том, нужны ли кому-то подобные темы, остаётся открытым.
– ИЗМЕНЕНИЯ В МАГАЗИНЕ ГЛАВНОГО МЕНЮ –
– mainmenu_store.xml –
– 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 –
_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.
Если мы завалим обе проверки, то у нас не будет возможности пригласить человека в пати. */
–
Пожалуйста, авторизуйтесь для просмотра ссылки.
–
Последнее редактирование: