Обычно тернарная условная операция ассоциируется с операцией ?:, используемой в си-подобных языках программирования.
Безотносительно определённого языка программирования, тернарную операцию можно определить так:
логическое выражение ? выражение 1 : выражение 2
Алгоритм работы операции следующий:
Вычисляется логическое выражение.
Если логическое выражение истинно, то вычисляется значение выражения выражение 1, в противном случае — значение выражения выражение 2.
Вычисленное значение возвращается.
Нужно обратить внимание, что вычисляется только одно из выражений: выражение 1 или выражение 2. Это сделано для оптимизации и, в некотором смысле, соответствует принципу ленивых вычислений.
Некоторые примеры использования в PAWN:
Пример 1:
new minimum = (a < b) ? a : b;
// Если 'a' будет меньше чем 'b' - то функция получит значение 'a', иначе 'b'.
// Аналогично это можно было записать как:
// if ( a < b )
// minimum = a;
// else
// minimum = b;
Пример 2:
new bool:mode = true;
client_print(0, print_chat, ( mode == true ) ? "MODE=TRUE" : "MODE=FALSE");
// Тут уже сами разберетесь с аналогом. Описывать лень :)
Многие из вас пользовались тернарными операциями давно - не зная с чем имеют дело.
Добавлю от себя: тернарные операции выполняются быстрей чем if/else, а так же делают ваш код более читабельным.
p.s: можно убрать код безопасности для пользователей и проверку сообщения?