Введение в пилотный скриптинг: различия между версиями
Tatikoma (обсуждение | вклад) (Новая страница: « == Теория == Это небольшое обучение расчитано на тех кто не знаком со скриптами и програм...») |
Tatikoma (обсуждение | вклад) |
||
Строка 8: | Строка 8: | ||
Команды состоят из групп переменных, операторов и функции, переменные это контейнеры в которые можно помещать числа или | Команды состоят из групп переменных, операторов и функции, переменные это контейнеры в которые можно помещать числа или | ||
строки(буквы+цифры), переменные бывают трех типов, это числовые начинающиеся с #, строковые $, и массивы % представляющие | строки(буквы+цифры), переменные бывают трех типов, это числовые начинающиеся с #, строковые $, и массивы % представляющие | ||
− | собой переменные сгрупированные под одним именем: | + | собой переменные сгрупированные под одним именем:<br> |
set #a 1 | set #a 1 | ||
set $b "asd" | set $b "asd" | ||
Строка 25: | Строка 25: | ||
'''//''' коментарий, все что после "//" в этой строке не выполняется | '''//''' коментарий, все что после "//" в этой строке не выполняется | ||
− | '''set''' обьявление переменной и или присваивание значения: | + | '''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 милисекунды: | + | '''wait''' ожидание, можно указать с точностью до 1 милисекунды:<br> |
wait 1s // ждать 1 секунду | wait 1s // ждать 1 секунду | ||
wait 2823 // ждать 2 секунды и 823 милисекунды | wait 2823 // ждать 2 секунды и 823 милисекунды | ||
'''if''' условный оператор, в результате вычисления выражения, тело "ифа" либо выполняется либо нет, выражения идут после if и | '''if''' условный оператор, в результате вычисления выражения, тело "ифа" либо выполняется либо нет, выражения идут после if и | ||
− | должны быть в формате больше(>), меньше( | + | должны быть в формате больше(>), меньше(<), равно(=), не(!), то есть приводить условие к однозначному результату ДА(true) |
− | или НЕТ(false), можно использовать несколько выражений соединенных and(и), or(и или), xor(или): | + | или НЕТ(false), можно использовать несколько выражений соединенных and(и), or(и или), xor(или):<br> |
− | if (#a > 0) and (#a | + | 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) тогда сново выполнится тело: | + | ДА(true) тогда сново выполнится тело:<br> |
− | while (#a > 0) and (#a | + | 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): | + | '''left''' кликнуть левой кнопкой мышки по координатам (=курсором), сначала пишется горизонтальная координата (X), а затем вертикальная (Y):<br> |
left 450, 220// кликнуть левой кнопкой по координатам X=450, Y=220 | left 450, 220// кликнуть левой кнопкой по координатам X=450, Y=220 | ||
− | '''send''' нажать кнопку, в разных ОС что бы работало как надо, кнопку необходимо заключаться в {}: | + | '''send''' нажать кнопку, в разных ОС что бы работало как надо, кнопку необходимо заключаться в {}:<br> |
send N // нажать кнопку N | send N // нажать кнопку N | ||
send {N} // нажать кнопку N | send {N} // нажать кнопку N | ||
send F1 // нажать кнопку F1 | send F1 // нажать кнопку F1 | ||
− | '''findcolor''' поиск точки по цвету в квадратной области, возвращает сколько точек найдено и где, параметры: | + | '''findcolor''' поиск точки по цвету в квадратной области, возвращает сколько точек найдено и где, параметры:<br> |
FindColor (левыйКрайОбласти верхнийКрайОбласти правыйКрайОбласти нижнийКрайОбласти шагПоискаГоризонталь шагПоискаВертикать | FindColor (левыйКрайОбласти верхнийКрайОбласти правыйКрайОбласти нижнийКрайОбласти шагПоискаГоризонталь шагПоискаВертикать | ||
− | цвет массивДляКоординат типПоиска), пример: | + | цвет массивДляКоординат типПоиска), пример:<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''' завершение работы скрипта, можно не использовать и тогда в конце скрипта выполнение перейдет на первую строчку. | + | '''end_script''' завершение работы скрипта, можно не использовать и тогда в конце скрипта выполнение перейдет на первую строчку.<br> |
== Практика == | == Практика == | ||
Теперь можно использовать полученные знания и написать пару простейших ботов, сперва нужно привязать скрипт к целевому окну, | Теперь можно использовать полученные знания и написать пару простейших ботов, сперва нужно привязать скрипт к целевому окну, | ||
− | что бы это сделать поместите пилот поверх окна, разместите курсор мыши над окном и нажмите ctrl+A: | + | что бы это сделать поместите пилот поверх окна, разместите курсор мыши над окном и нажмите ctrl+A:<br> |
− | 1) | + | 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) | + | 2)<br> |
set $a 0 // для старта условного цикла нужна переменная $a с значением 0 | set $a 0 // для старта условного цикла нужна переменная $a с значением 0 | ||
− | while $a | + | 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 сможет опять запустится | ||
− | Это только маленькая часть функций, полное описание можно найти тут: | + | Это только маленькая часть функций, полное описание можно найти тут:<br> |
− | UOPilot Wiki http://uopilot.tati.pro | + | UOPilot Wiki http://uopilot.tati.pro<br> |
− | UOPilot->?->Помощь по языку скриптов | + | UOPilot->?->Помощь по языку скриптов<br> |
− | UOPilot->?->История развития программы | + | 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->?->История развития программы