Загрузка данных
Отличная идея! Магазин с интерфейсом (GUI) — это то, что делает игру по-настоящему профессиональной.
Поскольку интерфейс показывается только одному игроку (на его экране), нам понадобится немного другой подход. Мы создадим сами кнопки на экране, а затем настроим связь между экраном игрока и сервером игры, чтобы покупка засчитывалась честно.
Вот подробная пошаговая инструкция, как это сделать:
### Шаг 1: Создаем сам интерфейс (Окна и кнопки)
Сначала мы нарисуем наш магазин на экране.
1. В окне **Explorer** прокрути вниз и найди папку **StarterGui**.
2. Нажми на + рядом с **StarterGui** и выбери **ScreenGui**. Назови его ShopGui.
3. Теперь сделаем кнопку, которая будет открывать магазин. Нажми + на **ShopGui** и выбери **TextButton**.
* Перетащи эту кнопку куда-нибудь в угол экрана.
* В окне **Properties** найди свойство **Text** и напиши там "МАГАЗИН". Также можешь поставить галочку на **TextScaled**, чтобы текст был большим.
* Переименуй эту кнопку в OpenButton.
4. Теперь создадим само окно магазина. Нажми + на **ShopGui** и выбери **Frame**.
* Растяни его по центру экрана (это будет фон магазина).
* Переименуй его в ShopFrame.
5. Внутрь этого окна нам нужны две кнопки: "Купить" и "Закрыть".
* Нажми + на **ShopFrame** и добавь **TextButton**. Переименуй её в BuyButton, а в свойстве **Text** напиши "Купить силу (100 монет)".
* Нажми + на **ShopFrame** и добавь еще одну **TextButton**. Переименуй её в CloseButton, а текст сделай "Х" (это будет кнопка закрытия).
6. Когда настроишь красоту, выдели **ShopFrame** в Explorer, найди в окне Properties свойство **Visible** и **убери галочку**. Окно исчезнет (оно появится, когда мы нажмем на кнопку открытия).
### Шаг 2: Создаем связной канал (RemoteEvent)
Чтобы интерфейс мог сказать серверу: "Эй, этот игрок хочет купить улучшение!", нам нужен специальный канал связи.
1. В окне **Explorer** найди папку **ReplicatedStorage**.
2. Нажми на + и выбери **RemoteEvent**.
3. Переименуй его в BuyUpgradeEvent.
### Шаг 3: Оживляем кнопки (Локальный скрипт)
Теперь заставим кнопки интерфейса работать.
1. Нажми + на твой **ShopGui** и добавь **LocalScript** (именно LocalScript, так как он работает с интерфейсом конкретного игрока).
2. Вставь в него этот код:
```lua
local shopGui = script.Parent
local openButton = shopGui:WaitForChild("OpenButton")
local shopFrame = shopGui:WaitForChild("ShopFrame")
local closeButton = shopFrame:WaitForChild("CloseButton")
local buyButton = shopFrame:WaitForChild("BuyButton")
-- Ищем наш канал связи
local replicatedStorage = game:GetService("ReplicatedStorage")
local buyEvent = replicatedStorage:WaitForChild("BuyUpgradeEvent")
-- Функция открытия магазина
openButton.MouseButton1Click:Connect(function()
shopFrame.Visible = true
end)
-- Функция закрытия магазина
closeButton.MouseButton1Click:Connect(function()
shopFrame.Visible = false
end)
-- Функция нажатия на кнопку "Купить"
buyButton.MouseButton1Click:Connect(function()
-- Отправляем сигнал на сервер, что мы хотим купить улучшение
buyEvent:FireServer()
end)
```
### Шаг 4: Обработка покупки на сервере
Интерфейс послал сигнал, теперь сервер должен проверить, есть ли у игрока деньги, и выдать улучшение.
1. В окне **Explorer** найди папку **ServerScriptService**.
2. Нажми + и добавь обычный **Script**. (Можешь назвать его ShopServer).
3. Вставь этот код:
```lua
local replicatedStorage = game:GetService("ReplicatedStorage")
local buyEvent = replicatedStorage:WaitForChild("BuyUpgradeEvent")
local upgradeCost = 100 -- Цена улучшения
-- Эта функция сработает, когда какой-то игрок нажмет кнопку в интерфейсе
buyEvent.OnServerEvent:Connect(function(player)
-- Находим деньги и силу этого игрока
local money = player.leaderstats.Money
local power = player.Power
-- Проверяем, хватает ли денег
if money.Value >= upgradeCost then
-- Забираем деньги и даем силу
money.Value = money.Value - upgradeCost
power.Value = power.Value + 1
print(player.Name .. " успешно купил улучшение силы!")
else
print(player.Name .. " попытался купить, но денег не хватило.")
end
end)
```
**Готово!** Теперь ты можешь нажать **Play**. Если ты нажмешь на кнопку "МАГАЗИН", откроется окошко. Когда ты наберешь 100 монет (продавая камни в старом ларьке) и нажмешь "Купить" в интерфейсе, у тебя спишутся деньги, а сила добычи руды возрастет.
Старую синюю платформу (UpgradeZone) из предыдущих шагов теперь можно удалить! Получилось ли настроить интерфейс?