diff --git a/src/community/docsGames.js b/src/community/docsGames.js index 59fb4ac..40a4d65 100644 --- a/src/community/docsGames.js +++ b/src/community/docsGames.js @@ -364,8 +364,8 @@ export const GAMES = [ mechanics: ['game.leaderstats.define / me.add', 'HUD-таблица топ-10 (сортировка по primary)', 'game.achievements.define / unlock', 'bindToStat — авто-награда по статy', 'toast 4 редкости + очередь', 'кубок → страница достижений', 'сохранение в БД (savegame)'], previewShot: 'guide-leaderstats-scene.png', openProjectId: 2616, ready: true }, { id: 'guide-floaters', num: 64, group: 'g5', stars: 2, icon: 'sparkles', - title: 'Тренировочный полигон — цифры урона', - desc: 'Всплывающие цифры урона над целью (как в Roblox-RPG): красный урон, жёлтый крит с pop-эффектом, зелёный хил, синяя мана, серый «Промах», стек «×N» и комикс-стиль BAM!/KAPOW!.', - mechanics: ['game.fx.damageFloater(pos, value, opts)', 'isCrit / isHeal / isMana / isMiss — цвет', 'подъём + плавное затухание + покачивание', 'crit — pop-эффект (scale 1→1.3→1)', 'stackKey — стек одинаковых в «×N»', 'comicStyle — BAM!/KAPOW! на звезде', 'object pool 30 планов (без лагов)'], + title: 'Зомби-арена — бластер и цифры урона', + desc: 'Шутер: волны зомби бегут к игроку, бластер их отстреливает, над целью всплывают облачка урона. Авто-floater над любым мобом одной строкой + ручной game.fx.damageFloater (крит/хил/мана/промах/стек/комикс).', + mechanics: ['game.fx.damageFloater(pos, value, opts)', 'game.fx.autoMobFloaters(true) — облачко над NPC при уроне', 'game.player.giveTool(\'blaster-...\') — бластер', 'бластер от 3-го лица — в точку клика', 'spawnNpc + follow(\'player\') — зомби-волны', 'isCrit/isHeal/isMana/isMiss, стек ×N, комикс', 'object pool 30 планов (без лагов)'], previewShot: 'guide-floaters-scene.png', openProjectId: 2676, ready: true }, ]; diff --git a/src/community/docsLessons.jsx b/src/community/docsLessons.jsx index c3281fe..8ef5032 100644 --- a/src/community/docsLessons.jsx +++ b/src/community/docsLessons.jsx @@ -8787,68 +8787,81 @@ game.achievements.unlock('first_coin');`} <>
- Тренировочный полигон с манекенами. При ударе над целью - всплывает цифра урона — как в Roblox-RPG (Pet Sim, Anime - Adventures): красный обычный урон, жёлтый КРИТ с подскоком, - зелёный хил, синяя мана, серый «Промах». Одинаковые удары - собираются в стек «×N», а в комикс-режиме вместо цифр — BAM! и KAPOW!. + Мини-шутер: волны зомби бегут к игроку, ты отстреливаешь + их из бластера, а над каждой целью всплывает облачко + урона — как в Roblox-RPG (Pet Sim, Anime Adventures). Зомби + гибнут, счётчик растёт, волны усиливаются.
-Одна строка рисует всплывающую цифру в нужной точке мира:
-{`game.fx.damageFloater(position, value, opts)`}
- {'{x,y,z}'}, ссылка на объект или 'player';+ Две строки превращают игру в шутер с фидбеком урона: выдаём + бластер и включаем авто-floater — теперь любой урон + по NPC сам рисует «-N» над целью, вручную вызывать ничего не надо. +
{`game.player.giveTool('blaster-blaster-a', { equip: true }); // бластер в руки
+game.fx.autoMobFloaters(true); // облачко урона над любым мобом при попадании`}
+
+ {`function spawnWave(n){
+ const pl = game.player.position;
+ for (let i = 0; i < n; i++){
+ const a = (i / n) * Math.PI * 2;
+ const e = game.scene.spawnNpc('skin_retro-zombie', {
+ x: pl.x + Math.cos(a)*18, z: pl.z + Math.sin(a)*18,
+ name: 'Зомби', hp: 100, speed: 2.6,
+ });
+ if (e && e.follow) e.follow('player'); // зомби преследует игрока
+ }
+}
+game.after(1.5, () => spawnWave(5));
+game.every(14, () => spawnWave(8));`}
+
+ Стрелять из бластера — ЛКМ. В режиме от 3-го лица пуля летит
+ туда, куда кликнул курсором. Попал по зомби → облачко
+ урона (благодаря autoMobFloaters), убил → засчитан.
+
Когда нужен полный контроль — рисуй цифру сам:
{`game.fx.damageFloater(pos, 25); // красный — обычный урон
game.fx.damageFloater(pos, 80, { isCrit: true }); // жёлтый, больше + подскок
game.fx.damageFloater(pos, 30, { isHeal: true }); // зелёный — лечение (+30)
game.fx.damageFloater(pos, 50, { isMana: true }); // синий — мана
game.fx.damageFloater(pos, 'Промах', { isMiss: true }); // серый текст`}
-
-
- При AOE по одной цели десятки цифр сливаются в кашу. Передай
- общий stackKey — и удары соберутся в один floater «×N».
+ position — {'{x,y,z}'}, ссылка на объект или
+ 'player'; value — число или строка.
{`for (let i = 0; i < 10; i++) {
- game.fx.damageFloater(enemy.position, 25, { stackKey: 'aoe_' + enemy.id });
-}
-// → один floater «-25 ×10» вместо десяти отдельных`}
-
- Для казуальных игр — comicStyle: true: вместо чисел
- рисуется «BAM!» (урон >50), «KAPOW!» (>100), «POW!» (крит) на
- жёлтой звезде-вспышке.
-
{`game.fx.damageFloater(pos, 120, { comicStyle: true }); // KAPOW!`}
+ {`// общий stackKey → удары сливаются в «-25 ×N» вместо кучи цифр
+game.fx.damageFloater(enemy.position, 25, { stackKey: 'aoe_' + enemy.id });
+// comicStyle → BAM! (>50), KAPOW! (>100), POW! (крит) на жёлтой звезде
+game.fx.damageFloater(pos, 120, { comicStyle: true });`}
- Без всплывающих цифр любой удар ощущается «впустую». Это базовый
- боевой фидбек: игрок видит, сколько нанёс, был ли крит, попал ли
- вообще. Сочетается с боевыми механиками и способностями.
+ Без облачек урона стрельба ощущается «впустую». Это базовый
+ боевой фидбек: игрок видит, сколько нанёс, был ли крит, попал ли.
+ Связка бластер + autoMobFloaters + волны NPC — готовый
+ каркас любого шутера/выживания.
damageFloater(pos, 15, {'{'} color:
- '#ff7a2a' {'}'}) каждые 0.5 сек 3 раза подряд — эффект
- горения (-15… -15… -15).
+ '#ff7a2a' {'}'}) каждые 0.5 сек 3 раза — эффект горения.
+ Или увеличь HP зомби и добавь крит каждый 5-й выстрел.