Цель урока
Подсчитывать собранные предметы для каждого игрока отдельно.
Подготовка
Workspace → Folder Collectibles → 5 Anchored Parts с CanCollide=false. ServerScriptService → Script CollectRound.
Пошаговая работа
- Создай папку и пять деталей-наград.
- Запусти скрипт; собери предметы двумя разными персонажами.
- Проверь атрибут RoundCollected у каждого игрока.
Код Luau
В примерах с двумя скриптами помести части кода в указанные разные объекты.
local Players = game:GetService("Players")
local folder = workspace:WaitForChild("Collectibles")
local collected = {}
Players.PlayerAdded:Connect(function(player)
collected[player] = {}
player:SetAttribute("RoundCollected", 0)
end)
Players.PlayerRemoving:Connect(function(player) collected[player] = nil end)
for _, part in ipairs(folder:GetChildren()) do
if part:IsA("BasePart") then
part.Touched:Connect(function(hit)
local model = hit:FindFirstAncestorOfClass("Model")
local player = model and Players:GetPlayerFromCharacter(model)
if not player or not collected[player] then return end
if collected[player][part] then return end
collected[player][part] = true
player:SetAttribute("RoundCollected", math.min(5,
(player:GetAttribute("RoundCollected") or 0) + 1))
end)
end
endПроверяем результат
У каждого игрока собственный счётчик от 0 до 5. Предметы в этом учебном варианте остаются видимыми для всех.
Типичная ошибка
Не удаляй общую Part после сбора первым игроком: второй игрок тоже должен иметь возможность её собрать.
Дополнительное задание
Добавь сброс collected и RoundCollected перед следующим раундом.
Перед публикацией: протестируй код в Roblox Studio с двумя игроками и добавь собственные скриншоты редактора.
