feat: 50 игр на Lua + импорт Roblox для всех + поддержка Lua в плеере #39

Merged
min merged 215 commits from feat/lua-50-games-bundle into main 2026-06-09 21:59:25 +00:00
Showing only changes of commit 1a3c8e66e6 - Show all commits

View File

@ -1710,7 +1710,7 @@ game.self.onTouch(() => {
<h3 className="lessonH">Шаг 2. Главный скрипт</h3> <h3 className="lessonH">Шаг 2. Главный скрипт</h3>
<ScriptKind kind="global" /> <ScriptKind kind="global" />
<Code>{`// === ИГРА «ТОРГОВЕЦ» — главный скрипт === <CodeBoth game="trader" script="g13_main">{`// === ИГРА «ТОРГОВЕЦ» — главный скрипт ===
game.ui.showText('Поговори с торговцем — нажми E у прилавка', 4); game.ui.showText('Поговори с торговцем — нажми E у прилавка', 4);
@ -1759,7 +1759,7 @@ game.onMessage('win', () => {
const p = game.player.position; const p = game.player.position;
game.scene.spawnParticles('confetti', game.scene.spawnParticles('confetti',
{ x: p.x, y: p.y + 3, z: p.z }, { duration: 3, count: 3 }); { x: p.x, y: p.y + 3, z: p.z }, { duration: 3, count: 3 });
});`}</Code> });`}</CodeBoth>
<p>Разберём:</p> <p>Разберём:</p>
<ul> <ul>
<li><code>game.scene.spawnNpc('character-a', опции)</code> <li><code>game.scene.spawnNpc('character-a', опции)</code>
@ -1775,30 +1775,30 @@ game.onMessage('win', () => {
<h3 className="lessonH">Шаг 3. Скрипт прилавка</h3> <h3 className="lessonH">Шаг 3. Скрипт прилавка</h3>
<ScriptKind kind="object" on="прилавок" /> <ScriptKind kind="object" on="прилавок" />
<Code>{`// === Скрипт прилавка === <CodeBoth game="trader" script="g13_counter">{`// === Скрипт прилавка ===
game.self.onInteract(() => { game.self.onInteract(() => {
game.broadcast('talk'); // сообщаем главному скрипту: говорим с торговцем game.broadcast('talk'); // сообщаем главному скрипту: говорим с торговцем
}, { }, {
text: 'Поговорить с торговцем', text: 'Поговорить с торговцем',
distance: 4 distance: 4
});`}</Code> });`}</CodeBoth>
<h3 className="lessonH">Шаг 4. Скрипт двери</h3> <h3 className="lessonH">Шаг 4. Скрипт двери</h3>
<ScriptKind kind="object" on="дверь" /> <ScriptKind kind="object" on="дверь" />
<Code>{`// === Скрипт двери === <CodeBoth game="trader" script="g13_door">{`// === Скрипт двери ===
game.self.onInteract(() => { game.self.onInteract(() => {
game.broadcast('openDoor'); // сообщаем главному скрипту: открыть дверь game.broadcast('openDoor'); // сообщаем главному скрипту: открыть дверь
}, { }, {
text: 'Открыть дверь', text: 'Открыть дверь',
distance: 4 distance: 4
});`}</Code> });`}</CodeBoth>
<h3 className="lessonH">Шаг 5. Скрипт финиша и проверка</h3> <h3 className="lessonH">Шаг 5. Скрипт финиша и проверка</h3>
<ScriptKind kind="object" on="зелёный финиш" /> <ScriptKind kind="object" on="зелёный финиш" />
<Code>{`// === Скрипт финиша === <CodeBoth game="trader" script="g13_finish">{`// === Скрипт финиша ===
game.self.onTouch(() => { game.self.onTouch(() => {
game.broadcast('win'); // сообщаем главному скрипту о победе game.broadcast('win'); // сообщаем главному скрипту о победе
});`}</Code> });`}</CodeBoth>
<ul> <ul>
<li>подойди к прилавку, нажми <kbd className="kbd">E</kbd> <li>подойди к прилавку, нажми <kbd className="kbd">E</kbd>
торговец заговорит и даст ключ;</li> торговец заговорит и даст ключ;</li>