feat(studio): кит «Таблица лидеров» в Toolbox → Готовые механики

Новый кит (категория ui): определяет лидерборд (Очки primary + Время),
время идёт само, очки растут от broadcast('score'|'coins'). Сохраняется в БД.
Работает вместе со счётчиком монет/очков. Всего 47 китов.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
min 2026-06-06 10:11:18 +03:00
parent 1c976ee870
commit ba90bf5c7d

View File

@ -552,6 +552,22 @@ let score = 0;
function show(){ game.ui.set('score', '⭐ ' + score, { x:8, y:6, anchor:'top', color:'#ffd23a', size:22 }); } function show(){ game.ui.set('score', '⭐ ' + score, { x:8, y:6, anchor:'top', color:'#ffd23a', size:22 }); }
show(); show();
game.onMessage('score', (m) => { score += (m && m.add) ? m.add : 1; show(); });` }], game.onMessage('score', (m) => { score += (m && m.add) ? m.add : 1; show(); });` }],
},
{
id: 'leaderboard',
name: 'Таблица лидеров',
desc: 'Лидерборд справа-сверху (Очки/Время). Растёт от монет и очков других механик. Сохраняется в БД между сессиями. (Задача 20)',
icon: 'trophy', category: 'ui',
scripts: [{ attachTo: 'global', code:
`// Таблица лидеров: столбцы «Очки» (primary) и «Время».
game.leaderstats.define('Очки', { initial: 0, format: 'number', icon: '⭐', color: '#ffd23a', primary: true });
game.leaderstats.define('Время', { initial: 0, format: 'time', icon: '⏱', color: '#7fd0ff' });
// Время идёт само.
game.every(1, () => game.leaderstats.me.add('Время', 1));
// Любая механика, шлющая broadcast('score',{add}) или ('coins',{add}),
// автоматически добавляет очки в таблицу.
game.onMessage('score', (m) => game.leaderstats.me.add('Очки', (m && m.add) ? m.add : 1));
game.onMessage('coins', (m) => game.leaderstats.me.add('Очки', (m && m.add) ? m.add : 1));` }],
}, },
{ {
id: 'hp-bar', id: 'hp-bar',