Помогите с кодом

Страницы: 1
RSS
Помогите с кодом
 
Хотел создать код, который выводит сообщение,
и другой код, который выводит сообщение, если переменная установлена ​​исходным кодом =)
Вместо того, чтобы выводить второе сообщение, он выводит одно дважды.
Код
:local uis = game:GetService("UserInputService")
local m1 = false
local toolequipped = falseuis.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
print("m1")
m1 = true
end
end)--// Services
local Players = game:GetService("Players")--// Variables
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()--// Functions
function ChildAdded()
if character:FindFirstChildOfClass("Tool") then
print("equipped")
toolequipped = true
end
end--// Connections
character.ChildAdded:Connect(ChildAdded)if m1 == true then
print("m1 is true")
endif toolequipped == true then
print("toolequipped is true")
end
.
 
ИИ отвечает:
Привет! Проблема в твоём коде в том, что проверки if m1 == true и if toolequipped == true выполняются мгновенно при запуске скрипта, а не тогда, когда эти переменные становятся true в будущем.

Тебе нужно переместить эти проверки внутрь соответствующих событий или создать отдельные обработчики, которые будут реагировать на изменения переменных.

Исправленный код:

lua



--// Services
local Players = game:GetService("Players")
local uis = game:GetService("UserInputService")

--// Variables
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local m1 = false
local toolequipped = false

--// Обработка клика мыши
uis.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
print("m1")
m1 = true
print("m1 is true") -- Выводим сообщение сразу когда m1 становится true
end
end)

--// Обработка появления инструмента
function ChildAdded(child)
if child:IsA("Tool") then
print("equipped")
toolequipped = true
print("toolequipped is true") -- Выводим сообщение сразу когда toolequipped становится true
end
end

character.ChildAdded:Connect(ChildAdded)

Если тебе нужно проверять переменные независимо от событий (например, по таймеру или при других условиях), используй while или task.wait():

lua



-- Альтернативный вариант: постоянная проверка через таймер
task.spawn(function()
while true do
if m1 == true then
print("m1 is true")
m1 = false -- сбрасываем, чтобы не спамило
end
if toolequipped == true then
print("toolequipped is true")
toolequipped = false -- сбрасываем, чтобы не спамило
end
task.wait() -- проверяем каждый кадр
end
end)

Главная ошибка: У тебя код шёл линейно и проверки были в глобальной области видимости, поэтому они срабатывали только один раз при запуске (когда переменные ещё были false).

Страницы: 1
Читают тему
Наверх