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', сломанную в предыдущей версии.