Естественно. Вопрос был - почему числа магические, я дал развернутый ответ. Применять константы или нет - личное дело каждого. По сути, это лишь вопрос разборчивого/неразборчивого почерка.
Насчет непонятного выражения: всё на сайте разработчика языка lua.org, в том числе и приоритет операций. Я лишь использовал возможности, а десять лишних скобок погоды не сделают.
Никто приоритеты операций запоминать не будет, поскольку такие детали реализации различаются в разных языках программирования. И отсылать к справочникам, чтобы можно было расшифровать код, также не очень хорошо. Следовательно, для чтения человеком нужны скобки (это как знаки препинания в "казнить нельзя помиловать"), если они помогают понять порядок операций. Если скобки не расставляются, не удивляйся подобным вопросам.
Если ты понимаешь, что написано в том выражении, тогда объясни пожалуйста, что значит
GetPlayerState(...) == 1 or 0
? Это значит, число сравнивается и с 0, и с 1, и операция возвращает true (1) в случае, если оно равно одному из них? В таком случае, причём здесь статус PLAYER_NOT_IN_GAME = 0, который был использован в сравнении? Другими словами, зачем здесь ноль? RedHeavenHero
Значит так. GetPlayerState возвращает 1 - игрок участвует 2 - игрок победил 3 - игрок проиграл 4 - его не было сначала. В мануале полно косяков.
Зато в файле advmap-startup.lua, который подключается к игре, значится:
-- Player states -- PLAYER_NOT_IN_GAME = 0 PLAYER_ACTIVE = 1 PLAYER_WON = 2 PLAYER_LOST = 3
И никаких 4. Стало быть, цифра 4 была получена вручную? И, всё-таки, что правильнее использовать, сравнение статуса с 1 (0?) или с 4? Или без разницы?