Найти в Дзене
BlockPark

Квесты и награды

Сделаем рабочий мини-квест: «Собери 5 монет» с прогрессом, кнопкой «Забрать награду» и проверкой на сервере. Формат — Текст + код. Если в проекте уже есть «сбор монет» — просто в нужном месте вызовите событие CoinCollected. Код ниже это учитывает. ReplicatedStorage → Folder Shared → ModuleScript QuestConfig ReplicatedStorage → Folder Remotes
Создайте: Если у вас уже есть своя архитектура событий — просто подмените имена в коде. ServerScriptService → Script QuestServer Если у вас её ещё нет, добавьте монетку с ProximityPrompt и при подборе: Workspace → Part Coin → Script StarterGui → ScreenGui QuestsUI → Frame Root (центр, ~420×220)
Внутри Root: LocalScript внутри QuestsUI Готово: у вас есть каркас геймификации и вовлечения — квест с прогрессом и наградой. #roblox #lua 💬Telegram | 📹YouTube | 💳Boosty
Оглавление

Сделаем рабочий мини-квест: «Собери 5 монет» с прогрессом, кнопкой «Забрать награду» и проверкой на сервере. Формат — Текст + код.

Что создаём

  • Конфиг квеста (название, цель, награда).
  • Серверный менеджер квестов: считает прогресс, валидирует, выдаёт награды.
  • Простое UI: показывает прогресс и кнопку «Забрать».
  • Событие «монета собрана», которое можно триггерить из любого места вашей игры.
Если в проекте уже есть «сбор монет» — просто в нужном месте вызовите событие CoinCollected. Код ниже это учитывает.

1) Конфиг квеста

ReplicatedStorage → Folder Shared → ModuleScript QuestConfig

-2

2) Общие события (Remotes)

ReplicatedStorage → Folder Remotes

Создайте:

  • Folder Remotes
  • RemoteEvent Quest_ProgressToClient
  • RemoteEvent Quest_Claim
  • RemoteEvent QuestEvents (внутри него создадим BindableEvent на сервере)

    И
    RemoteEvent CoinCollected (клиент/сервер не вызывают напрямую — мы будем испускать его на сервере из логики сбора монеты).
Если у вас уже есть своя архитектура событий — просто подмените имена в коде.

3) Серверный менеджер квестов

ServerScriptService → Script QuestServer

-3

4) Простая логика «сбора монет» (демо)

Если у вас её ещё нет, добавьте монетку с ProximityPrompt и при подборе:

  • увеличьте leaderstats.Coins
  • дерните событие CoinCollected (сервер)

Workspace → Part Coin → Script

-4

5) UI квеста: прогресс и «Забрать»

StarterGui → ScreenGui QuestsUI → Frame Root (центр, ~420×220)

Внутри Root:

  • TextLabel Title — название квеста
  • TextLabel Progress — 0/5
  • TextButton Claim — «Забрать награду» (изначально Interactable=false, AutoButtonColor=false)

LocalScript внутри QuestsUI

-5

Как это работает

  1. При подборе монеты сервер вызывает track(player, "CoinCollected").
  2. Менеджер квестов обновляет прогресс и шлёт состояние клиенту.
  3. Когда progress >= goal, клиент видит активную кнопку «Забрать».
  4. По нажатию отправляется Quest_Claim → сервер проверяет и выдаёт награду.

Анти-чит и надёжность

  • Игрок не может сам себе выдать награду: сервер проверяет completed и claimed.
  • Ивент «собрал монету» дергается на сервере (не доверяем клиенту).
  • Можно хранить прогресс в DataStore (см. вашу предыдущую статью «Как сохранить прогресс игрока»): сохраняйте SESSION[player] в профиле.

Идеи для развития

  • Несколько квестов → сетка в UI, переключение вкладок.
  • Типы триггеров: убийства врагов, прохождение чекпоинтов, время в игре, крафт предметов.
  • Daily/Weekly квесты (сброс по серверному времени).
  • Редкие награды: питомцы, скины, лутбоксы — всё выдаётся только на сервере.
  • Эффекты: всплывающий текст «+50», звук, анимация кнопки при получении.

Готово: у вас есть каркас геймификации и вовлечения — квест с прогрессом и наградой.

#roblox #lua

💬Telegram | 📹YouTube | 💳Boosty