feat: 50 игр на Lua + импорт Roblox для всех + поддержка Lua в плеере #39
@ -4449,7 +4449,42 @@ end)`;
|
|||||||
})(),
|
})(),
|
||||||
|
|
||||||
// ═══════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════
|
||||||
// ИГРЫ 48-50: явных Lua-версий пока нет.
|
// ИГРА 48 — «Мультиплеер: Салки»
|
||||||
|
// ═══════════════════════════════════════════════════════════════
|
||||||
|
'mp-tag': {
|
||||||
|
g48_main: `-- === ИГРА «МУЛЬТИПЛЕЕР: САЛКИ» — главный скрипт (Lua) ===
|
||||||
|
-- Это МУЛЬТИПЛЕЕРНАЯ игра. Чтобы играть с друзьями, опубликуй её
|
||||||
|
-- с галочкой «Мультиплеер» — тогда в комнату смогут зайти несколько
|
||||||
|
-- игроков. В одиночку игра показывает только правила.
|
||||||
|
|
||||||
|
local Players = game:GetService("Players")
|
||||||
|
|
||||||
|
__rbxl_show_text("Салки! Опубликуй игру для игры с друзьями", 4)
|
||||||
|
|
||||||
|
-- Показываем сколько игроков в комнате (постоянная плашка вверху)
|
||||||
|
local function refresh()
|
||||||
|
local n = #Players:GetPlayers()
|
||||||
|
__rbxl_hud_set("info", "Игроков в комнате: " .. n, 50, 8, "#ffe066", 22)
|
||||||
|
end
|
||||||
|
refresh()
|
||||||
|
|
||||||
|
-- Подписки на вход/выход
|
||||||
|
Players.PlayerAdded:Connect(function(p)
|
||||||
|
__rbxl_show_text(p.Name .. " присоединился к салкам!", 2)
|
||||||
|
refresh()
|
||||||
|
end)
|
||||||
|
Players.PlayerRemoving:Connect(function()
|
||||||
|
refresh()
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- В одиночке роли не назначаются — показываем правила
|
||||||
|
task.delay(2, function()
|
||||||
|
__rbxl_show_text("Водящий — первый зашедший. Он догоняет остальных.", 4)
|
||||||
|
end)`,
|
||||||
|
},
|
||||||
|
|
||||||
|
// ═══════════════════════════════════════════════════════════════
|
||||||
|
// ИГРЫ 49-50: явных Lua-версий пока нет.
|
||||||
// buildGameProject в docsGamesBuilders.js использует generateFallbackLua.
|
// buildGameProject в docsGamesBuilders.js использует generateFallbackLua.
|
||||||
'clicker': {
|
'clicker': {
|
||||||
g46_main: `-- === ИГРА «КЛИКЕР» — главный скрипт (Lua) ===
|
g46_main: `-- === ИГРА «КЛИКЕР» — главный скрипт (Lua) ===
|
||||||
|
|||||||
@ -6830,7 +6830,7 @@ game.self.onInteract(() => {
|
|||||||
|
|
||||||
<h3 className="lessonH">Шаг 2. Главный скрипт</h3>
|
<h3 className="lessonH">Шаг 2. Главный скрипт</h3>
|
||||||
<ScriptKind kind="global" />
|
<ScriptKind kind="global" />
|
||||||
<Code>{`// === ИГРА «КВЕСТ-ПОБЕГ» — главный скрипт ===
|
<CodeBoth game="escape-quest" script="g47_main">{`// === ИГРА «КВЕСТ-ПОБЕГ» — главный скрипт ===
|
||||||
|
|
||||||
let pressed = 0; // сколько кнопок нажато
|
let pressed = 0; // сколько кнопок нажато
|
||||||
const TOTAL = 3;
|
const TOTAL = 3;
|
||||||
@ -6862,7 +6862,7 @@ game.onMessage('escape', () => {
|
|||||||
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>pressed</code> — счётчик нажатых кнопок,
|
<li><code>pressed</code> — счётчик нажатых кнопок,
|
||||||
@ -6878,19 +6878,19 @@ game.onMessage('escape', () => {
|
|||||||
|
|
||||||
<h3 className="lessonH">Шаг 3. Скрипты кнопки и финиша</h3>
|
<h3 className="lessonH">Шаг 3. Скрипты кнопки и финиша</h3>
|
||||||
<ScriptKind kind="object" on="каждую красную кнопку" />
|
<ScriptKind kind="object" on="каждую красную кнопку" />
|
||||||
<Code>{`// === Скрипт кнопки 1 ===
|
<CodeBoth game="escape-quest" script="g47_btn_1">{`// === Скрипт кнопки 1 ===
|
||||||
let used = false;
|
let used = false;
|
||||||
game.self.onInteract(() => {
|
game.self.onInteract(() => {
|
||||||
if (used) return;
|
if (used) return;
|
||||||
used = true;
|
used = true;
|
||||||
game.scene.setColor(game.self.ref, '#22dd55'); // нажата — зелёная
|
game.scene.setColor(game.self.ref, '#22dd55'); // нажата — зелёная
|
||||||
game.broadcast('pressButton');
|
game.broadcast('pressButton');
|
||||||
}, { text: 'Нажать кнопку', distance: 3 });`}</Code>
|
}, { text: 'Нажать кнопку', distance: 3 });`}</CodeBoth>
|
||||||
<ScriptKind kind="object" on="зелёный финиш" />
|
<ScriptKind kind="object" on="зелёный финиш" />
|
||||||
<Code>{`// === Скрипт финиша ===
|
<CodeBoth game="escape-quest" script="g47_finish">{`// === Скрипт финиша ===
|
||||||
game.self.onTouch(() => {
|
game.self.onTouch(() => {
|
||||||
game.broadcast('escape');
|
game.broadcast('escape');
|
||||||
});`}</Code>
|
});`}</CodeBoth>
|
||||||
<p>
|
<p>
|
||||||
Кнопка при нажатии становится зелёной (видно, что нажата),
|
Кнопка при нажатии становится зелёной (видно, что нажата),
|
||||||
шлёт <code>game.broadcast('pressButton')</code> и больше
|
шлёт <code>game.broadcast('pressButton')</code> и больше
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user