From 095a79cab42d9a6d9bf99970d585c71158609c15 Mon Sep 17 00:00:00 2001 From: min Date: Tue, 9 Jun 2026 21:54:09 +0300 Subject: [PATCH] =?UTF-8?q?feat(g28):=20=D0=BF=D0=BE=D0=BB=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=B0=D1=80=D0=B8=D1=82=D0=B5=D1=82=20=C2=AB?= =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=B7=D1=80=D0=B0=D1=87=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D0=B5=D0=BD=D1=8B=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JS: - showText 'Кликай по фиолетовым стенам — пройди сквозь!' - onMessage 'win' → 'Победа!' + win + confetti - 4 стены: onClick → passThrough + opacity=0.25 + click sound + showText - финиш: onTouch → broadcast 'win' Lua (паритет): - __rbxl_show_text + Sounds - BindableEvent WinReached - 4 g28_wall_N: part.Clicked → CanCollide=false + Transparency=0.75 + click Sound + showText 'Стена стала призрачной!' - g28_finish: Touched → WinReached:Fire (fired-флаг) --- src/community/docsGamesBuildersLua.js | 66 ++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/src/community/docsGamesBuildersLua.js b/src/community/docsGamesBuildersLua.js index bfce9b1..dc5babc 100644 --- a/src/community/docsGamesBuildersLua.js +++ b/src/community/docsGamesBuildersLua.js @@ -2347,14 +2347,66 @@ end)`, // ═══════════════════════════════════════════════════════════════ // ИГРА 28 — «Призрачные стены» // ═══════════════════════════════════════════════════════════════ - 'ghost-walls': { - g28_main: `-- === ИГРА «ПРИЗРАЧНЫЕ СТЕНЫ» (Lua) === -print("Некоторые стены — призрачные. Найди проход!")`, - g28_ghost: `-- === Скрипт призрачной стены (Lua) === + 'ghost-walls': (function() { + const WALL_IDS = [1, 2, 3, 4]; + const overrides = { + g28_main: `-- === ИГРА «ПРИЗРАЧНЫЕ СТЕНЫ» — главный скрипт (Lua) === +${SNIPPET_BROADCAST} + +local won = false + +__rbxl_show_text("Кликай по фиолетовым стенам — пройди сквозь!", 4) + +local winSound = Instance.new("Sound", workspace) +winSound.SoundId = "win"; winSound.Volume = 1 + +-- Финиш сообщает о победе +local winEvent = getEvent("WinReached") +winEvent.Event:Connect(function() + if won then return end + won = true + __rbxl_show_text("Победа! Ты прошёл сквозь все стены!", 5) + winSound:Play() + local px = __rbxl_player_x() + local py = __rbxl_player_y() + local pz = __rbxl_player_z() + __rbxl_spawn_particles("confetti", px, py + 3, pz, 3, 3) +end)`, + g28_finish: `-- === Скрипт финиш-зоны (Lua) === +local ReplicatedStorage = game:GetService("ReplicatedStorage") local part = script.Parent -part.CanCollide = false -part.Transparency = 0.5`, - }, +local fired = false + +part.Touched:Connect(function(hit) + if fired then return end + local h = hit.Parent and hit.Parent:FindFirstChild("Humanoid") + if not h then return end + fired = true + local ev = ReplicatedStorage:FindFirstChild("WinReached") + if ev then ev:Fire() end +end)`, + }; + // 4 фиолетовые стены — клик делает стену проходимой и полупрозрачной + const wallScript = `-- === Скрипт призрачной стены (Lua) === +local part = script.Parent +local ghost = false + +local clickSound = Instance.new("Sound", part) +clickSound.SoundId = "click"; clickSound.Volume = 0.7 + +part.Clicked:Connect(function() + if ghost then return end + ghost = true + part.CanCollide = false + part.Transparency = 0.75 + clickSound:Play() + __rbxl_show_text("Стена стала призрачной!", 1.5) +end)`; + for (const wid of WALL_IDS) { + overrides['g28_wall_' + wid] = wallScript; + } + return overrides; + })(), // ═══════════════════════════════════════════════════════════════ // ИГРА 29 — «Магазин»