Цель
Проверять цену и покупку на сервере
Подготовка
ServerScriptService → Script ShopServer; Workspace → ShopPart → ProximityPrompt; серверный leaderstats.Stars из предыдущего задания.
Пошаговая работа
- Создай отдельную копию проекта для урока №75.
- ServerScriptService → Script ShopServer; Workspace → ShopPart → ProximityPrompt; серверный leaderstats.Stars из предыдущего задания.
- Задай фиксированную стоимость
- Проверь Stars и факт покупки
- Списывай валюту только при успехе
- Запусти Play и проверь результат по контрольным условиям.
Пример Luau
local prompt = workspace.ShopPart:WaitForChild("ProximityPrompt")
local PRICE = 5
local owned = {}
prompt.Triggered:Connect(function(player)
if owned[player] then return end
local stats = player:FindFirstChild("leaderstats")
local stars = stats and stats:FindFirstChild("Stars")
if not stars or stars.Value < PRICE then return end
stars.Value -= PRICE
owned[player] = true
player:SetAttribute("HasFlippers", true)
end)
game.Players.PlayerRemoving:Connect(function(p) owned[p] = nil end)Проверка
Нельзя купить без валюты и дважды
При 4 звёздах покупка не совершается, при 5 — звёзды списываются ровно один раз.
Ошибка и ограничения
Стоимость передана клиентом как истина. В учебном примере покупка действует одну сессию, а звёзды должны создаваться только сервером.
Усложнение
Добавь две покупки с разной ценой
Проверь пример в тестовой Roblox Studio перед публикацией. Используй отдельные копии проектов и не подключай два конкурирующих сохранения одновременно.
