Roblox · Песочница · урок 10
Меню FAQ с подсказками по всем механикам, погода плагином Weather System, ограничение числа игроков — и публикация.
Синим — что добавляем на этом уроке.
StarterGui └─ FaqGui (ScreenGui) — ResetOnSpawn выкл. ├─ OpenFaq (TextButton) — «?» └─ FaqFrame (Frame) — Visible выкл. ├─ FaqText (TextLabel) — заголовок ├─ CloseButton (TextButton) ├─ ListFrame (ScrollingFrame) — кнопки тем: Keys, Pickaxe, Axe, Craft, Hunger, Sleep, Enemy ├─ InfoFrame (Frame) — Object, Info, BackButton; Visible выкл. └─ FaqScript (LocalScript)
Где: StarterGui → FaqGui → FaqFrame · LocalScript
Зачем: Меню подсказок.
-- окно подсказок
local faqFrame = script.Parent
-- кнопка «?»
local openButton = faqFrame.Parent:WaitForChild("OpenFaq")
-- список тем (в методичке по ошибке FaqList)
local listFrame = faqFrame:WaitForChild("ListFrame")
-- текст темы
local infoFrame = faqFrame:WaitForChild("InfoFrame")
-- тема → подсказка; имя кнопки = ключ
local INFO = {
-- клавиши
Keys = "Shift — бег, C — присесть, F — полёт, I — инвентарь, R — повернуть блок, Q — отменить размещение.",
-- кирка
Pickaxe = "Кирка ломает камни и каменные блоки. Изнашивается: прочность видно по числу ударов.",
-- топор
Axe = "Топор рубит деревья, деревянные блоки и заборы. Срубленное дерево вырастает через минуту.",
-- крафт
Craft = "Подойди к верстаку и нажми E. Выбери рецепт — если ингредиентов хватает, предмет появится в инвентаре или рюкзаке.",
-- голод
Hunger = "Сытость падает со временем. На нуле уходит здоровье. Сорви яблоко с яблони и съешь его.",
-- сон
Sleep = "Ночью ляг на кровать: сон перемотает время до утра и восстановит здоровье. Прыжок — встать.",
-- противник
Enemy = "Зомби патрулирует лес и обходит стены. Заметив тебя, бежит быстрее. Держись подальше или построй укрытие.",
-- конец таблицы
}
-- «?»
openButton.MouseButton1Click:Connect(function()
-- открыть / закрыть
faqFrame.Visible = not faqFrame.Visible
-- конец функции
end)
-- закрыть
faqFrame:WaitForChild("CloseButton").MouseButton1Click:Connect(function() faqFrame.Visible = false end)
-- назад к темам
infoFrame:WaitForChild("BackButton").MouseButton1Click:Connect(function()
-- прячем текст
infoFrame.Visible = false
-- показываем список
listFrame.Visible = true
-- конец функции
end)
-- кнопки тем
for _, button in ipairs(listFrame:GetChildren()) do
-- только кнопки
if button:IsA("TextButton") then
-- клик по теме
button.MouseButton1Click:Connect(function()
-- заголовок
infoFrame.Object.Text = button.Text
-- текст
infoFrame.Info.Text = INFO[button.Name] or "Скоро здесь будет подсказка."
-- прячем список
listFrame.Visible = false
-- показываем текст
infoFrame.Visible = true
-- конец функции
end)
-- конец проверки
end
-- конец перебора
endЗапусти Play (или Run) и убедись: