-- Script внутри VehicleSeat
local seat = script.Parent
local Players = game:GetService("Players")
local ALLOWED = {
AS = true,
QP = true
}
-- Sound (должен быть внутри VehicleSeat или workspace — укажите корректно)
local sound = seat:FindFirstChildWhichIsA("Sound")
if not sound then
warn("Добавьте Sound внутрь VehicleSeat.")
end
-- Все MeshParts с именем "RK" в дереве VehicleSeat/родителей
local rkParts = {}
for _, obj in ipairs(seat:GetDescendants()) do
if obj:IsA("MeshPart") and obj.Name == "RK" then
table.insert(rkParts, obj)
end
end
if #rkParts == 0 then
warn('Не найдено MeshPart с именем "RK" внутри VehicleSeat.')
end
local function setRKVisible(alphaTimeOn, flashes)
-- мигание через Transparency
for _, p in ipairs(rkParts) do
p:SetAttribute("RK_OrigTrans", p.Transparency)
end
for i = 1, flashes do
task.wait(alphaTimeOn)
for _, p in ipairs(rkParts) do
local orig = p:GetAttribute("RK_OrigTrans")
p.Transparency = 0 -- показываем
end
task.wait(alphaTimeOn)
for _, p in ipairs(rkParts) do
local orig = p:GetAttribute("RK_OrigTrans")
p.Transparency = orig or 0
end
end
end
local function onOccupantChanged()
local humanoid = seat.Occupant
if not humanoid then return end
local player = Players:GetPlayerFromCharacter(humanoid.Parent)
if not player then return end
if ALLOWED[player.Name] then
return
end
-- Неразрешённый игрок: сигнализацию включаем
if sound then
sound:Play()
end
task.spawn(function()
setRKVisible(0.15, 4) -- время/кол-во миганий подберите
end)
-- ВАЖНО: вместо “откидывания”/вреда можно сделать “мягкий блок”:
-- 1) не давать удерживать сиденье (например, посадить в ту же игру, но без физического насилия),
-- 2) или телепортировать в SafeSpawn (если скажете куда).
end
seat:GetPropertyChangedSignal("Occupant"):Connect(onOccupantChanged)