Roblox · Дополнительное
Время суток идёт само, а фонари вдоль дороги зажигаются в 18:00 и гаснут в 6:00 — лампа светится и освещает всё вокруг.
Синим — что нужно создать.
Workspace └─ Lamps (Folder) — все фонари └─ Lamp1 (Model) ├─ Pole (Part) — столб └─ Bulb (Part) — лампа └─ PointLight (PointLight) — Range 20, Enabled выкл. ServerScriptService └─ LightsServer (Script)
Где: ServerScriptService · Script
Зачем: Сутки и фонари.
-- время суток
local Lighting = game:GetService("Lighting")
-- все фонари
local lamps = workspace:WaitForChild("Lamps")
-- секунд на сутки (0 — время не идёт)
local DAY_LENGTH = 240
-- с 18:00 до 6:00 горят
local ON_AT, OFF_AT = 18, 6
-- прошлое состояние
local wasNight = nil
-- включить или выключить все
local function SetLamps(on)
-- каждый фонарь
for _, lamp in ipairs(lamps:GetChildren()) do
-- лампа
local bulb = lamp:FindFirstChild("Bulb")
-- есть
if bulb then
-- светится или нет
bulb.Material = on and Enum.Material.Neon or Enum.Material.Glass
-- источники света внутри
for _, light in ipairs(bulb:GetChildren()) do
-- PointLight, SpotLight и SurfaceLight — все включаются одним свойством
if light:IsA("Light") then light.Enabled = on end
-- конец перебора
end
-- конец проверки
end
-- конец перебора
end
-- конец функции
end
-- постоянно
while true do
-- полсекунды
local dt = task.wait(0.5)
-- время идёт
if DAY_LENGTH > 0 then Lighting.ClockTime = (Lighting.ClockTime + 24 / DAY_LENGTH * dt) % 24 end
-- ночь?
local night = Lighting.ClockTime >= ON_AT or Lighting.ClockTime < OFF_AT
-- сменилось
if night ~= wasNight then
-- запоминаем
wasNight = night
-- переключаем только в этот момент
SetLamps(night)
-- конец проверки
end
-- конец цикла
endЗапусти Play (или Run) и убедись: