#roblox
Вопрос:
Мне нужна помощь со сценарием Roblox! Видите ли, я новичок и учусь использовать операторы if. Они просты, но я хочу добавить «Экземпляр. Новое(«Часть») вот пример:
если игра.Освещение.TimeOfDay == «12:00:00», затем локальная часть = Экземпляр.новый(«Часть») конец
Сработает ли это? кроме того, есть ли способ, которым я могу получить фонарик, например, когда становится 3 часа ночи, это также возможно?
Ответ №1:
Возможно ли это, например.новое, которое будет добавлено в инструкцию if
Самый простой ответ-да, это возможно. Но лучшим названием для вашего вопроса было бы :
Как я могу предоставить игроку инструмент в определенное время?
И ваш код будет работать только в том случае, если он был выполнен в ту самую секунду, когда время было «03:00:00». Поэтому, поскольку это маловероятно, вам нужен способ многократно проверять время.
В других ответах рекомендуется использовать цикл с wait(seconds)
функцией, чтобы повторно проверять, сколько сейчас времени. Но это приводит к проблеме, когда, если интервал ожидания слишком велик, вы можете перейти от «02:59:59» к «03:00:01» и пропустить тот решающий момент, когда это точно «03:00:00». В качестве альтернативы, если интервал ожидания слишком мал, ваш код может сработать несколько раз, когда время «03:00:00». Поэтому вам нужно что-то, чтобы убедиться, что ваш код срабатывает только один раз, когда наступает подходящее время. Я бы рекомендовал использовать освещение.Вместо этого изменился сигнал. Таким образом, вместо того, чтобы вы спрашивали, который час, он сообщит вам, когда он изменится.
Следующее, что нужно иметь в виду, — это освещение.Время дня не изменится, пока вы не скажете об этом. Таким образом, время может двигаться так быстро или так медленно, как вы говорите, но вы должны написать сценарий, чтобы он изменился. Вы можете сделать это, установив освещение.Время по часам или освещение:функция SetMinutesAfterMidnight ().
Последняя часть-найти фонарик. Я бы рекомендовал просто взять один из инструментов из набора инструментов и добавить его в качестве дочернего элемента сценария.
Полный пример того, как это может выглядеть, приведен здесь. Представьте, что это сценарий в ServerScriptService, в котором в качестве дочернего элемента сценария используется инструмент «фонарик».
local Lighting = game:GetService("Lighting")
local Players = game:GetService("Players")
-- 1) grab a reference to the flashlight Tool
local flashlightTool = script.Flashlight
-- 2) create a different thread to handle time changes
spawn(function()
-- round the number to avoid floating point math issues
local oneSecond = tonumber(string.format("%.4f", 1.0 / 3600.0))
-- progress the time of day
while true do
-- to speed up time, multiply oneSecond by 2, 3, 4, 5, 6, 10, or any factor of 60
-- this will ensure that minutes are still hit on time
Lighting.ClockTime = oneSecond
wait(1.0)
end
end)
-- 3) listen for when the time of day changes
Lighting.Changed:Connect(function(propertyName)
if propertyName == "TimeOfDay" then
--print("Time of Day changed : ", Lighting.TimeOfDay)
if Lighting.TimeOfDay == "03:00:00" then
-- give everyone a flashlight
warn("IT'S 3 AM")
local players = Players:GetPlayers()
for i, player in ipairs(players) do
-- check if they already have one, and escape if they do
if player.Backpack:FindFirstChild(flashlightTool.Name) then
continue
end
local flashlight = flashlightTool:Clone()
flashlight.Parent = player.Backpack
end
end
end
end)
Ответ №2:
Поместите этот код и вставьте его в localscript // StarterGui почему я поставил циклы? так что он может проверить, когда изменится время. Вам нужен пульт дистанционного управления, чтобы он был виден каждому игроку в вашей игре, если вы не используете пульты дистанционного управления, он виден только одному игроку
https://developer.roblox.com/en-us/articles/Remote-Functions-and-Events
delay(0, function()
while true do wait(.1)
if game.Lighting.TimeOfDay == "12:00:00" then
print("Time Changed")
--Put Your Code Here
end
end
end)