Введение в пилотный скриптинг: различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: « == Теория == Это небольшое обучение расчитано на тех кто не знаком со скриптами и програм...»)
 
 
Строка 8: Строка 8:
 
Команды состоят из групп переменных, операторов и функции, переменные это контейнеры в которые можно помещать числа или  
 
Команды состоят из групп переменных, операторов и функции, переменные это контейнеры в которые можно помещать числа или  
 
строки(буквы+цифры), переменные бывают трех типов, это числовые начинающиеся с #, строковые $, и массивы % представляющие  
 
строки(буквы+цифры), переменные бывают трех типов, это числовые начинающиеся с #, строковые $, и массивы % представляющие  
собой переменные сгрупированные под одним именем:<br>
+
собой переменные сгрупированные под одним именем:<br>
 
  set #a 1
 
  set #a 1
 
  set $b "asd"
 
  set $b "asd"
Строка 25: Строка 25:
 
  '''//''' коментарий, все что после "//" в этой строке не выполняется
 
  '''//''' коментарий, все что после "//" в этой строке не выполняется
  
'''set''' обьявление переменной и или присваивание значения:&lt;br>
+
'''set''' обьявление переменной и или присваивание значения:<br>
 
  set #a 1 //создание переменной #a и присваивание ей числа 1
 
  set #a 1 //создание переменной #a и присваивание ей числа 1
 
  set #a #a + 2 // присваивание #a ее же значение но +2, после выполнения #a будет содержать 3
 
  set #a #a + 2 // присваивание #a ее же значение но +2, после выполнения #a будет содержать 3
  
'''wait''' ожидание, можно указать с точностью до 1 милисекунды:&lt;br>
+
'''wait''' ожидание, можно указать с точностью до 1 милисекунды:<br>
 
  wait 1s // ждать 1 секунду
 
  wait 1s // ждать 1 секунду
 
  wait 2823 // ждать 2 секунды и 823 милисекунды
 
  wait 2823 // ждать 2 секунды и 823 милисекунды
  
 
'''if''' условный оператор, в результате вычисления выражения, тело "ифа" либо выполняется либо нет, выражения идут после if и  
 
'''if''' условный оператор, в результате вычисления выражения, тело "ифа" либо выполняется либо нет, выражения идут после if и  
должны быть в формате больше(>), меньше(&lt;), равно(=), не(!), то есть приводить условие к однозначному результату ДА(true)  
+
должны быть в формате больше(>), меньше(<), равно(=), не(!), то есть приводить условие к однозначному результату ДА(true)  
или НЕТ(false), можно использовать несколько выражений соединенных and(и), or(и или), xor(или):&lt;br>
+
или НЕТ(false), можно использовать несколько выражений соединенных and(и), or(и или), xor(или):<br>
  if (#a > 0) and (#a &lt; 10) // если #a больше чем ноль и меньше 10 тогда выполнится тело условия
+
  if (#a > 0) and (#a < 10) // если #a больше чем ноль и меньше 10 тогда выполнится тело условия
 
     set #a 11 // это тело условия
 
     set #a 11 // это тело условия
 
     set $string asd11 // это тело условия
 
     set $string asd11 // это тело условия
Строка 43: Строка 43:
 
'''while''' условный цикл "пока истинно", тоже самое что и if только после выполнения тела, перехода к следующей строчке после  
 
'''while''' условный цикл "пока истинно", тоже самое что и if только после выполнения тела, перехода к следующей строчке после  
 
конца условия не будет, вместо этого опять вычислится выражение и если оно НЕТ(false) тогда будет выход из цикла, если  
 
конца условия не будет, вместо этого опять вычислится выражение и если оно НЕТ(false) тогда будет выход из цикла, если  
ДА(true) тогда сново выполнится тело:&lt;br>
+
ДА(true) тогда сново выполнится тело:<br>
  while (#a > 0) and (#a &lt; 10) // если #a больше чем ноль и меньше 10 тогда выполнится тело условного цикла
+
  while (#a > 0) and (#a < 10) // если #a больше чем ноль и меньше 10 тогда выполнится тело условного цикла
 
     set #a #a + 1 // это тело условного цикла
 
     set #a #a + 1 // это тело условного цикла
 
     set $string asd11 // это тело условного цикла
 
     set $string asd11 // это тело условного цикла
 
  end_while // конец условного цикла
 
  end_while // конец условного цикла
  
'''left''' кликнуть левой кнопкой мышки по координатам (=курсором), сначала пишется горизонтальная координата (X), а затем вертикальная (Y):&lt;br>
+
'''left''' кликнуть левой кнопкой мышки по координатам (=курсором), сначала пишется горизонтальная координата (X), а затем вертикальная (Y):<br>
 
  left 450, 220// кликнуть левой кнопкой по координатам X=450, Y=220
 
  left 450, 220// кликнуть левой кнопкой по координатам X=450, Y=220
  
'''send''' нажать кнопку, в разных ОС что бы работало как надо, кнопку необходимо заключаться в {}:&lt;br>
+
'''send''' нажать кнопку, в разных ОС что бы работало как надо, кнопку необходимо заключаться в {}:<br>
 
  send N // нажать кнопку N
 
  send N // нажать кнопку N
 
  send {N} // нажать кнопку N
 
  send {N} // нажать кнопку N
 
  send F1 // нажать кнопку F1
 
  send F1 // нажать кнопку F1
  
'''findcolor''' поиск точки по цвету в квадратной области, возвращает сколько точек найдено и где, параметры:&lt;br>
+
'''findcolor''' поиск точки по цвету в квадратной области, возвращает сколько точек найдено и где, параметры:<br>
 
FindColor (левыйКрайОбласти верхнийКрайОбласти правыйКрайОбласти нижнийКрайОбласти шагПоискаГоризонталь шагПоискаВертикать  
 
FindColor (левыйКрайОбласти верхнийКрайОбласти правыйКрайОбласти нижнийКрайОбласти шагПоискаГоризонталь шагПоискаВертикать  
цвет массивДляКоординат типПоиска), пример:&lt;br>
+
цвет массивДляКоординат типПоиска), пример:<br>
 
  set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2) // вернёт в $a сколько нашлось, вернёт в %arr координаты каждой найденной точки
 
  set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2) // вернёт в $a сколько нашлось, вернёт в %arr координаты каждой найденной точки
  
'''end_script''' завершение работы скрипта, можно не использовать и тогда в конце скрипта выполнение перейдет на первую строчку.&lt;br>
+
'''end_script''' завершение работы скрипта, можно не использовать и тогда в конце скрипта выполнение перейдет на первую строчку.<br>
  
 
== Практика ==
 
== Практика ==
  
 
Теперь можно использовать полученные знания и написать пару простейших ботов, сперва нужно привязать скрипт к целевому окну,  
 
Теперь можно использовать полученные знания и написать пару простейших ботов, сперва нужно привязать скрипт к целевому окну,  
что бы это сделать поместите пилот поверх окна, разместите курсор мыши над окном и нажмите ctrl+A:&lt;br>
+
что бы это сделать поместите пилот поверх окна, разместите курсор мыши над окном и нажмите ctrl+A:<br>
1)&lt;br>
+
1)<br>
 
  send F1 // нажать F1
 
  send F1 // нажать F1
 
  wait 3000 // ждать 3сек
 
  wait 3000 // ждать 3сек
Строка 74: Строка 74:
 
  wait 15s // ждать 15сек, по завершинии ожидания сново выполнится "send F1"
 
  wait 15s // ждать 15сек, по завершинии ожидания сново выполнится "send F1"
 
  //end_script // завершиние работы скрипта закоментированно, поэтому работать код будет до ручного выключения
 
  //end_script // завершиние работы скрипта закоментированно, поэтому работать код будет до ручного выключения
2)&lt;br>
+
2)<br>
 
  set $a 0 // для старта условного цикла нужна переменная $a с значением 0
 
  set $a 0 // для старта условного цикла нужна переменная $a с значением 0
  while $a &lt; 1 // пока $a меньше 1, то есть тело будет выполнятся пока функция findcolor не вернет в $a по крайней мере 1 (количество найденных точек)
+
  while $a < 1 // пока $a меньше 1, то есть тело будет выполнятся пока функция findcolor не вернет в $a по крайней мере 1 (количество найденных точек)
 
     set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2) // когда функция найдет точку она поместит ее координаты в %arr  
 
     set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2) // когда функция найдет точку она поместит ее координаты в %arr  
 
     wait 10 // ждать 10мс
 
     wait 10 // ждать 10мс
Строка 85: Строка 85:
 
  wait 7s // ждать 7сек, после ожидания выполнение перейдет на первую строчку где $a будет присвоено 0, благодаря чему цикл while сможет опять запустится  
 
  wait 7s // ждать 7сек, после ожидания выполнение перейдет на первую строчку где $a будет присвоено 0, благодаря чему цикл while сможет опять запустится  
  
Это только маленькая часть функций, полное описание можно найти тут:&lt;br>
+
Это только маленькая часть функций, полное описание можно найти тут:<br>
UOPilot Wiki http://uopilot.tati.pro&lt;br>
+
UOPilot Wiki http://uopilot.tati.pro<br>
UOPilot->?->Помощь по языку скриптов&lt;br>
+
UOPilot->?->Помощь по языку скриптов<br>
UOPilot->?->История развития программы&lt;br>
+
UOPilot->?->История развития программы<br>

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

Теория

Это небольшое обучение расчитано на тех кто не знаком со скриптами и программированием. Итак как работает скрипт и что в нем есть: Код состоит из текста(=команд) выполнение которого происходит построчно начиная с первой и до последней строки, но для обеспечения ветвления логики (=условных переходов) возможно как пропустить строки так и перейти в конкретное место. Команды состоят из групп переменных, операторов и функции, переменные это контейнеры в которые можно помещать числа или строки(буквы+цифры), переменные бывают трех типов, это числовые начинающиеся с #, строковые $, и массивы % представляющие собой переменные сгрупированные под одним именем:

set #a 1
set $b "asd"
set %c[1] 1
set %c[2] "asd"
set %c[3] "asd 1"

Таким образом мы можем думать о переменных как о данных с которыми можно делать много чего интересного.

Функции и команды позволяют производить разнообразные действия с переменными и не только, некоторые функции могут возвращать значения, например "set #a 1" вместо 1 может быть функция которая вернет что то, set поместит это в #a, так же для работы функций им нужны параметры(переменные-данные), это можно написать так "Функция1(параметр1 параметр2 3.. 4.. и тд.)", можно сравнить с соковыжималкой(функция) и яблоком(данные), на выходе имеем сок(результат работы) и мякоть(возврашенные данные), притом и функции и соковыжималки требуют для работы электричество(выполнение) Дальше приводится описание самых необходимых команд и функций для начала скриптописания:

// коментарий, все что после "//" в этой строке не выполняется

set обьявление переменной и или присваивание значения:

set #a 1 //создание переменной #a и присваивание ей числа 1
set #a #a + 2 // присваивание #a ее же значение но +2, после выполнения #a будет содержать 3

wait ожидание, можно указать с точностью до 1 милисекунды:

wait 1s // ждать 1 секунду
wait 2823 // ждать 2 секунды и 823 милисекунды

if условный оператор, в результате вычисления выражения, тело "ифа" либо выполняется либо нет, выражения идут после if и должны быть в формате больше(>), меньше(<), равно(=), не(!), то есть приводить условие к однозначному результату ДА(true) или НЕТ(false), можно использовать несколько выражений соединенных and(и), or(и или), xor(или):

if (#a > 0) and (#a < 10) // если #a больше чем ноль и меньше 10 тогда выполнится тело условия
    set #a 11 // это тело условия
    set $string asd11 // это тело условия
end_if // конец условия

while условный цикл "пока истинно", тоже самое что и if только после выполнения тела, перехода к следующей строчке после конца условия не будет, вместо этого опять вычислится выражение и если оно НЕТ(false) тогда будет выход из цикла, если ДА(true) тогда сново выполнится тело:

while (#a > 0) and (#a < 10) // если #a больше чем ноль и меньше 10 тогда выполнится тело условного цикла
    set #a #a + 1 // это тело условного цикла
    set $string asd11 // это тело условного цикла
end_while // конец условного цикла

left кликнуть левой кнопкой мышки по координатам (=курсором), сначала пишется горизонтальная координата (X), а затем вертикальная (Y):

left 450, 220// кликнуть левой кнопкой по координатам X=450, Y=220

send нажать кнопку, в разных ОС что бы работало как надо, кнопку необходимо заключаться в {}:

send N // нажать кнопку N
send {N} // нажать кнопку N
send F1 // нажать кнопку F1

findcolor поиск точки по цвету в квадратной области, возвращает сколько точек найдено и где, параметры:
FindColor (левыйКрайОбласти верхнийКрайОбласти правыйКрайОбласти нижнийКрайОбласти шагПоискаГоризонталь шагПоискаВертикать цвет массивДляКоординат типПоиска), пример:

set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2) // вернёт в $a сколько нашлось, вернёт в %arr координаты каждой найденной точки

end_script завершение работы скрипта, можно не использовать и тогда в конце скрипта выполнение перейдет на первую строчку.

Практика

Теперь можно использовать полученные знания и написать пару простейших ботов, сперва нужно привязать скрипт к целевому окну, что бы это сделать поместите пилот поверх окна, разместите курсор мыши над окном и нажмите ctrl+A:
1)

send F1 // нажать F1
wait 3000 // ждать 3сек
send G // нажать G
wait 15s // ждать 15сек, по завершинии ожидания сново выполнится "send F1"
//end_script // завершиние работы скрипта закоментированно, поэтому работать код будет до ручного выключения

2)

set $a 0 // для старта условного цикла нужна переменная $a с значением 0
while $a < 1 // пока $a меньше 1, то есть тело будет выполнятся пока функция findcolor не вернет в $a по крайней мере 1 (количество найденных точек)
    set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2) // когда функция найдет точку она поместит ее координаты в %arr 
    wait 10 // ждать 10мс
end_while // конец цикла, переход к следующей строчке будет только тогда когда findcolor что то найдет и в $a будет уже не 0
left %arr [1 1], %arr [1 2] // кликнуть мышкой по первой найденной точке,горизонтальная координата=%arr[1 1] вертикальная=%arr[1 2]
wait 3s // ждать 3сек
send F7 // нажать F7
wait 7s // ждать 7сек, после ожидания выполнение перейдет на первую строчку где $a будет присвоено 0, благодаря чему цикл while сможет опять запустится 

Это только маленькая часть функций, полное описание можно найти тут:
UOPilot Wiki http://uopilot.tati.pro
UOPilot->?->Помощь по языку скриптов
UOPilot->?->История развития программы