If
Описание
if- условный оператор содержит логическое выражение. Позволяет выполнять определенный код в зависимости от результатов некоторого условия. Так же выполняет проверку цвета пикселя и последнего сообщения от сервера (для ultima online). Операция принимает вид сравнения. <br>Если логическое выражение истинно (true)- будет выполнен код. Если ложно (false)- код выполняться не будет. <br>Часто if используется в связке с else. Конструкция if-else имеет тот же вид, что if, но с дополнительной возможностью для выполнения другого кода, если условие не истинно (false). <br>Для выполнения операций отрицания результата выражения используется приставка _not. <br>Для поиска цвета пикселя необходимо указать координаты пикселя по оси XY (для абсолютных координат добавить в конце abs) и код цвета (можно найти в заголовке окна). Если указать ещё один код цвета2, то будет проверяться принадлежность пикселя к указанному диапазону цветов. Причем принадлежность к диапазону будет проверяться для каждого из каналов RGB отдельно, и условие IF будет истинным, только если значение каждого из каналов (RGB) пикселя будет между соответствующими значениями (R1..R2), (G1..G2), (B1..B2) <br>Для операций сравнения используются знаки операций: >, <, =, <=, >=, != идентично <>. Так же используются логические операторы or, and, xor. <br>or- логическое ИЛИ. Или один или другой или оба. <br>and- логическое И. И один и другой. <br>xor- строгое логическое ИЛИ. Или один или другой, но не оба. <br>Результатом логической операции является число 1, если результат истинный, или 0, если результат ложный. <br>Для указания приоритета нескольких операций используются круглые скобки: (, ). <br>В конце операции необходимо поставить end_if для корректного выполнения сценария.
Синтаксис
Привязка к окну: опциональна. <br>Работа со свернутым окном: частично.
Примеры
// Пример 1 if 2 < 3 msg два меньше трех end_if // Результат: вывод сообщения "два меньше трех"
// Пример 2 if 2 > 3 msg два больше трех else msg два не может быть больше трех end_if // Результат: вывод сообщения "два не может быть больше трех"
// Пример 3 if 345, 567 456456 log цвет найден end_if
// Пример 4 if 345, 567 456456 log цвет найден else log цвет не найден end_if
// Пример 5 if 345, 567 456456 and 340, 214 13727242 log Оба цвета найдены end_if
// Пример 6 if_not 345, 567 456456 msg цвет пикселя не найден end_if // Результат: вывод сообщения "цвет пикселя не найден"
// Пример 7 if_not 345, 567 456456 abs msg цвет пикселя не найден else msg найден цвет пикселя end_if // Результат: вывод сообщения "цвет пикселя не найден"
// Пример 8 if 345, 567 456456 2686770 abs msg цвет пикселя не найден в диапазоне 456456-2686770 (в шестнадцатеричном виде: 0x08F706 - 0x32FF28) else msg цвет пикселя найден в диапазоне 456456-2686770 end_if // Результат: вывод сообщения "цвет пикселя не найден в диапазоне 456456-2686770 (в шестнадцатеричном виде: 0x08F706 - 0x32FF28)"
// Пример 9 set #two 2 set #five 5 if (#two < #five) or (3 < #five) msg два меньше пяти или три меньше пяти end_if // Результат: вывод сообщения "два меньше пяти или три меньше пяти"
// Пример 10 set #num 3 if (7 != 4) and (#num <> 4) msg семь не равно четырём и три не равно четырём else msg четыре и #num равно семи end_if // Результат: вывод сообщения "семь не равно четырём и три не равно четырём"
// Пример 11 if 1 xor 0 msg только 1 или 0 истинно, но не оба end_if // Результат: вывод сообщения "только 1 или 0 истинно, но не оба"
// Пример 12 init_arr %a (1) 360 197 13529609 //задаём координаты и цвет в одну строку set delimiter ' ' //установить разделитель между элементами 'пробел' if %a [1] //тоже самое что if %a [1 1] %a [1 2] %a [1 3] msg Цвет найден End_script end_if
// Пример 13 init_arr %a (1) 360 197 13529609 //задаём координаты и цвет, первая строка init_arr %a (2) 424, 511 15979864 //задаём координаты и цвет, вторая строка set delimiter ' ' //установить разделитель между элементами 'пробел' //обратите внимание, когда используется больше 1 условия, то обязательно нужны круглые скобки. if (%a [1]) and (%a [2]) //тоже самое что if %a [1 1] %a [1 2] %a [1 3] and %a [2 1] %a [2 2] %a [2 3] msg Цвет найден End_script end_if
// Пример 14 // Выполнение действия в определённое время // Можно использовать переменные hour(час), min(минута), sec(секунда) if hour = 5 and min = 33 // в 5:33 выполнится условие // тут пишем что нужно выполнить, например: start_script 3 // запустить скрипт номер 3 alarm // звуковой сигнал stop_script // остановить текущий скрипт end_if
// Пример 15 if_not 100 100 255 or 232 456 13529609 // если отсутствуют оба цвета // что-то делаем end_if // с условием if_not часто возникают некоторые недоразумения // тут подробно и понятно написано что к чему: https://forum.uokit.com/index.php?s=&showtopic=20548&view=findpost&p=179583
// Пример 16 if_not 100 100 255 and 232 456 13529609 // если отсутствуют оба цвета или один из них // что-то делаем end_if
Смотрите также
While <br>For <br>Get color <br>Switch
История развития
0.98 alfa 8 <br>Добавлены операции: >, <, =, <>:
if <значение> <знак операции> <значение> ... end_if
Между знаком операции и значениями должен быть разделитель.
- Добавлена проверка последнего сообщения от сервера(только для Ultima Online):
if lastmsg <последнее сообщение от сервера> ... end_if
Сообщение от сервера можно писать не целиком.
1.01 beta 7 <br>Добавлена логика (and, or, xor) в условных операторах. Приоритетов нет, обрабатывается последовательно:
if hour = 23 and min = 45 or #count = 100 end_script end_if
2.18 <br>Добавил нечеткое сравнение строк. регистронезависимо. поддерживаются операции <, >, =, <>: <br><=  S2 содержится в S1 <br>>=  S1 содержится в S2
2.20 <br>Исправил поиск подстроки одного регистра в строке другого регистра, содержащих символы алфавита отличного от английского и заданных с помощью переменных:
set $substr таня set $str textТАНЯтект if $substr >= $str msg found end_if
2.21 <br>Научил условные операторы принимать элеменнты массива в качестве параметров для определения цвета точки:
set %a[1] 110 120 8030463 set %a[2] 110 120 set %a[5 1] 110, set %a[5 2] 120, set %a[5 3] 8030463 if (%a[1]) and (%a[2] 8030463) and %a[5] ... end_if
- Научил условные операторы принимать в качестве параметров для определения цвета точки, координаты и цвет заданные одной строкой:
set $a 110 120 8030463 set $b 110 120 if ($a) and ($b 8030463) ... end_if
2.27.2 <br>Исправил перманентный вис скрипта на конструкциях типа 'if %var = #var', и добавил вывод сообщения об ошибке.
2.33 <br>Исправил проверку последнего сообщения от сервера в конструкции 'if lastmsg anytext', сломанную в предыдущей версии.