2RedHeavenHero:
Использовать константы или нет - ваше дело.
Естественно. Вопрос был - почему числа магические, я дал развернутый ответ. Применять константы или нет - личное дело каждого. По сути, это лишь вопрос разборчивого/неразборчивого почерка.
Насчет непонятного выражения: всё на сайте разработчика языка 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? Или без разницы?