diff --git a/src/community/docsData.jsx b/src/community/docsData.jsx index e8da0db..963887f 100644 --- a/src/community/docsData.jsx +++ b/src/community/docsData.jsx @@ -1013,35 +1013,55 @@ game.self.onUntouch(() => { <>
Нарисованная кнопка сама по себе ничего не делает — - нужен скрипт. Самый простой способ — повесить скрипт - прямо на кнопку. + нужен скрипт.
{`// Скрипт висит на кнопке.
+ {`// Скрипт висит на кнопке.
// game.self — это сама кнопка.
game.self.onClick(() => {
game.ui.showText('Кнопка нажата!', 2);
game.sound.play('click');
-});`}
- - Можно и наоборот — управлять кнопкой из глобального - скрипта, если найти её по имени: -
+});`}} + lua={{`-- Скрипт висит на кнопке (TextButton)
+-- script.Parent — это сама кнопка.
+local btn = script.Parent
+
+btn.MouseButton1Click:Connect(function()
+ print("Кнопка нажата!")
+end)`}}
+ />
+ Можно и наоборот — управлять кнопкой из глобального скрипта:
{`// Находим кнопку по имени и вешаем на неё клик
+ {`// Находим кнопку по имени и вешаем на неё клик
const btnId = game.gui.find('Кнопка старта');
game.gui.onClick(btnId, () => {
game.ui.showText('Игра началась!', 2);
- // спрятать кнопку после нажатия
- game.gui.hide(btnId);
-});`}
+ game.gui.hide(btnId); // спрятать кнопку после нажатия
+});`}}
+ lua={{`local Players = game:GetService("Players")
+local player = Players.LocalPlayer
+local gui = player:WaitForChild("PlayerGui")
+
+-- Находим кнопку по имени (она лежит где-то в PlayerGui)
+local btn = gui:FindFirstChild("Кнопка старта", true)
+
+btn.MouseButton1Click:Connect(function()
+ print("Игра началась!")
+ btn.Visible = false -- спрятать кнопку
+end)`}}
+ />
- Что тут происходит: game.gui.find ищет
- элемент по имени и возвращает его id («адрес»).
- game.gui.onClick вешает на этот id действие.
- game.gui.hide прячет кнопку, чтобы её нельзя
- было нажать второй раз.
+ JS: game.gui.find ищет элемент по имени.
+ game.gui.onClick вешает действие, game.gui.hide прячет.
+
+ Lua: gui:FindFirstChild(name, true) ищет рекурсивно
+ (третий аргумент true = во вложенных).
+ MouseButton1Click — стандартный сигнал клика на TextButton.
+ btn.Visible = false прячет элемент.
Поле ввода позволяет игроку напечатать ответ.
- Когда он нажмёт Enter, срабатывает событие
- onSubmit — и скрипт получает введённый текст.
+ Когда он нажмёт Enter, скрипт получает введённый текст.
{`// Игрок вводит код. Правильный код — 1234.
+ {`// Игрок вводит код. Правильный код — 1234.
const boxId = game.gui.find('Поле кода');
game.gui.onSubmit(boxId, (text) => {
if (text === '1234') {
game.ui.showText('Верно! Дверь открыта', 2);
- // двигаем дверь вверх, чтобы освободить проход
const door = game.scene.findOne('Дверь');
game.tween(door, { y: 8 }, { duration: 1 });
} else {
game.ui.showText('Неверный код', 1.5);
}
-});`}
+});`}}
+ lua={{`local Players = game:GetService("Players")
+local TweenService = game:GetService("TweenService")
+local player = Players.LocalPlayer
+local gui = player:WaitForChild("PlayerGui")
+
+-- Находим TextBox по имени
+local box = gui:FindFirstChild("Поле кода", true)
+
+-- FocusLost срабатывает когда игрок нажал Enter или ушёл с поля.
+-- Первый параметр enterPressed = true только если был Enter.
+box.FocusLost:Connect(function(enterPressed)
+ if not enterPressed then return end
+
+ if box.Text == "1234" then
+ print("Верно! Дверь открыта")
+ local door = workspace:WaitForChild("Дверь")
+ local goal = { Position = door.Position + Vector3.new(0, 8, 0) }
+ TweenService:Create(door, TweenInfo.new(1), goal):Play()
+ else
+ print("Неверный код")
+ end
+end)`}}
+ />
- Разберём построчно: onSubmit даёт переменную
- text — это то, что напечатал игрок.
- if (text === '1234') — проверяем, совпал ли
- код. Если да — открываем дверь твином (плавно поднимаем).
- Если нет — пишем «Неверный код».
+ JS-разбор: onSubmit даёт переменную
+ text — то, что напечатал игрок.
+ if (text === '1234') — проверяем код.
+
+ Lua-разбор: на TextBox сигнал FocusLost
+ срабатывает когда поле теряет фокус (Enter или клик мимо).
+ Текст лежит в box.Text.
'1234' означают,
- что это текст, а не число. Игрок печатает в поле
- всегда текст, поэтому и сравнивать нужно с текстом.
+ Кавычки "1234" означают, что это
+ текст, а не число. Игрок печатает в поле всегда
+ текст, поэтому и сравнивать нужно с текстом.