Compare commits
No commits in common. "c8a961815e45de281487a3de9b8b98e9947628ff" and "f46e6f01020dd6b1e3b6108d4afa38816102b788" have entirely different histories.
c8a961815e
...
f46e6f0102
@ -368,9 +368,4 @@ export const GAMES = [
|
|||||||
desc: 'Шутер: волны зомби бегут к игроку, бластер их отстреливает, над целью всплывают облачка урона. Авто-floater над любым мобом одной строкой + ручной game.fx.damageFloater (крит/хил/мана/промах/стек/комикс).',
|
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 планов (без лагов)'],
|
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 },
|
previewShot: 'guide-floaters-scene.png', openProjectId: 2676, ready: true },
|
||||||
{ id: 'guide-inventory', num: 65, group: 'g5', stars: 2, icon: 'box',
|
|
||||||
title: 'Сбор и сортировка — инвентарь с drag-drop',
|
|
||||||
desc: 'Полный инвентарь как в Minecraft/RPG: сетка 8×5 + хотбар 9, стаки, 5 редкостей (цвет рамки), перетаскивание мышью, ПКМ-меню, tooltip, сортировка. Собираешь предметы — стаки растут.',
|
|
||||||
mechanics: ['game.items.define([...]) — предметы (редкость/стак/иконка)', 'game.inventory.give / take', 'окно по I — сетка 8×5 + хотбар 9 (1-9)', 'drag-drop между слотами (swap + merge)', 'стаки с maxStack, 5 редкостей', 'ПКМ-меню: использовать / разделить / выбросить', 'tooltip + сортировка по редкости'],
|
|
||||||
previewShot: 'guide-inventory-scene.png', openProjectId: 2685, ready: true },
|
|
||||||
];
|
];
|
||||||
|
|||||||
@ -8867,89 +8867,6 @@ game.fx.damageFloater(pos, 120, { comicStyle: true });`}</Code>
|
|||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
||||||
'guide-inventory': {
|
|
||||||
body: (
|
|
||||||
<>
|
|
||||||
<h3 className="lessonH">Что получится</h3>
|
|
||||||
<p>
|
|
||||||
Полноценный инвентарь как в Minecraft и RPG: <b>сетка 8×5</b> +
|
|
||||||
<b> хотбар на 9 слотов</b>, предметы со <b>стаками</b> и
|
|
||||||
<b> редкостями</b>, перетаскивание мышью, ПКМ-меню, всплывающие
|
|
||||||
подсказки. Собираешь предметы на поляне — стаки растут, открываешь
|
|
||||||
инвентарь клавишей <b>I</b> и раскладываешь добычу.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<Shot src="guide-inventory-scene.png" wide
|
|
||||||
caption="Окно инвентаря (I): сетка 8×5 + хотбар 9. Стаки (×12 ягод), цвет рамки = редкость (голубая rare, зелёная uncommon)." />
|
|
||||||
|
|
||||||
<h3 className="lessonH">Шаг 1. Определи предметы</h3>
|
|
||||||
<p>
|
|
||||||
Каждый предмет описывается один раз: имя, иконка-эмодзи, редкость,
|
|
||||||
размер стака, эффект использования.
|
|
||||||
</p>
|
|
||||||
<ScriptKind kind="global" />
|
|
||||||
<Code>{`game.items.define([
|
|
||||||
{ id:'berry', name:'Ягоды', emoji:'🍓', rarity:'common', maxStack:16, value:2 },
|
|
||||||
{ id:'iron', name:'Руда', emoji:'⛏️', rarity:'uncommon', maxStack:16, value:8 },
|
|
||||||
{ id:'potion', name:'Зелье', emoji:'🧪', rarity:'rare', maxStack:8, onUseEffect:'heal:50' },
|
|
||||||
{ id:'sword', name:'Меч', emoji:'⚔️', rarity:'legendary', maxStack:1, value:500 },
|
|
||||||
]);`}</Code>
|
|
||||||
<p>
|
|
||||||
Редкости: <code>common</code> (серый), <code>uncommon</code>
|
|
||||||
(зелёный), <code>rare</code> (голубой), <code>epic</code>
|
|
||||||
(фиолетовый), <code>legendary</code> (золотой) — это цвет рамки слота.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3 className="lessonH">Шаг 2. Выдавай и собирай предметы</h3>
|
|
||||||
<Code>{`game.inventory.give('sword', 1); // в стартовый набор
|
|
||||||
game.inventory.give('berry', 5); // стак до maxStack, дальше — новый слот
|
|
||||||
|
|
||||||
// сбор предмета с земли (на объекте-ягоде):
|
|
||||||
game.self.onInteract(() => {
|
|
||||||
game.inventory.give('berry', 2);
|
|
||||||
game.self.delete(); // убрать собранный предмет
|
|
||||||
}, { text:'Собрать', key:'e', distance:3 });`}</Code>
|
|
||||||
<p>
|
|
||||||
Собранное попадает <b>сначала в хотбар</b> (виден внизу экрана),
|
|
||||||
одинаковые предметы складываются в стак с учётом <code>maxStack</code>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<Shot src="guide-inventory-play.png" wide
|
|
||||||
caption="Хотбар внизу наполняется собранным (меч, яблоки ×3, зелье). Подсказка «E Собрать» у ближайшего предмета." />
|
|
||||||
|
|
||||||
<h3 className="lessonH">Шаг 3. Окно инвентаря</h3>
|
|
||||||
<ul>
|
|
||||||
<li><b>I</b> — открыть/закрыть окно (Esc тоже закрывает);</li>
|
|
||||||
<li><b>Перетаскивание</b> мышью — поменять слоты местами или
|
|
||||||
слить стаки;</li>
|
|
||||||
<li><b>ПКМ</b> по слоту — меню: использовать / разделить / выбросить;</li>
|
|
||||||
<li><b>Наведение</b> — tooltip (название цветом редкости, описание, цена);</li>
|
|
||||||
<li><b>Сорт.</b> — расставить по редкости;</li>
|
|
||||||
<li><b>1-9</b> — выбрать активный слот хотбара.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<Note>
|
|
||||||
Всё хранится в движке и сериализуется в проект автоматически —
|
|
||||||
дописывать сохранение не нужно. Предметы с тегом
|
|
||||||
<code>'quest'</code> нельзя выбросить.
|
|
||||||
</Note>
|
|
||||||
|
|
||||||
<h3 className="lessonH">Почему это важно</h3>
|
|
||||||
<p>
|
|
||||||
Инвентарь — несущая конструкция RPG, выживания и симуляторов.
|
|
||||||
Сетка + хотбар + стаки + редкости — стандарт, который игроки
|
|
||||||
узнают мгновенно. Сочетается с крафтом, квестами и магазином.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<Try>
|
|
||||||
Добавь предмет <code>'apple'</code> с
|
|
||||||
<code> onUseEffect:'heal:15'</code>, положи в хотбар и нажми ПКМ →
|
|
||||||
«Использовать» — HP восстановится, яблоко убавится на 1.
|
|
||||||
</Try>
|
|
||||||
</>
|
|
||||||
),
|
|
||||||
},
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Есть ли готовый текст урока для игры с таким id. */
|
/** Есть ли готовый текст урока для игры с таким id. */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user