rustbase.shop Документация
Панель ↗

JS-API витрины

Свой JavaScript (тарифы «База»/«Про», раздел Внешний вид → Продвинутая кастомизация) исполняется на витрине и имеет доступ к объекту window.RB.

Готовность приложения

Витрина загружает данные асинхронно. Дождись готовности перед работой с состоянием:

js
function main() {
  // твой код — состояние уже загружено
  console.log(RB.getState());
}

if (window.isAppReady) main();
else window.addEventListener('rb:ready', main);

Состояние: RB.getState()

Возвращает снимок (копию) состояния витрины:

js
const { player, shop, products, servers } = RB.getState();
ПолеОписание
playerТекущий игрок или null, если не авторизован
shopКонфиг магазина (имя, тема, ссылки, соцсети, бонусы)
productsМассив товаров каталога
serversМассив серверов мониторинга

Объект player:

ПолеОписание
steamidSteamID64
nameИмя
avatarURL аватара
balanceБаланс в копейках
integrations.SteamIdSignПодпись для проверки игрока во внешнем API

События

Подпишись через RB.on(name, cb) (или window.addEventListener):

СобытиеКогда
rb:readyВитрина загружена и готова
rb:playerИгрок загружен (detail.player)
rb:routeСменился раздел (detail.view: shop/wallet/purchases/page)
rb:shop:renderedПерерисована сетка товаров
js
RB.on('rb:route', (e) => {
  if (e.detail.view === 'shop') console.log('Открыт магазин');
});

RB.on возвращает функцию отписки; есть и RB.off(name, cb).

SteamIdSign

Если показываешь данные из своего внешнего API и нужно убедиться, что запрос идёт от настоящего игрока — используй integrations.SteamIdSign. Подпись считается сервером по алгоритму:

text
SteamIdSign = SHA256(secretKey + "-" + steamId)

где secretKey — ключ магазина (API-ключ плагина). Передавай подпись вместе с запросом в свой бэкенд и проверяй её там тем же алгоритмом — сам ключ при этом не раскрывается.

Конфигурация поведения витрины (число колонок, суммы пополнения и т.п.) — в статье Конфиг-переменные. Практические примеры — в Рецептах.