Цель
Защитить взаимодействие
Подготовка
ReplicatedStorage → RemoteEvent OpenDoor; Workspace → Door; ServerScriptService → Script.
Пошаговая работа
- Создай отдельную копию проекта для урока №74.
- ReplicatedStorage → RemoteEvent OpenDoor; Workspace → Door; ServerScriptService → Script.
- Сделай кнопку открытия двери
- На сервере проверь расстояние HumanoidRootPart до двери
- Отклони дальний запрос
- Запусти Play и проверь результат по контрольным условиям.
Пример Luau
local event = game.ReplicatedStorage:WaitForChild("OpenDoor")
local door = workspace:WaitForChild("Door")
local lastUse = {}
event.OnServerEvent:Connect(function(player)
local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if not root or (root.Position-door.Position).Magnitude > 10 then return end
local now = os.clock()
if now - (lastUse[player] or -100) < 1 then return end
lastUse[player] = now
door.CanCollide = false
door.Transparency = 0.5
end)
game.Players.PlayerRemoving:Connect(function(p) lastUse[p] = nil end)Проверка
Слишком далёкий игрок не открывает дверь
Игрок с расстояния более 10 studs не откроет дверь; спам запросов ограничен.
Ошибка и ограничения
Проверяется расстояние только на клиенте. Проверка только в LocalScript не защищает сервер от поддельного запроса.
Усложнение
Добавь сообщение об отказе
Проверь пример в тестовой Roblox Studio перед публикацией. Используй отдельные копии проектов и не подключай два конкурирующих сохранения одновременно.
