-- Script inside VehicleSeat
local seat = script.Parent
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local ALLOWED = {
wereki = true,
derino = true,
}
-- Sound (ищем внутри VehicleSeat)
local sound = seat:FindFirstChildWhichIsA("Sound", true)
-- Все MeshParts по имени "RS"
local rsParts = {}
for _, obj in ipairs(seat:GetDescendants()) do
if obj:IsA("MeshPart") and obj.Name == "RS" then
table.insert(rsParts, obj)
end
end
if #rsParts == 0 then
warn('Не найдено MeshPart с именем "RS" внутри VehicleSeat.')
end
-- сохраним исходную прозрачность
local originalTransparency = {}
for _, p in ipairs(rsParts) do
originalTransparency[p] = p.Transparency
end
local flashing = false
local function flashRS()
if flashing then return end
flashing = true
-- светим (ставим 0), потом возвращаем оригинал
task.spawn(function()
for i = 1, 6 do
for _, p in ipairs(rsParts) do
p.Transparency = 0
end
task.wait(0.12)
for _, p in ipairs(rsParts) do
p.Transparency = originalTransparency[p] or 0
end
task.wait(0.08)
end
flashing = false
end)
end
-- Проверка при попытке сесть / когда изменяется Occupant
local function enforce()
local humanoid = seat.Occupant
if not humanoid then return end
local character = humanoid.Parent
local player = Players:GetPlayerFromCharacter(character)
if not player then return end
if ALLOWED[player.Name] then
return
end
-- сигнал тревоги
if sound then
sound:Play()
end
flashRS()
-- БЕЗ вреда: просто высаживаем неразрешённого игрока
-- (если сид будет с физикой, посадка сразу отменится)
seat:Sit(nil)
end
seat:GetPropertyChangedSignal("Occupant"):Connect(enforce)
enforce()