Skazochnik | Дата: Воскресенье, 28.08.2011, 22:08 | Сообщение # 2 |
 Генсек
Группа: Администратор
Сообщений: 560
Статус: Offline
| Краткая документация содержит описание языка скриптов программы UOPilot версии 1.07 beta 5
Условные обозначения: <> - обязательный параметр [] - необязательный параметр
СИНТАКСИС ===========
В одной строке может быть только одна команда. Первое слово в строке - команда, остальные слова - параметры. Если первое слово в строке не команда - строка считается комментарием.
Слова состоят из символов 0-9, А-z, А-я.
Символы #, $, %, +, -, *, /, >, <, =, :, ., (, ), [, ] являются служебными, остальные разделители.
Можно писать комментарии после всех параметров. Также таковыми считается все, что идет после двойного слеша '//'. Крайне рекомендуется использовать именно такой метод.
Паузы в командах указываются по умолчанию в миллисекундах (1/1000 секунды), но возможно указание времени и явно, в часах, минутах, секундах: wait 500 // ждать 0.5 секунды wait 5s // ждать 5 секунд wait 1m // ждать 1 минуту wait 1h // ждать 1 час
Переменные ===========
В имени переменной допустимы символы - ['0'..'9','A'..'z','А'..'я'], регистр не учитывается. Максимальная длина имени переменной 255 символов.
Переменные могут быть числовыми и строковыми. Синтаксис числовой переменной '#name', где name - имя переменной. Синтаксис строковой переменной '$name', где name - имя переменной. Например: set #i 20 set $s test string
Также вы можете использовать массивы. Символ процента '%' считается идентификатором массива. Индексы массива указываются после имени в квадратных скобках '[' и ']'. Размер массива равен максимальному использованному индексу. Присваивание значений осуществляется каждому элементу индивидуально командой set. Элементы массива могут содержать как строки, так и числа. Допустимо ссылаться на массивы параллельных скриптов, указав после имени массива, через точку, номер скрипта. При указании только первого индекса в двумерном массиве, результатом будет строка из всех элементов второй размерности массива, соответствующих указанному индексу, и разделенных пробелом. Например: set %ar [4] тест // одномерный массив на 4 элемента set %arr [50 1] 544 set %arr [50 2] 800 // двумерный массив на 50 раз по 2 элемента set %ar.2 [5] // одномерный массив в параллельном скрипте left %arr [50] // клик левой кнопкой по координатам 544 800
Учтите, что элементы массивов нельзя напрямую использовать в условных операторах: if charposx <> %arr [50 1]
Перед использованием переменной в скрипте вы должны определить ее при помощи команды set. Переменные изменяются только при участии set и for, команда repeat использует значение, не изменяя его. Например: set #i #i + 1
Синтаксис команды Set: ----------------------------------------- set $<имя> <значение> или set #<имя> <знач1> [<зн. оп.> <знач2>] set %<имя> [элемент] <значение> между знаком операции и значениями должен быть разделитель. Поддерживаются следующие операции: +, -, *, /, также вы можете использовать скобки для изменения приоритетов выполнения математических операций. При делении результат округляется к меньшему целому. Например: set #q ((5+4)/(3+-2)* #e )-(2-(-5+9))*3
Со строковыми переменными возможны некоторые математические операции: set $s1 1 set $s2 2 set $s $s1 + $s2 Результатом будет $s = '1 + 2', т.е. при присваивании чего-либо строковой переменной, ей присваивается все до конца строки, с соответствующими заменами set #n $s1 + $s2 Результатом будет #n = 3, т.е. если строковая переменная, содержит строковое представление целого числа, то ее можно использовать в качестве числовой переменной.
В команде set вы можете использовать генератор случайных чисел: random возвращает число в диапазоне от 0 до number-1 Например: set #a random 2
При двух или более запущенных скриптах вы можете обращаться к переменным, определенным в других скриптах пилота. Синтаксис указания таких переменных следующий: #i.2 - обращаемся к переменной #i из скрипта, находящегося в окне номер 2.
Переменные в процессе выполнения скрипта могут быть изменены при помощи таблицы отображения переменных. Изменение переменных происходит синхронно с набором символов.
Зарезервированные переменные =============================
Примечание 1: [W] означает, что вы можете изменять значение этой переменной в скрипте через команду set, все остальные переменные только для чтения.
Примечание 2: Для корректного определения Пилотом большинства параметров чара у вас на экране ультимы должно быть раскрыто окно статов (Character Status).
hour - текущее время (час)
min - текущее время (минуты)
sec - текущее время (секунды) Например: say current time is hour : min . sec
timer - считает количество миллисекунд от начала выполнения скрипта может использоваться практически в любых операторах и сочетаниях. set timer // устанавливает значение timer в 0
name - имя чара
str - сила чара
int - интеллект чара
dex - ловкость чара
hits - здоровье чара
mana - мана
stam - стамина
gold - количество денег у чара
wght - текущий вес
armor - класс армора
charposx - позиция чара по горизонтали
charposy - позиция чара по вертикали
charposz - координата z чара (высота)
chardir - направление взгляда чара (куда чар повернут) 0 - чар смотрит на север, каждые 45 градусов поворота чара по часовой стрелке добавляют единичку, т.е. 7 - чар смотрит на северо-запад
lastmsg - последнее сообщение сервера
lastobjectid - идентификатор последнего использованного объекта [W]
lastobjecttype - тип последнего использованного объекта [W]
lasttargetid - идентификатор последней цели [W]
lasttargetx - координаты последней цели [W]
lasttargety - - " - [W]
lasttargetz - - " - [W]
lasttargetkind - класс последней цели (1 - предмет; 2 - земля; 3 - статика или вода) (т.е. если вам нужно лопатой/киркой кликнуть на поверхность пещеры в заданные координаты, то необходимо указать '3'; если необходимо кликнуть через ласт таргет на предмет, то необходимо указать '1' и 'Id' предмета; ловя рыбку указываем координаты точки и класс '2'). [W]
lastliftedid - идентификатор вещи, которая последней была тронута с места (передвинута, побывала в 'руке'). [W]
lastskill - номер последнего скила который был использован через меню Skills [W]
lastspell - номер последнего заклинания которое было прокастовано через книгу [W]
laststatictype - тип последней статичной цели (дерево...) [W]
target - вид курсора (0 - рука; 1 - прицел) [W]
При двух или более запущенных скриптах вы можете обращаться к переменным, определенным в других скриптах пилота для других чаров, добавив к имени переменной номер скрипта через точку. Например: set lasttargetid.1 7 say hits.1
Условные операторы, циклы, переходы ==================================
В условных операторах и циклах вы можете использовать следующие операции: >, <, =, <>, а также логические операции (and, or, xor). Приоритетов нет, обрабатывается последовательно. Например: if hour = 23 and min = 45 or #count = 100
Для изменения приоритетов используйте круглые скобки: while (#a > 1 and #a < 3) or ((#a = 1 and 130, 9 7295) or #a = 5)
В условных операторах вы можете использовать генератор случайных чисел: random возвращает число в диапазоне от 0 до number-1 Например: while #a = #b or random 5 > 3
Для прерывания действия операторов while, for и repeat вы можете использовать команду Break. Синтаксис: Break [уровень] Если уровень больше 1, то прерывается заданное кол-во родительских циклов.
Оператор Continue переводит исполнение цикла на следующий шаг. Может быть использован в циклах repeat, for, while.
При использовании последнего сообщения от сервера в условных операторах, существует некоторое правило синтаксиса: if lastmsg текст последнего сообщения или его часть или if lastmsg = $a [or lastmsg = $b ...] Т.е. если в условии напрямую указан текст сообщения, то не должно быть больше ничего, включая знаки каких-либо операций.
Оператор IF -------------------- Синтаксис: if <условие> ... end_if
или
if <условие> ... else ... end_if
или
if_not <условие> ... end_if
или
if_not <условие> ... else ... end_if
Возможны три варианта условий:
1) Проверка какой-то переменной, синтаксис: if <значение> <знак операции> <значение> Примечание: между знаком операции и значениями должен быть разделитель. Например: if hits < 45
2) Проверка последнего сообщения от сервера: If lastmsg <последнее сообщение> если в последнем сообщении от сервера есть указанная строка Например: if lastmsg too heavy
3) Проверка цвета в определенных координатах: if <коорд> <цвет> [цвет2] Если цвет в точке <коорд> равен <цвет> Примечание: если задан цвет2, то цвет точки проверяется на принадлежность диапазону от цвет до цвет2. Учтите, что проверка цвета в определенных координатах корректно работает только при развернутом окне ультимы.
Оператор WHILE ---------------------------- Синтакис: While <условие> ... end_while
или
While_not <условие> ... end_while
Возможны три варианта условий:
1) Проверка какой-то переменной, синтаксис: While <значение> <знак операции> <значение> Примечание: между знаком операции и значениями должен быть разделитель. Например: While hits > 45
2) Проверка последнего сообщения от сервера: While lastmsg <последнее сообщение> делать пока в последнем сообщении от сервера есть указанная строка Например: while lastmsg too heavy
3) Проверка цвета в определенных координатах: While <коорд> <цвет> [цвет2] Пока цвет в точке <коорд> равен <цвет> Примечание: если задан цвет2, то цвет точки проверяется на принадлежность диапазону от цвет до цвет2 Например: While 320 240 1489121
Оператор FOR ------------------------
Синтаксис: For #<имя> <начало> <конец> [шаг] ... End_for Цикл, с инкрементом переменной. Если переменная #<имя> существовала, то она заменяется, иначе добавляется. После завершения цикла переменная равна <конец>. Если шаг не указан, он равен 1. Например: For #i 0 10 2
Учтите, что если вы задаете граничные условия цикла через переменные, пилот считывает значения этих переменных при входе в цикл и больше значения этих переменных не проверяет. Поэтому изменение границ цикла внутри цикла невозможно.
Оператор REPEAT -------------------------------
Повтор действий указанное количество раз Синтаксис: Repeat <число> ... End_Repeat
Оператор GOTO ---------------------------
Переход на указанную метку Синтаксис: Goto <метка>
Метка должна быть указана в скрипте в следующем синтаксисе: :<метка>
Например: Goto end :end
Вызов подпрограмм -----------------------------------
Синтаксис вызова подпрограммы: gosub <метка>
Подпрограмма начинается с :<метка> и заканчивается return
Подпрограммы рекомендуется располагать в конце скрипта и перед ними поставить либо end_script, либо goto на начало скрипта.
Вызов процедуры ------------------------------
Синтаксис вызова процедуры: call <имя> Процедура с указанным именем ищется сначала в текущем скрипте, а затем, если не найдена, в "файле процедур" - скрипт с номером 99. Загрузить туда что-либо можно с помощью соответствующего пункта меню. Поддерживается вложенный вызов процедур.
Процедуры можно располагать в любом месте программы. При обнаружении начала процедуры, автоматически ищется ее конец, и выполнение продолжается со следующей строки. Вложенное описание не поддерживается.
Процесс выполнения процедуры не отображается, параметры пока не передаются.
Процедура начинается с proc <имя> и заканчивается end_proc
Например: proc saying_message say test passed end_proc call saying_message end_script
Управления работой скрипта =========================
Окончание работы скрипта ----------------------------------------------
Скрипт в окне выполняется пошагово, от первой строки к последней, за исключением случаев переходов по условным операторам, циклам, меткам, и подпрограммам. После выполнения последней строки скрипт будет автоматически повторяться сначала.
Для прекращения выполнения скрипта используйте команду: End_Script Параметров нет.
Или команду: stop_script без указания каких-либо параметров.
Паузы -----------
Wait <число> - ждать. Параметр <число> можно задать в различных единицах измерения: wait 1 // 1 миллисекунда wait 1s // 1 секунда wait 1m // 1 минута wait 1h // 1 час
WaitForTarget [wait time] - ждать "прицела" (в миллисекундах). Приостанавливает выполнение скрипта, пока курсор в ультиме не примет форму таргета, или пока не истечет интервал времени, указанный в качестве параметра в мс. Значение по умолчанию для 'wait time' составляет 10000 (то есть 10 секунд).
pause_script Команда pause_script без указания параметров приостанавливает выполнение текущего скрипта. Чтобы запустить его вновь, вы должны будете задать команду resume_script В ДРУГОМ СКРИПТЕ c ссылкой на номер текущего (см. следующий подраздел)
Управление работой других скриптов ================================
Вы можете управлять работой других скриптов, запущенных в других окнах ЭТОГО ЖЕ UoPilot-а при помощи нижеследующих команд. При этом в качестве параметра вы указываете номер окна соответствующего скрипта в UoPilot-е.
start_script Если скрипт с таким номером существует, то он будет запущен
stop_script [number | all] Если скрипт с таким номером существует, то он будет остановлен
pause_script [number | all] Если скрипт с таким номером существует, то он будет приостановлен
resume_script Если скрипт с таким номером существует, то его выполнение будет продолжено
В во всех этих командах, за исключением первой, вместо номера скрипта вы можете задать параметр 'all' - тогда действие данной команды будет распространено на все скрипты, загруженные во все существующие окна UoPilot-а.
По поводу использования команд pause_script и stop_script без параметров - смотрите предыдущий подраздел.
Команды интерфейса и вызова внешних программ ============================================
Alarm [файл .wav] Издает звуковой сигнал, содержащийся в файле [файл .wav]. При ошибке воспроизведения файла (неверный формат), или если параметр [файл .wav] не указан - воспроизводится стандартный звуковой сигнал, ранее содержащийся в файле msg.wav. Если файл не найден, то команда игнорируется. Например: alarm welcome.wav
Msg [текст] На экран выводится окно, содержащее указанный текст, выполнение скрипта при этом приостанавливается до закрытия окна. Окно с текстом выводится поверх всех окон.
Flash Мигнуть в таскбаре. При этом в таскбаре мигает окно Пилота. Если вы хотите, чтобы мигало то окно ультимы, к которому привязан текущий скрипт, укажите команду flash с каким-либо параметром. Например: flash что-нибудь
Exec <команда> [параметры] Запустить указанное приложение, передать ему указанные параметры. Для использования в качестве параметров зарезервированных переменных, поставьте перед ними признак переменной '#'. Обратите внимание, что вы используете знак '#' как для числовых переменных, так и для строковых! Например: exec c:\test.exe #name #lastmsg
Terminate <заголовок окна> Завершить указанное приложение. Следует использовать с осторожностью, иначе можно прибить совсем не то, что хотелось.
macro_load <имя файла> Загрузить ранее записанный и сохраненный в файл макрос. Если не указан путь, то ищется в каталоге UoPilot'а.
macro_play [число] Запустить загруженный макрос [число] раз, и дождаться окончания его выполнения. Если [число]=0 - макрос будет выполняться бесконечно, по умолчанию один раз. Остановить\запустить вручную можно стандартными горячими клавишами.
Команды работы с мышью =======================
Все команды работы с мышью, а также некоторые другие требуют указания координат. Пилот поддерживает два способа указания координат: абсолютные координаты (координаты точки от левого верхнего угла экрана) и относительные координаты (координаты точки от левого верхнего угла экрана Ультимы. Заголовок окна Ультимы не учитывается). Задать в скрипте координаты вы можете, наведя курсор мыши на необходимую точку и нажав комбинацию Ctrl-A. При этом помните:
1) Окно UoPilot должно быть активно. То есть расположите окно ультимы под окном пилота, выберите окно пилота, наведите курсор мыши на нужную точку НЕ НАЖИМАЯ НА КНОПКИ МЫШИ и нажмите Ctrl-A.
2) В окне пилота должен быть включен один из флажков "Сразу вставлять относительные координаты в скрипт" или "Сразу вставлять абсолютные координаты в скрипт". В противном случае, координаты можно вставить в скрипт вручную, кликнув мышью на кнопке с координатами.
3) Если вы указываете в командах абсолютные координаты (нельзя использовать в команде drag) - вам надо после координат указать идентификатора абсолютных координат - ключевое слово "abs", являющееся последним параметром в команде. Например: double_left 218, 242 abs
На время выполнения команд работы с мышью по абсолютным координатам, происходит захват мыши.
Move <коорд> Перемещает курсор в указанные координаты. Внимание! Крайне рекомендуется задавать эту команду перед заданием любой из двух нижеследующих команд.
Left <коорд> Щелкнуть левой клавишей мыши 1 раз в указанных координатах
Right <коорд> Щелкнуть правой клавишей мыши 1 раз в указанных координатах
Double_Left <коорд> Щелкнуть левой клавишей мыши 2 раза в указанных координатах
Double_Right <коорд> Щелкнуть правой клавишей мыши 2 раза в указанных координатах
left_down <коорд> Прижимает левую кнопку мыши в указанных координатах
left_up <коорд> Отпускает левую кнопку мыши в указанных координатах
right_down <коорд> Прижимает правую кнопку мыши в указанных координатах
right_up <коорд> Отпускает правую кнопку мыши в указанных координатах
Прочие команды ==============
Send <клавиша [пауза]> | <текст> "Нажать" клавишу и ждать указанное число миллисекунд. Если параметр не распознан как управляющая клавиша, то он посылается как текст. В последнем случае команда работает аналогично команде say, за исключением завершающего Enter'а.
Sendex <список клавиш> "Нажать" последовательно несколько клавиш. Посылает практически все комбинации клавиш. Клавиши Ctrl, Alt, Shift кодируются символами ^, @ и ~ соответственно. Все функциональные клавиши должны быть заключены в фигурные скобки, например: {Enter}. В одной команде может быть целое предложение из клавиш: sendex ~closing ~application @{f4} Имеется следующее свойство: приложение примет только те клавиши (символьные), которые соответствуют установленной в нем раскладке клавиатуры. Во время выполнения команды, приложение должно быть активно и на него должен быть направлен фокус.
Drag <откуда> <куда> [количество] Перенести из точки с координатами <откуда> в точку с координатами <куда> указанное количество предметов. Координаты <откуда> и <куда> могут быть только относительные. Если не указать количество, то перенесется один некучкующийся предмет (окошко с количеством не всплывает), если указать all, то перенесутся все предметы. Например: Drag #x #y 320, 240
Say [текст] Набрать текст и нажать Enter. Например: say my x: coordx y: coordy and armor: ar
Наши гильдии в сети: CCCPsb или AFK BOT'S
|
|
|
|
Skazochnik | Дата: Воскресенье, 28.08.2011, 22:27 | Сообщение # 3 |
 Генсек
Группа: Администратор
Сообщений: 560
Статус: Offline
| AGC: (программа использовалась для Shadowbane) ...
- Скачать - AGC v5.0 beta 2.4 ...
Краткая документация на английском:
Character List
Add a "character" to the list of characters available to be used. This is required, and "holds" a list of macros for you to use. Rename the currently select character with a new name. Remove a character from the list, and all macros assigned to that character. Close the Character List window.
Macro List
Add a Macro to the list of macros available to be used by a character. This is required, and "holds" a list of steps the macro will execute. Rename the currently select macro with a new name. Edit the steps the macro executes. Remove a macro from the list, and all macros steps assigned to that macro. Close the Macro List window.
Edit Macro
When AGC reaches the last step listed in a macro, it WILL automatically start from the beginning. Loop steps (explained below) are not required.
Options Add to the bottom of the list one of the following actions: Delay a specified amount of time (In Minutes and/or Seconds and/or 100s of Milliseconds) Text emulated to Shadowbane letter by letter. Key that is usually not a key that can be represented in Test (Enter, F9, etc). Loop that represents a start of a Loop (with a specified number of loops) or and End of a loop. Every Start Loop step must have an associated End loop step. Mouse click emulation. Supports options are left (or right) mouse button down, up, and click. Mouse down and up is fairly experimental, and was designed to allow dragging items within Shadowbane from one window (Inventory) to another (Trade Window). Window options that affect the Shadowbane window. Options include Hide (completely), Show (ala Unhide), Minimize, Maximize, Restore (to last known visible state and will not "Show"). Insert any step available in the Add, before the currently selected ttep. Copy the currently selected steps to the bottom of the list. Move Up the currently selected (single) step above the previous step. Move Down the currently selected (single) step below the next step. Remove the currently selected step(s). Macro Step Options Type of the step, can be changed to any other step type. defines how the step works, changes as you select different steps. Description of the step selected, shown in the main processes screen. Save the changes to the macro. Cancel the changes to the macro.
AGC Process Menu Options
File Import not implemented. Export not implemented. Exit the program completely, all macros are stopped, all changes to characters and macros are automatically saved. Settings Characters edit characters. Macros edit macros. Hotkeys not implemented. View not implemented. Window not implemented. Help not implemented.
Process Display
Process the Shadowbane Process ID (unique per Shadowbane). Character the Character assigned to the Process. Macro each macro assigned to a character. Status Running, Stopped or Paused. Interval of the Delay (only on Delay steps). Step current Description of the step executing. Next Description of the next step to be executed.
Status Bar
Remote Control Status not implemented. Current Keys being held down (global). Last Shadowbane PID this shows the Last Shadowbane process the was activated by the user. Helpful for figuring out which Shadowbane window is which. Mouse Position in the Shadowbane window. Only updated when Shadowbane is active
AGC Process Options
Right click on a Shadowbane Process to get the following options:
Assign Character to the currently selected Shadowbane Process. Unassign Character from the currently selected Shadowbane Process. Add Macro to the currently selected Character (macros are assigned to characters not Shadowbane processes). Global Control Used for Key Cloning. Remote Control not implemented.
AGC Process Macro Options
Right click on a Macro to get the following options:
Stop the macro, when restarted will start at the first step. Start the macro. Pause the macro, when restarted will start from where the macro was paused. Remove the macro from the character.
Наши гильдии в сети: CCCPsb или AFK BOT'S
|
|
|
|