Урок 4 из 15

Условия: if, elseif и логические операторы

Писать ветвления и правильно комбинировать условия.

Теория

Условие — это вопрос, на который код отвечает «да» или «нет». Если ответ «да», выполняется блок после then. Если нет — проверяется elseif, а если не подошло ничего, работает else.

Сравнения: == равно, ~= не равно, < > <= >=. Обрати внимание: «не равно» в Luau пишется ~=, а не !=. Один знак = — это присваивание, и в условии он вызовет ошибку.

Слова and, or и not соединяют условия. and требует, чтобы верны были оба, or — чтобы хотя бы одно, not переворачивает ответ.

  • Проверку на существование объекта пишут просто: if part then
  • Скобки в сложных условиях не роскошь, а способ не ошибиться в порядке
  • Вложенные if легко заменяются ранним выходом через return
  • Сравнивать число со строкой нельзя — будет ошибка

Пример

Скрипт решает, пускать ли игрока в комнату, по уровню и наличию ключа.

ServerScriptService/Conditions.lua
  1. local level = 7
  2. local hasKey = false
  3.  
  4. if level >= 10 then
  5. print("Проходи, уровня достаточно")
  6. elseif level >= 5 and hasKey then
  7. print("Проходи, ключ подошёл")
  8. elseif not hasKey then
  9. print("Нужен ключ")
  10. else
  11. print("Слишком низкий уровень")
  12. end

Задача

Напиши проверку здоровья: больше 70 — «в порядке», от 30 до 70 — «нужна аптечка», меньше 30 — «критично», ровно 0 — «персонаж повержен».

  • Самое узкое условие проверяй первым, иначе оно никогда не сработает
Показать решение
ServerScriptService/Solution.lua
  1. local health = 25
  2.  
  3. if health == 0 then
  4. print("персонаж повержен")
  5. elseif health < 30 then
  6. print("критично")
  7. elseif health <= 70 then
  8. print("нужна аптечка")
  9. else
  10. print("в порядке")
  11. end

Проверь себя

Как в Luau пишется «не равно»?

Показать ответ

В Luau «не равно» — это ~=. Знак != вызовет ошибку синтаксиса.

Когда истинно выражение a and b?

Показать ответ

and требует истинности обоих. Достаточно одного — это or.