Загрузка данных


Отличная идея! Магазин с интерфейсом (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) из предыдущих шагов теперь можно удалить! Получилось ли настроить интерфейс?