Исправленная версия :
while true do
local aa = math.random(5, 10) -- Случайное целое число от 5 до 10
local bb = math.random() / 1000 -- Случайное число с плавающей запятой от 0 до 0.999
wait(aa)
local atmosphere = game.Lighting:FindFirstChild("Atmosphere")
if atmosphere then
atmosphere.Density = bb
else
warn("Atmosphere не найден в Lighting!")
end
end
Улучшенная :
-- Получаем ссылку на Atmosphere один раз
local atmosphere = game.Lighting:FindFirstChild("Atmosphere")
-- Проверяем, существует ли Atmosphere
if not atmosphere then
warn("Atmosphere не найден в Lighting!")
return -- Выходим из скрипта, если Atmosphere отсутствует
end
-- Основной цикл
while true do
local aa = math.random(5, 10) -- Случайное целое число от 5 до 10
local bb = math.random() / 1000 -- Случайное число с плавающей запятой от 0 до 0.999
task.wait(aa) -- Используем task.wait для лучшей производительности
atmosphere.Density = bb -- Изменяем плотность атмосферы
end
Улучшения:
Объяснение изменений:
1. Поиск Atmosphere:
Мы ищем объект Atmosphere один раз перед циклом и проверяем его наличие. Если его нет, скрипт завершает выполнение с предупреждением.
2. Использование task.wait:
Метод task.wait более эффективен и рекомендуется использовать вместо wait, так как он лучше управляет временем ожидания.
3. Чистота кода:
Код стал чище и проще для понимания, так как мы избежали повторного поиска одного и того же объекта в каждом цикле.
while true do
local aa = math.random(5, 10) -- Случайное целое число от 5 до 10
local bb = math.random() / 1000 -- Случайное число с плавающей запятой от 0 до 0.999
wait(aa)
game.Lighting .Atmosphere.Density = bb
end