Команды скриптоязыка пилота

Здесь вам предложено описание всех команд Shra Pilot. Их совсем немного, а тех что используются часто и того меньше.

Command name
Format
Description
Example
version 0.6b
wait, pause
wait n seconds
Пауза на n секунд.
Wait 2.5
pause 3 seconds
say,tell
say «…»
Набирает за вас в консоль UO фразу и нажимает <ENTER>. Команда не мешает вам в это время использовать клавиатуру.
say «! Hello, boys and girls»
text, write
text «…»
Набирает за вас в консоль UO фразу, но не завершает нажатием <ENTER>. Команда не мешает вам в это время использовать клавиатуру.
text «Are somebody stold you pijamas?»
key
key «…»
Посылает окну UO комбинацию нажатия клавиши. Можно комбинировать с ALT, CTRL и SHIFT. К сожалению эта команда активирует окно UO и прерывает ввод с клавиатуры. :(
key «alt+i»
press key «CTRL+F1»
push button «L+alt+shift»
push «del+alt+ctrl»
send macros «alt+F4» ; :-)
virtkey, easykey
virtkey «…»
Имитирует нажатие клавиши. Комбинировать с ALT, CTRL или SHIFT нельзя. :( Но при этом команда не перехватывает работу клавиатуры и не открывает окна UO.
virtkey «ENTER»
virtkey «F7»
easykey «ESC»
easykey «pageup»
click
left/right [double] click at location #n
Имитирует щелчёк клавишей мышки в указанной точке. Перед использованием этой команды, необходимо определить координаты точки #n. Команда не меняет положения указателя мыши.
click at location #3
right click #4
left double click at #2
double right click #7
repeat
repeat n times
Оператор начала цикла. Без указания числа итераций, цикл будет выполнятся бесконечное, строго говоря, большое число раз.
repeat ; infinitive cycle
repeat 5
repeat 10 times
end repeat
end of repeat
Оператор завершения цикла. Циклы могут быть вложенными, что вообщем-то бесполезно, но приятно.
end of repeat
end repeat
end script, stop
end of script
Выполняет останов скрипта.
end of script
end script
; and /
; ….
Так можно пометить комментарии.
;this is comment
//this is comment too
REM, REMARK
REM remarked text
Use it for remarks.
REM this is comment line
version 0.7b
Определение переменной
xxx = (…)
Так можно задать значение переменной. Будьте осторожны при выборе имен переменных. Не используйте зарезервированные слова (их список где-то внизу).
variable = (5+10 * another_var)
Использование переменной
Переменные могут быть использованы вместо констант или номера локации в большинстве случаев.
wait variable seconds
Определение метки
_label:
Эта команда устанавливает метку в программе. Имя любой метки начинается с символа «_». Двоеточие после метки — не является обязательным. В одной строке может быть или метка или команда.
_this_is_a_label:
_ok:
_one_more_label
Использование меток
say _label,
text _label,
(…)
Метка работает как и обычная переменная, и может быть использована при вычислениях внутри калькуляторных выражений. Метка хранит номер строки скрипта.
say («label keeps number «.add._label)
GO TO
GO _label
Оператор перехода к метке»_label». Выполнение программы продолжится с указанной метки.
GO TO _ok
Calculator usage
say (…),
text (…),
repeat (…)
Вы можете использовать калькулятор для задания параметров операторов say, text и repeat, а также для определения переменных.
say ((5+10)/8)
repeat (2*variable) times
IF
IF (…) THEN GOTO _label
Оператор условного перехода. Если выражение полученное калькулятором не равно нулю, тогда будет выполнен переход к метке «_label».
IF (variable<5&&variable_2>10) GOTO _fin
IF (1) GO _label;it will make jump always
IF (0) THEN GOTO _label;it will never visit label
mousedown*
left/right mousekeydown at location #n
Команда удерживает нажатой клавишу мыши в точке #n. Полезно для того, чтобы заставить персонажа бежать или идти (right mdown) или для инициации drag&drop (left mdown) элементов окна UO. Команда перемещает курсор мыши, но если вы начинаете использовать мышь, то программа пропускает исполнение этой команды, пока вы не прекратите использование мыши.
mdown at location #1
mousekeydown #2
mouseup*
left/right mousekeyup at location #n
Отпускает нажатую клавишу мыши.
right mousekeydown #2
wait 0.5
right mouseup #2
setup, set
setup location #n x:y
Этот оператор позволяет вам установить позицию точки #n. Вариант, когда x и y — переменные работает тоже.
set #1 150:100
setup relative
setup relative location #n x:y
Эта команда смещает позицию точки #n на x и y. Смещения можно задать с помощью переменных.
set rel #2 40,0;it will change x component of #2 by 40
put, place
put location #n to var_x:var_y
Помещает компоненты точки #n в указанные переменные.
put #5 to var_x:variable2
inc
inc var_n
Приращение переменной на 1
INCREMENT var_1
dec
dec var_n
Уменьшить переменную на 1.
DECREASE var_2
Приоритет операций калькулятора.
*, /
+, -, .add.
==, >=, <=, >, <, .eq., .ne., .lt., .gt.
&&, ||
Здесь вы видите все операции, которые знает калькулятор. »*» и «/» имеют наибольший приоритет, а «&&», «||» — наименьший. Можно использовать скобки. Операции .eq., .ne., .lt. and .gt. нужны для сравнения строковых значений.
var=(«one frase».add.» second frase»);it will merge strings in the «var»

* Чтобы избежать ситуации, когда программа мешает двигать мышкой, меняя координаты курсора, сделано следующее : mdown изменит позицию курсора, если пользователь не производил манипуляций мышью хотя бы 1 сек. Востанавливаться позиция курсора командой mup будет только в случае сохранения позиции курсора установленной в mdown.

 

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Команды скриптоязыка пилота”

  1. Ровшан:

    Добрый день .. Хотел узнать я покажу код .. так думаю будет легче вам разобраться
    wait 3000
    left 69, 18 \\ Инвентарь
    wait 3000
    left 621, 294 \\Надеть
    wait 3000
    left 991, 93 \\ вернутся
    repeat 100
    left 533, 403 \\ собрать
    wait 20000
    end_repeat

    хотел узнать можно ли как то сделать что бы последнее Wait на 20 секунд был заменен на что нибудь оптимальное
    При с боре ресурс время ожидание рандомна от 3х до 18 секунд.
    но после окончание времени страница обновляется.
    возможноли сделать так что бы после Сбора он ждал не 20 секунд а ждал обновление страницы что бы перейти на end_repeat

    • «Пилот» — это очень древний динозавр, которого я писал где то в 2002-2003 годах. Он, конечно, вечно ещё будет работать :) Но, я бы посоветовал вам посмотреть проект SikuliX — http://shra.ru/2016/06/sreda-dlya-dlya-razrabotki-igrovykh-botov/. Самое важное отличие в том, что там можно формировать логику скрипта бота на базе сканирования экрана.