While: различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: « == Описание == While - оператор цикла. Создает цикл, который выполняется до того момента, пока...»)
 
 
Строка 2: Строка 2:
 
== Описание ==
 
== Описание ==
 
While - оператор цикла. Создает цикл, который выполняется до того момента, пока условие является истиной(либо ложью при while_not). Выполняет операцию сравнения, а так же проверку цвета пикселя и последнего сообщения от сервера (для ultima online).
 
While - оператор цикла. Создает цикл, который выполняется до того момента, пока условие является истиной(либо ложью при while_not). Выполняет операцию сравнения, а так же проверку цвета пикселя и последнего сообщения от сервера (для ultima online).
<br>Для отрицания сравнения используется while _not.
+
<br>Для отрицания сравнения используется while _not.
&lt;br>Для выхода из цикла используются операторы break и continue.
+
<br>Для выхода из цикла используются операторы break и continue.
&lt;br>Для операций сравнения используются знаки операций: >, &lt;, =, &lt;=, >=, != идентично &lt;>. Так же используются логические операторы or, and, xor:
+
<br>Для операций сравнения используются знаки операций: >, <, =, <=, >=, != идентично <>. Так же используются логические операторы or, and, xor:
 
:or - логическое ИЛИ. Или один или другой или оба.  
 
:or - логическое ИЛИ. Или один или другой или оба.  
 
:and - логическое И. И один и другой.
 
:and - логическое И. И один и другой.
 
:xor - строгое логическое ИЛИ. Или один или другой, но не оба.
 
:xor - строгое логическое ИЛИ. Или один или другой, но не оба.
 
Для указания приоритета нескольких операций используются круглые скобки: (, ).
 
Для указания приоритета нескольких операций используются круглые скобки: (, ).
&lt;br>В конце операции необходимо поставить end_while для корректного выполнения сценария.
+
<br>В конце операции необходимо поставить end_while для корректного выполнения сценария.
  
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: опционально.
 
Привязка к окну: опционально.
&lt;br>Работа со свернутым окном: частично.
+
<br>Работа со свернутым окном: частично.
  
 
== Примеры ==
 
== Примеры ==
Строка 94: Строка 94:
  
 
[[For]]
 
[[For]]
&lt;br>[[Repeat]]
+
<br>[[Repeat]]
&lt;br>[[Break]]
+
<br>[[Break]]
  
 
== История развития ==
 
== История развития ==
  
 
'''0.99 alfa 8'''
 
'''0.99 alfa 8'''
&lt;br>Добавлен цикл while ... end_while:
+
<br>Добавлен цикл while ... end_while:
  while &lt;коорд> &lt;цвет> [цвет2]
+
  while <коорд> <цвет> [цвет2]
 
     ...
 
     ...
 
  end_while
 
  end_while
Цвет в точке &lt;коорд> равен &lt;цвет>, если задан цвет2, то цвет точки проверяется на принадлежность диапазону от цвет до цвет2.
+
Цвет в точке <коорд> равен <цвет>, если задан цвет2, то цвет точки проверяется на принадлежность диапазону от цвет до цвет2.
  while &lt;параметр> &lt;знак оп.> &lt;знач.>
+
  while <параметр> <знак оп.> <знач.>
 
     ...
 
     ...
 
  end_while
 
  end_while
 
Параметры: hits,mana,stam,wght,ar, coordx,coordy либо переменные.
 
Параметры: hits,mana,stam,wght,ar, coordx,coordy либо переменные.
&lt;br>Поддерживаются следующие операции: >,&lt;,=,&lt;>. Между знаком операции и значениями должен быть разделитель.
+
<br>Поддерживаются следующие операции: >,<,=,<>. Между знаком операции и значениями должен быть разделитель.
  while lastmsg &lt;последнее сообщение>
+
  while lastmsg <последнее сообщение>
 
     ...
 
     ...
 
  end_while
 
  end_while
Строка 116: Строка 116:
  
 
'''1.05 beta 3'''
 
'''1.05 beta 3'''
&lt;br>Добавил возможность использования скобок в условных операторах:
+
<br>Добавил возможность использования скобок в условных операторах:
  while (#a > 1 and #a &lt; 3) or ((#a = 1 and 130, 9 7295) or #a = 5)
+
  while (#a > 1 and #a < 3) or ((#a = 1 and 130, 9 7295) or #a = 5)
  
 
[[Категория:Условия]]
 
[[Категория:Условия]]
 
[[Категория:Циклы]]
 
[[Категория:Циклы]]

Текущая версия на 11:29, 28 августа 2019

Описание

While - оператор цикла. Создает цикл, который выполняется до того момента, пока условие является истиной(либо ложью при while_not). Выполняет операцию сравнения, а так же проверку цвета пикселя и последнего сообщения от сервера (для ultima online).
Для отрицания сравнения используется while _not.
Для выхода из цикла используются операторы break и continue.
Для операций сравнения используются знаки операций: >, <, =, <=, >=, != идентично <>. Так же используются логические операторы or, and, xor:

or - логическое ИЛИ. Или один или другой или оба.
and - логическое И. И один и другой.
xor - строгое логическое ИЛИ. Или один или другой, но не оба.

Для указания приоритета нескольких операций используются круглые скобки: (, ).
В конце операции необходимо поставить end_while для корректного выполнения сценария.

Синтаксис

Привязка к окну: опционально.
Работа со свернутым окном: частично.

Примеры

// Пример 1
set #i 2
while #i != 1
    set #i #i * 2
    msg #i
end_while
Результатом работы является умножение значения переменной #i на два, каждый раз, до того момента,
пока значение переменной #i не  станет равной единице, т.е. бесконечно.
// Пример 2. Бесконечный цикл
 // Здесь сделаем подготовку
set #счетчик 1
msg На счетчике число: #счетчик , будем увеличивать...
// А теперь зацикленный кусок скрипта
while 1 = 1 // условие всегда будет выполняться, а значит цикл - бесконечный
  set #счетчик #счетчик + 1 // увеличим значение на 1
  msg Теперь на счётчике число: #счетчик 
end_while
// Пример 3
while 329 289 14386954        // цикл будет выполняться пока присутствует цвет
    send {F1}                 // нажать F1
    wait 500                  // ждать 0,5 секунды
end_while
End_script
// Пример 4
while_not 329 289 14386954    // ждать пока не появится указанный цвет 
    wait 10
end_while
log Цвет найден
End_script
// Пример 5
while 329, 289 14386954 and 517, 834 8582073    // цикл будет выполняться пока присутствуют оба цвета
    // нужные действия
end_while
End_script
// Пример 6
while 329, 289 14386954 or 517, 834 8582073    // цикл будет выполняться пока присутствует 1 из цветов или оба
    // нужные действия
end_while
End_script
// Пример 7
while 329, 289 14386954 xor 517, 834 8582073    // цикл будет выполняться пока присутствует 1 из цветов, но не оба
    // нужные действия
end_while
End_script
// Пример 8
while_not 329, 289 14386954 and 517, 834 8582073    // цикл будет выполняться пока не появятся оба цвета
    wait 20
end_while
End_script
// Пример 9
while_not 329, 289 14386954 or 517, 834 8582073    // цикл будет выполняться пока не появится один из цветов или оба
    wait 20
end_while
End_script
// Пример 10
// Выход из цикла через break
while 1 = 1                            // условие всегда будет выполняться, а значит цикл - бесконечный   
    set #счетчик #счетчик + 1      // увеличим значение на 1
    msg Теперь на счётчике число: #счетчик 
    if #счетчик = 3                    //если переменная '#счетчик' = 3
        break                          //выходим из цикла
    end_if
end_while
msg Вышли из while
End_script

Смотрите также

For
Repeat
Break

История развития

0.99 alfa 8
Добавлен цикл while ... end_while:

while <коорд> <цвет> [цвет2]
    ...
end_while

Цвет в точке <коорд> равен <цвет>, если задан цвет2, то цвет точки проверяется на принадлежность диапазону от цвет до цвет2.

while <параметр> <знак оп.> <знач.>
    ...
end_while

Параметры: hits,mana,stam,wght,ar, coordx,coordy либо переменные.
Поддерживаются следующие операции: >,<,=,<>. Между знаком операции и значениями должен быть разделитель.

while lastmsg <последнее сообщение>
    ...
end_while

Сообщение от сервера можно писать не целиком.

1.05 beta 3
Добавил возможность использования скобок в условных операторах:

while (#a > 1 and #a < 3) or ((#a = 1 and 130, 9 7295) or #a = 5)