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 791cf2cde5 - Show all commits

View File

@ -3053,7 +3053,7 @@ game.self.onTouch(() => {
<h3 className="lessonH">Шаг 2. Главный скрипт</h3> <h3 className="lessonH">Шаг 2. Главный скрипт</h3>
<ScriptKind kind="global" /> <ScriptKind kind="global" />
<Code>{`// === ИГРА «ЗОНА ОПАСНОСТИ» — главный скрипт === <CodeBoth game="danger-zone" script="g22_main">{`// === ИГРА «ЗОНА ОПАСНОСТИ» — главный скрипт ===
let inZone = false; // игрок сейчас в красной зоне? let inZone = false; // игрок сейчас в красной зоне?
let won = false; let won = false;
@ -3084,7 +3084,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>inZone</code> флажок «игрок внутри красной <li><code>inZone</code> флажок «игрок внутри красной
@ -3105,7 +3105,7 @@ game.onMessage('win', () => {
<h3 className="lessonH">Шаг 3. Скрипт зоны опасности</h3> <h3 className="lessonH">Шаг 3. Скрипт зоны опасности</h3>
<ScriptKind kind="object" on="красную зону" /> <ScriptKind kind="object" on="красную зону" />
<Code>{`// === Скрипт зоны опасности === <CodeBoth game="danger-zone" script="g22_zone">{`// === Скрипт зоны опасности ===
// onTouch игрок вошёл, onUntouch вышел. // onTouch игрок вошёл, onUntouch вышел.
game.self.onTouch(() => { game.self.onTouch(() => {
@ -3113,7 +3113,7 @@ game.self.onTouch(() => {
}); });
game.self.onUntouch(() => { game.self.onUntouch(() => {
game.broadcast('zone-leave'); game.broadcast('zone-leave');
});`}</Code> });`}</CodeBoth>
<p> <p>
Здесь важна <b>пара событий</b>: <code>onTouch</code> Здесь важна <b>пара событий</b>: <code>onTouch</code>
срабатывает, когда игрок входит в зону, а срабатывает, когда игрок входит в зону, а
@ -3123,13 +3123,13 @@ game.self.onUntouch(() => {
<h3 className="lessonH">Шаг 4. Скрипт аптечки</h3> <h3 className="lessonH">Шаг 4. Скрипт аптечки</h3>
<ScriptKind kind="object" on="зелёную аптечку" /> <ScriptKind kind="object" on="зелёную аптечку" />
<Code>{`// === Скрипт аптечки === <CodeBoth game="danger-zone" script="g22_heal">{`// === Скрипт аптечки ===
game.self.onTouch(() => { game.self.onTouch(() => {
game.player.heal(60); game.player.heal(60);
game.ui.showText('+60 HP', 1.5); game.ui.showText('+60 HP', 1.5);
game.sound.play('pickup'); game.sound.play('pickup');
game.self.delete(); game.self.delete();
});`}</Code> });`}</CodeBoth>
<p> <p>
<code>game.player.heal(60)</code> добавляет игроку <code>game.player.heal(60)</code> добавляет игроку
60 единиц здоровья. Аптечку взяли один раз 60 единиц здоровья. Аптечку взяли один раз
@ -3138,10 +3138,10 @@ game.self.onTouch(() => {
<h3 className="lessonH">Шаг 5. Скрипт финиша и проверка</h3> <h3 className="lessonH">Шаг 5. Скрипт финиша и проверка</h3>
<ScriptKind kind="object" on="зелёный финиш" /> <ScriptKind kind="object" on="зелёный финиш" />
<Code>{`// === Скрипт финиша === <CodeBoth game="danger-zone" script="g22_finish">{`// === Скрипт финиша ===
game.self.onTouch(() => { game.self.onTouch(() => {
game.broadcast('win'); game.broadcast('win');
});`}</Code> });`}</CodeBoth>
<ul> <ul>
<li>подбери зелёную аптечку +60 HP;</li> <li>подбери зелёную аптечку +60 HP;</li>
<li>в красной зоне здоровье тает каждые 0.6 секунды;</li> <li>в красной зоне здоровье тает каждые 0.6 секунды;</li>