Здравствуйте, гость ( Вход | Регистрация )

> Полезные Советы, Практическое применение. Настройка запуска.
DarkMaster
сообщение 31.10.2010, 18:08
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Нравится UOPilot? Не дай умереть проекту, помоги его развитию!

(IMG:http://i036.radikal.ru/1212/39/3b6c2a6b4581.png) WebMoney
Рубли: R849464451336 РЕКВИЗИТЫ НЕ АКТУАЛЬНЫ
Гривны: U145931779718 РЕКВИЗИТЫ НЕ АКТУАЛЬНЫ
Доллары: Z353114408274 РЕКВИЗИТЫ НЕ АКТУАЛЬНЫ

(IMG:http://s001.radikal.ru/i195/1212/56/6ea72160dd59.png) Яndex-деньги
410011422550405 РЕКВИЗИТЫ НЕ АКТУАЛЬНЫ

Раздел собрал в себе достаточно много действительно необходимой информации, но все так же нуждается в ваших замечаниях, добавлениях и пожеланиях.

Сайт программы UOPilot. На сайте вы всегда можете скачать последнюю версию программы, узнать что нового в последней версии и выразить WKnight (разработчику пилота) свою благодарность (IMG:style_emoticons/default/smile.gif)

Помните, что лучшая благодарность не устная, а звенящая или булькающая! ))
Если вам действительно нравится UOPilot, и вы хотите его дальнейшего развития, то не сочтите за труд- зайдите на сайт пилота и поддержите автора в его замечательной работе!
Поверьте, он потратил на разработку для вас в сотни и тысячи раз больше времени, чем вы потратите для него!
(IMG:style_emoticons/default/wink.gif)

Скачать последнюю версию UO Pilot

ЗАПУСКАТЬ С ПРАВАМИ АДМИНИСТРАТОРА

Хелпов в пилоте два:
?/Помощь по языку скриптов (основы языка)
?/История развития (самые последние обновления)

Wiki для UOPilot - описание различных команд UOPilot и примеры их использования. Можно вносить полезные дополнения/изменения в UOWiki, представившись системе: uouser, uopassword1
Введение в пилотный скриптинг - азы программирования на пилоте. Если вы новичек в программировании на UOPilot, то начните с этой статьи!

Запуск UO Pilot
Командная строка
Для загрузки с параметрами, указанными ниже, отредактируйте ярлык либо создайте bat файл.
1. Загрузка нужного скрипта:
Код
UoPilot.exe /s"{Path to script}"

Пример: "G:\Хранить вечно\uopilot\uopilot.exe" /s"scripts\TitanQuest mana click 2.1.txt" /s"G:\Хранить вечно\uopilot\Scripts\WOW арена 1,22.txt"
При запуске будет загружено 2 скрипта во вкладки 0 и 1. Хочу заметить, что возможны как относительные, так и абсолютные адреса.

2. Выбор клиента:
Код
UoPilot.exe /c"{Path to client}"

Пример: "G:\Хранить вечно\uopilot\uopilot.exe" /c"c:\games\uo\client3.exe"
Работает только для ультимы.
Этот параметр заносит указанную строку в окошко в нижнем левом углу на вкладке разное.
Используется для запуска и автологина, когда стоит ограничение на количество юзеров и народ подолгу стоит в очереди.

3. Автоматический запуск скрипта:
Код
UoPilot.exe /r0 /r12

"G:\Хранить вечно\uopilot\uopilot.exe" /r0
/r0 запустит 0 скрипт. Вместо 0 просто подставьте номер закладки с нужным скриптом.
"G:\Хранить вечно\uopilot\uopilot.exe" /r8 /r10
запустит 8 и 10 скрипты(если надо несколько сразу стартовать)
Если надо запустить пилот из bat-файла сразу с запуском скрипта, то в bat-файле можно написать, например, так:
start "UOPilot" "D:\Install\UOPilot\uopilot.exe" /s"D:\Install\UOPilot\HeroesWM\ThiefGuild14.txt" /r0 /m
(стартовать пилот из указанного места с открытием указанного скрипта (/s) в 0-й вкладке, сразу запустить скрипт с 0-й вкладки (/r0), пилот запускать свёрнутым (/m))

4. Выбор конфигурационного файла:
Код
UoPilot.exe /i"{Path to config}"

пример: "G:\Хранить вечно\uopilot\uopilot.exe" /i "MyCFG.ini".

Может пригодится при запуске нескольких версий пилота, либо для запуска с определенными параметрами. Конфиг хранится по умолчанию в uopilot.ini рядом с uopilot.exe. Хочу обратить внимание на то, что загружаемые скрипты и порядок вкладок, тоже является параметром. Т.е. вы можете создать что-то вроде профиля:
1) Сделать резервную копию uopilot.ini (если вы хотите сохранить текущие настройки.
2) Запустите пилот.
3) Загрузите необходимые скрипты.
4) При необходимости измените настройки.
5) Сохраните настройки.(Настройки/Сохранить настройки)
6) Переименуйте uopilot.ini в любое другое название, например MyCFG.ini
7) Создайте ярлык, например "G:\Хранить вечно\uopilot\uopilot.exe" /i "MyCFG.ini".
Теперь вы всегда сможете запустить пилот с сохраненными настройками. Например вы можете сделать профиль со скриптами только для Л2 и профиль со скриптами только для ВОВ и обычным кликом по ярлыку загрузить нужные вам скрипты и при желании их запустить ключем /r, рассмотренным выше.
-

5. Запуск свернутым:
Код
UoPilot.exe /m

пример: "G:\Хранить вечно\uopilot\uopilot.exe" /m".
Позволяет запускать пилот в свернутом режиме. Если поставить в настройках опцию "сворачивать в трей", то пилот будет свернут в трей.

Запуск скрипта(автоматизация привязки, сворачивание)
Привязка
При запуске скрипта очень важно сделать правильную привязку к окну с которым вы будете работать. Если этого не сделать, то многие команды не будут рабоать (например send, post), так же будет невозможно использовать относительные координаты(клики мышкой, проверка цвета).
Каждый скрипт пилота необходимо привязывать к окну каждый раз перед запуском. Хочу еще раз отдельно обратить внимание, что привязав скрипт №1 к нужному окну, скрипт №2 не привяжется к тому же окну - они работают независимо.
Способа привязки всего три:
1) Сделать окно пилота активным, навести мышку на нужное вам окно(мышкой не нажмиать!!!), нажать на клавиатуре Ctrl+A.
2) Вставить с скрипт следующие строки:
set #handleWin findwindow (ТОЧНОЕ ИМЯ ОКНА)
set workwindow #handleWin
3) 'set #var windowfromcursor' - помещает в переменную #var хендл окна, находящегося под курсором. Таким образом можно сделать простой аналог нажатия ctrl+a:
set #handle windowfromcursor
set workwindow #handle
Так же с помощью этой функции можно собрать несколько хендлов для последующего переключения между окнами:
move x1, y1
set #handle1 windowfromcursor
move x2, y2
set #handle2 windowfromcursor
move x3, y3
set #handle3 windowfromcursor
Достаточно актуально для браузеров, т.к. после каждого обновления страницы привязка окна сбрасывается. Описание данной функции не удалось обнаружить нигде и работоспособность была установлена методом тыка. Возможно это не вся информация.

Внимание! При привязке к окну нужно учитывать, что каждое поле ввода пароля, поиска, каждая флешка в браузере и не только - это все отдельные окна. В том же uTorrent список закачки и список раздач это разные окна. Если вы хотите использовать второй способ для поиска окна вам пригодится InqSoft Window Scanner (отдельно выложен в этом же посте).
1) Запустите WinScanner.exe
2) В левом верхнем углу программы найдите значок прицела, наведенного на окно.
3) Перетащите прицел на нужное вам окно,
4) Нажмите кнопку "Дерево окон" чуть правее поля "Размеры окна".
5) У вас откроется дерево окон с помощью которого вы сможете легко найти целевое окно.
6) Для нахождения окна используйте 'GetWindow (<handle> <OWNER|CHILD|FIRST|NEXT>)'. возвращает хендл дочернего окна от указанного. второй параметр задает направление поиска
Пример:
Код

set #var findwindow (123-456-789 ICQbot - Окно чата)
set #var getwindow (#var CHILD)
set #var getwindow (#var NEXT)
set #var getwindow (#var CHILD)
set #var getwindow (#var CHILD)
set #var getwindow (#var CHILD)
set workwindow #var
Данный скрипт находит окно для отправки сообщений в RnQ (клиент для ICQ).


Сворачивание
Для сворачивания пилота можно использовать следующий скрипт:
Код
set #UOpilot findwindow (UoPilot  v2.18.8   WK)
showwindow #UOpilot minimize

При его использовании надо внимательно отнестись к указанию имени окна, т.к. оно зависит от версии пилота и настроек. Так же внимательно отнеситесь к количеству пробелов в имени окна. Этот скрипт так же можно автоматически запускать при старте ключем /r (подробнее смотрите выше в описании командной строки).

Если у вас в настройках выставлена галочка "сворачивать пилот в трей", то скрипт будет работать не совсем так же как при ручном сворачивании - будет оставаться окно на панели задач. Для того, чтобы полноценно свернуть пилот в трей используйте следующий скрипт:
Код

set #UOpilot findwindow (UoPilot  v2.18.8   WK)
showwindow #UOpilot minimize
showwindow #UOpilot hide

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

1) Выбран неверный способ эмуляции. Существует 3 способа: simple/k/p (например: left, kleft, pleft соответсвенно). Мозилла воспринимает только k эмуляцию. Другие приложения зачастую так же придирчивы к методу эмуляции. Попробуйте их по очереди и найдите тот, который работает в вашем случае.
2) Так же причиной могут стать особенности приложения. Попробуйте сначала переместить мышь на место клика командой move. Так же встречаются особо вредные приложения в которых необходимо поводить мышкой по нужной вам кнопке: делаем move на объект по которому будем производить клик, затем снова делаем move на тот же объект, но в соседнюю точку (просто сместите координату в которую перемещаете на 1 по оси x или y), после этого нажимайте на объект в координатах второго перемещения. Т.е. будет выглядеть примерно так:
move 100, 200
move 101, 200
left 101, 200
3) Приложение не успевает за пилотом. Поставьте задержку в проблемной части скрипта между строк "wait 1000". Это достаточно большая задержка (1 секунда) и ее должно хватить, чтобы выявить проблему, если она именно в скорости обработки приложения. После выявления рекомендуется путем проб и ошибок найти оптимальное значение, чтобы скрипт не был очень медленным, но и не давал осечек.
4) Работа с мышкой возможна только в окне, которое на переднем плане. Т.е. мышка будет кликать только по тому, что вы видите сами. В свернутое окно нажатие не возможно, так же не возможно в окно, которое вы в момент нажатия не видите. Например, если вам необходимо нажать что-то в браузере, а у вас идет фильм на весь экран, то нажатие будет по фильму. Как вариант решения данной проблемы - вы можете установить виртуальную машину, например, VMware. В виртуальной машине вы установите операционную систему и там запустите пилота и ваше приложение (официальный клиент LineageII невозможно запустить из под машины). Таким образом сворачивать вы будете уже не приложение в которое вы посылаете нажатие, а виртуальную машину, что не скажется на работе. Однако хочу заметить, что внутри машины сохраняются выше описанные правила, т.е. целевое окно в машине должно быть развернуто и на переднем плане.

Несколько общих советов по мышке:

1) Работа с мышкой не столь стабильна, как с клавиатурой и вероятность сбоя выше. При возможности используйте клавиатуру. Например, если вы нажимаете скилл в игре и его можно нажать как мышкой так и клавиатурой - без раздумий выбирайте клавиатуру.
2) Если необходимо нажатие с зажатой клавишей:
left 123 234 [abs] [~^rlm]
~ - с шифтом
^ - c контролом
r - одновременно с правой
l - с левой
m - со средней
если указано несколько модификаторов, то должны быть написаны слитно друг с другом
работает для всех кроме тех, что с приставкой 'k'
с альтом просто так не работает, придется его сначала зажимать сендэксом:
sendex @{}
Для отпускания альта нажмите любую клавишу(например, sendex q).
Клавиатура
1) Send/post отправляют нажатие непосредственно в приложение. Sendex отправляет нажатие точно так же, как если бы вы его сделали сами(в активное окно на момент нажатия). Старайтесь не использовать sendex по возможности. Это избавит от возможных ошибочных нажатий в другое окно.
post писался для 32х битных систем xp sp2-3, виста и семерка без сервиспаков, а в 64-битных может не работать.
2) При нажатии с помощью sendex не символьных клавиш необходимо брать их в {}. Например, {F1}{Tab}{Enter}{Spacebar}{Backspace}, но: a,g,h,r и пр. не требуют заключения в {}.
3) Для LineageII желательно использовать post, т.к. send обычно не работает, однако можно и сенд попробовать(т.к. бывает обратная ситуация)
4) Иногда в приложениях бывает защита от эмуляции. В таких случаях sendex может работать в то время, как send и post не будут давать эффекта.
5) Для использования send/post обязательна фокусировка на окно:
ctrl+a по необходимому окну при окне пилота на переднем плане.
либо:
Код

set #whandle findwindow (UoPilot  v2.17   WK)  
set workwindow #whandle

Это сделает рабочим окном пилота версии 2.17.
В первой строке необходимо указать в скобках название окна - в примере это (UoPilot v2.17 WK).
6) Для того, чтобы зажать клавишу можно использовать send_down, который нажмет и будет удерживать клавишу. Для отпускания используйте send_up. Полезно будет, например, для перемещении персонажа. Не работает с Ctrl, Alt, Shift.
7) Для того чтобы зажать Ctrl, Alt или Shift используйте:
sendex @{}
Для отпускания нажмите любую клавишу(например, sendex q).
Клавиши Ctrl, Alt, Shift кодируются символами ^, @ и ~ соответственно.
8) Если вам нужно в скрипте проверить, что нажата какая-либо комбинация кнопок, то можно воспользоваться программой Misc Uopilot. Эта программа умеет выполнять большое количество операций пока что недоступных пилоту (включая работу с вещественными числами), обмениваясь с пилотом информацией через буфер обмена.
Поиск цвета (findcolor)
ВНИМАНИЕ! Findcolor был очень существенно доработан и его функционал значительно расширен. Многие данные не полны, раздел будет правиться. Для более подробной информации смотрите "историю развития программы" изменения в версии 2,20.
1) Findcolor умеет искать диапазоны цветов.
2) В Findcolor можно задавать цвет переменной или массивом. Т.е:
set $a findcolor (154, 80 318, 260 1 1 #color %arr 2)
set $a findcolor (154, 80 318, 260 1 1 $color %arr 2)
set $a findcolor (154, 80 318, 260 1 1 %color [ 1 ] %arr 2)
set $a findcolor (154, 80 318, 260 1 1 123456 %arr 2)
3) Если трудно определить цвет, по которому следует искать объект - воспользуйтесь программой UniqueColorsSearch. Она поможет подобрать лучший вариант для поиска в findcolor. Скачать ее можно тут.
4) Работает он достаточно медленно и при динамической картинке могут быть проблемы. При поиске рекомендуется использовать второй тип поиска (в примерах выше цифра 2 в конце строки), т.к. он существенно быстрее. Если возникают проблемы с корректностью поиска, то используйте стабильный способ ( 1 ).
5) Часто возникает необходимость ожидать появления цвета в определенной области:
а) Самая простая ситуация - нам просто необходимо подождать появления. Для этого можно использовать следующий скрипт:
set $a 0
while $a < 1
set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2)
end_while
Параметры findcolor используйте ваши. Это только пример.
Найденные совпадения будут в двухмерном массиве %arr. Первая размерность отвечает за номер найденой координаты, вторая за X/Y. Во второй размерности 1 соответствует X координате, а 2 Y координате. Т.е.:
%arr [1 1] - Х координата первой найденной точки.
%arr [1 2] - Y координата первой найденной точки.
%arr [2 1] - Х координата второй найденной точки.

б) Так же часто возникает необходимость ожидать появления цвета, после чего сделать клик по первой найденной точке. Для этого чуть дополним скрипт выше:
set $a 0
while $a < 1
set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2)
end_while
left %arr [1 1], %arr [1 2]
Аналогично можно использовать и другие команды мыши.

в) Бывают случаи, когда необходимо нажать чуть в сторону от появившейся точки. Берем все тот же скрипт:
set $a 0
while $a < 1
set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2)
end_while
set #x %arr [1 1] + #deltaX
set #y %arr [1 2] + #deltaY
left #x, #y
#deltaX и #deltaY это разница координат между найденой точкой и точкой по которой необходим клик. Например, если вам надо кликнуть на 30 пикслелей левее и на 12 ниже, то это будет выглядеть так:
set #x %arr [1 1] - 30
set #y %arr [1 2] + 12

г) Был замчен баг в некоторых приложениях. Клик происходил в другие координаты(обычно левее и выше). Наглядно можно увидеть это здесь. Чтобы избежать этой проблемы возьмем уже известную конструкцию по смещению и добавим в нее начальные координаты поиска findcolor:
set $a 0
while $a < 1
set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2)
end_while
set #x %arr [1 1] + #deltaX + 154
set #y %arr [1 2] + #deltaY + 80
left %arr [1 1], %arr [1 2]

д) Для ожидания появления любого из нескольких цветов придется делать на каждый цвет отдельный финдколор:
set $a 0
set $b 0
set $c 0
while ( $a = 0 ) and ( $b = 0 ) and ( $c = 0 )
set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2)
set $b findcolor (154, 80 318, 260 1 1 51556 %arr 2)
set $c findcolor (154, 80 318, 260 1 1 1565651 %arr 2)
end_while
Так же можно использовать другой вариант:
set $a 0
for #i 1 2 0
set $a findcolor (154, 80 318, 260 1 1 2366701 %arr 2)
if $a > 0
break
end_if
set $a findcolor (154, 80 318, 260 1 1 51556 %arr 2)
if $a > 0
break
end_if
set $a findcolor (154, 80 318, 260 1 1 1565651 %arr 2)
if $a > 0
break
end_if
end_for
Второй вариант более быстрый не смотря на громоздкость.
Команды отсутствующие в хелпе
'set $var GetLayout' - возвращает раскладку клавиатуры в переменную $var. Хочу обратить внимание на то что возвращаются только последние 4 числа из 8 определяющих раскладку, так же не смотря на то, что стандартный русский и английский имеют значения 00000419 и 00000409, они являются шестнадцатеричными и другие раскладки могут содержать буквы A-F, следовательно стоит использовать строковую переменную ($), а не числовую (#). В случае не стандарной раскладки настоятельно рекомендую выполнить:
set $a GetLayout
msg $a
т.к. значение может быть неожиданным, например для языка a0000419 раскладка возвращается не 0419, а F0C0.

'set #var windowfromcursor' - помещает в переменную #var хендл окна, находящегося под курсором. Таким образом можно сделать простой аналог нажатия ctrl+a:
set #handle windowfromcursor
set workwindow #handle
или сразу:
set workwindow windowfromcursor

Так же с помощью этой функции можно собрать несколько хендлов для последующего переключения между окнами:
move x1, y1
set #handle1 windowfromcursor
move x2, y2
set #handle2 windowfromcursor
move x3, y3
set #handle3 windowfromcursor
Описание данной функции не удалось обнаружить нигде и работоспособность была установлена методом тыка. Возможно это не вся информация.

'set priority <1|2|3>' - данная команда описана, но не полностью. Устанавливает приоритет 1|2|3 - нормальный, высокий, максимальный. Так же может принимать значение 0 - пониженный приоритет. Особенно бывает полезно, если вы используете нулевые задержки между строк - пилот не повесит систему.
'current_script' добавил переменные, возвращающие номер закладки текущего 'current_script' и активного 'active_script' скрипта.
Обход защит
Если приложение говорит о взломе, либо закрывается при запущенном пилоте, то вероятно оно обнаруживает и пилот.
1) Измените название окна с пилотом. Это возможно сделать следующими способами:
а) Настройки/Пустая строка ниже "Показывать все окна" - поставится галочка. При перезапуске название изменится.
б) Внимательно отнеситесь к заголовку. В нем написана версия и соответственно нужно поправить при отличной от вашей.
Код
set #UOpilot findwindow (UoPilot  v2.18.5   WK)
set #result setwindowtext (#UOpilot Траляля)

2) Переименуйте uopilot.exe во что нибудь другое. Ну скажем notepad.exe
3) Поэкспериментируйте с порядком запуска. Сначала пилот, потом приложение либо наоборот.
Не палимся в онлайн-играх или что делать, чтоб не поймали. Боремся с неработающими кликами
Во многих онлайн-играх существуют различные защиты, отслеживающие работающих "ботов" и потом банящие игроков за это (или просто мешающие работе скриптов через несколько секунд после старта). Для обхода защиты, которая блокирует клики через несколько секунд после старта скрипта, нужно использовать рандомные (случайные) места кликов и рандомные задержки между командами.
Этому вопросу посвящена отдельная тема Не Палимся В Mmog
UltimaOnline(переменные, работа с памятью)
Для работы пилота с переменными ультмы(ХП, цели, объекты) необходимо выбрать версию вашего клиента UO в закладке "Еще", поле "Cl.v. Если ваша версия отсутствует либо значения определяются не правильно, то вы можете самостоятельно указать адреса в памяти, где хранятся эти значения, для этого выберете версию "custom".
Всё, кроме CP и LMess ищется с помощью артмани, и просто вписываются адреса.
Для поиска CP и LMess нужно выбрать версию клиента в окошке непосредственно под ними.
СР ищется по имеющейся наличности. ее нужно ввести в самое первое окошко, и нажать маленькую кнопочку слева, запустив тем самым процесс поиска. В соседнем окошке будет бежать текущий адрес, пока не найдется верный. Для корректного поиска и в дальнейшем отображения, в клиенте при старте должна автоматически открываться панелька со статами.
LMess ищется по первым 16\32 символам последнего сообщени, в зависимости от кодировки. крайне желательно, чтоб сообщение такое было одно в журнале, в остальном по аналогии с СР.
Остановить процесс поиска к сожалению нельзя, придется снимать задачу.
Так же может оказаться полезной следующая тема https://forum.uokit.com/index.php?showtopic=12398 .
По поиску изменяющихся адресов в памяти читайте 10 раздел справки ArtMoney
Исправленные баги
Этот раздел может пригодиться. если в силу каких-то причин вы используете не последнюю версию пилота.

Если закрыть окно логов нажатием на крестик, то открыть его уже не получиться - вылезет ошибка. Чтобы ее избежать используйте set logging close - это без вреда закроет окно лога, можно запустить из любого скрипта(в том числе из только что созданной закладки). Если все же закрыли окно нажатием на крестик, то поможет только перезапуск пилота.
Если зайти в настройки, то чуть ниже "показывать все окна" будет пустая строка, можно поставить галочку нажав на нее. Эта строка отвечает за название окна - вместо "UoPilot" будет "УоПилот". Помогает для скрытия пилота от античитерских программ.


При работе нескольких скриптов, которые друг друга останавливают и запускают снова - вылетает ошибка. Пока ждем фикса - можно решить следующими способами:
1) Можно создать процедуру которая будет запускать/останавливать скрипт.
Код
proc startscript #startNumber
start_script #startNumber
end_proc
Когда будет необходимо запустить какой-либо скрипт используем вызов этой процедуры:
Код
set #startNumber n // Где n номер вкладки, которую необходимо запустить
call startscript #startNumber
Аналогично для остановки скрипта:
Код
proc stopscript #stopNumber
stop_script #stopNumber
end_proc
Когда будет необходимо остановить какой-либо скрипт используем вызов этой процедуры:
Код
set #stopNumber n // Где n номер вкладки, которую необходимо остановить
call stopscript #stopNumber
2) Есть другое решение проблемы, но его рекомендую НЕ использовать. Оно менее корректно.
Код
start_script 1
stop_script 1
start_script 1
3) Ну и очевидный совет. Зачастую можно обойтись без нескольких скриптов, сделав один большой без каких либо потерь по производительности и функциональности. Задумайтесь, не Ваш ли это случай?


Лог открывается левее окна пилота. Если пилот был придвинут к левому краю экрана, то лог может оказаться за пределами экрана. Но это не страшно, т.к. в самой команде открытия лога можно задать координаты:
set logging open 0 0
Если вы уже открыли окно логов и вам его нужно перетащить, то сначала закройте его:
set logging close
set logging open 0 0


История развития тоже открывается справа или слева от окна пилота(куда поместится - там и откроется). Если растянуть окно пилота во всю ширину экрана, то открывшаяся история развития будет за пределами экрана. Для того чтобы ее увидеть просто уменьшите размер окна пилота по горизонтали и дважды нажмите "?/Исторя развития".


Kleft не смотря на галочку "Настройки/Возвращать курсор после кликов мышью" не вернет ее на место. Два решения:
1)
move x, y
kleft x,y
Как это взаимосвязано остается только догадываться, но это работает. К тому же при такой реализации будет более корректное нажатие, что позволит в некоторых приложениях избежать проблем с несрабатыванием клика. Компенсация бага "фичей" не лучшее решение, т.к. это может перестать работать со следующими версиями.
2)
get mouse_pos x1, y1
kleft x2, y2
move x1, y1
Этот вариант несколько медленнее, но более корректный и шанс что со следующими версиями пилота перестанет работать ничтожен.


В версиях 2.18 и выше отвалился поиск в истории развития. Для того чтобы было удобно пользоваться справкой можно просто скопировать весь текст в блокнот. Так же можно скачать текстовый файл с историей развития https://forum.uokit.com/index.php?act=A...post&id=894 .

В версии 2.18.8 появились проблемы с изменением переменных других скриптов. Поясняю:
set #a.5 123 - работать не будет.
Но вы можете продолжать использовать считывание переменной из другого скрипта:
msg #a.5 - ошибок не вызовет.
Так же для обхода данного бага в некоторых ситуациях вы можете использовать следующую конструкцию:
Код
Скрипт №1
set #b #a.2
set #b 123
Скрипт №2
set #a #b.1 // Расположение данной строки индивидуально для каждого скрипта.
// Место и условия выполнения данной операции вы должны определить сами.


В пилоте поддерживается вложенный вызов процедур. Но если процедуры располагаются в теле скрипта - это вызовет ошибку. Для корректной работы необходимо вынести данные процедуры в файл процедур(скрипт/открыть файл процедур), он всегда является 99 вкладкой.
Код
call func1 // Вызов из основного скрипта
end_script

proc func1 // Содержание файла процедур.
    call func2
end_proc
proc func2
    msg func2
end_proc


На Win7 и возможно висте, если при выполнении кода:
while 14, 1 2967129 and 14, 79 2241858 and 205, 24 5856608 and 203, 59 8288627 and 377, 16 9676461 and 378, 78 5266012
wait 1
end_while
навести мышкой на панельку включения выключения скриптов и их нумерацию, то цикл прервется.
Старые версии пилота
Прикрепленный файл  uopilot_2_17.rar ( 496,5 килобайт ) Кол-во скачиваний: 22351

Прикрепленный файл  uopilot_2.18.2.rar ( 510,93 килобайт ) Кол-во скачиваний: 27829

Прикрепленный файл  uopilot_2.18.3.rar ( 510,82 килобайт ) Кол-во скачиваний: 17677

Прикрепленный файл  uopilot_2.18.4.rar ( 510,88 килобайт ) Кол-во скачиваний: 25483

Прикрепленный файл  uopilot_2.18.5.rar ( 511,72 килобайт ) Кол-во скачиваний: 23456

Прикрепленный файл  uopilot_2.18.6.rar ( 512,02 килобайт ) Кол-во скачиваний: 22163

Прикрепленный файл  uopilot_2.18.7.rar ( 512,65 килобайт ) Кол-во скачиваний: 18924

Прикрепленный файл  uopilot_2.18.8.rar ( 512,73 килобайт ) Кол-во скачиваний: 28570

Прикрепленный файл  uopilot_2.19.zip ( 590,66 килобайт ) Кол-во скачиваний: 26835

Прикрепленный файл  uopilot_2.20.zip ( 528,38 килобайт ) Кол-во скачиваний: 19224

Прикрепленный файл  uopilot_2.21.zip ( 534,24 килобайт ) Кол-во скачиваний: 21788

Прикрепленный файл  uopilot_2.21.1.zip ( 534,78 килобайт ) Кол-во скачиваний: 25866

Прикрепленный файл  uopilot_2.21.2.zip ( 534,95 килобайт ) Кол-во скачиваний: 22935

Прикрепленный файл  uopilot_2.22.zip ( 584,92 килобайт ) Кол-во скачиваний: 19595

Прикрепленный файл  uopilot_2.23.zip ( 597,42 килобайт ) Кол-во скачиваний: 17981

Прикрепленный файл  uopilot_2.24.1.zip ( 599,44 килобайт ) Кол-во скачиваний: 20756

Прикрепленный файл  uopilot_2.27.zip ( 600,22 килобайт ) Кол-во скачиваний: 20803

Прикрепленный файл  uopilot_2.27.1.zip ( 601,2 килобайт ) Кол-во скачиваний: 21738

Прикрепленный файл  uopilot_2.27.2.zip ( 602,5 килобайт ) Кол-во скачиваний: 18940

Прикрепленный файл  uopilot_2.28.zip ( 606,37 килобайт ) Кол-во скачиваний: 20143

Прикрепленный файл  uopilot_2.29.zip ( 683,66 килобайт ) Кол-во скачиваний: 18776

Прикрепленный файл  uopilot_2.30.zip ( 695,66 килобайт ) Кол-во скачиваний: 21056

Прикрепленный файл  uopilot_2.31.zip ( 696,5 килобайт ) Кол-во скачиваний: 21452

Прикрепленный файл  uopilot_2.32.zip ( 717,66 килобайт ) Кол-во скачиваний: 17439

Прикрепленный файл  uopilot_2.33.zip ( 761,16 килобайт ) Кол-во скачиваний: 19019

Прикрепленный файл  uopilot_2.34.zip ( 692,13 килобайт ) Кол-во скачиваний: 18357

Прикрепленный файл  uopilot_2.35.zip ( 696,36 килобайт ) Кол-во скачиваний: 18050

Прикрепленный файл  uopilot_2.36.zip ( 724,84 килобайт ) Кол-во скачиваний: 17386

Прикрепленный файл  uopilot_2.36.1.zip ( 937,71 килобайт ) Кол-во скачиваний: 18749

Прикрепленный файл  uopilot_2.36.2.zip ( 727,6 килобайт ) Кол-во скачиваний: 17092

Прикрепленный файл  uopilot_2.37.zip ( 729,36 килобайт ) Кол-во скачиваний: 20227

Прикрепленный файл  uopilot_2.38.zip ( 1,2 мегабайт ) Кол-во скачиваний: 19236




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

GML расширение функционала

Тема на форуме
Misc Uopilot ловит из буфера спец ключ misc и то что после него исполняет, функции и синтаксис должны быть на GML (это JS подобный язык в движке Game Maker).
Все скрипты примеры выполняется при запущенной программе.

Окошко с возможностью отображения 4х строк на своей поверхности:
Код
set linedelay 20
set clipboard misc window_set_showborder(0) //Границы вокруг окна (0-1).
set clipboard misc window_set_rectangle(600,0,400,20) //Позиция и растягивание размера окна (x, y, w, h).
set clipboard misc window_set_stayontop(1) //Поверх всего (0-1).
set clipboard misc t1x=4; t1y=2; t1t='Хп:' //Обьект текст1 (t1x=x, t1y=y, t1t=text)
set clipboard misc t2x=100; t2y=2; t2t='Мп:' //Обьект текст2
set clipboard misc t3x=200; t3y=2; t3t='Стам:' //Обьект текст3
set clipboard misc t4x=300; t4y=2; t4t='Голд:' //Обьект текст4
set #hp 0
:re2
set clipboard misc t1t='Хп: ' + '#hp' //Динамическое изменение текста1
wait 100
set #hp #hp + 5
if #hp < 101
goto re2
end_if
end_script

Вариант 2:
Код
set linedelay 2
set #handleWin findwindow (Misc_uopilot) //Получение хендла окна миска
set #result setwindowtext (#handleWin, misc window_set_showborder(0)) //Границы вокруг окна (0-1).
set #result setwindowtext (#handleWin, misc window_set_rectangle(600,0,400,20)) //Позиция и растягивание размера окна (x, y, w, h).
set #result setwindowtext (#handleWin, misc window_set_stayontop(1)) //Поверх всего (0-1).
set #result setwindowtext (#handleWin, misc t1x=4; t1y=2; t1t='Хп:') //Обьект текст1 (t1x=x, t1y=y, t1t=text)
set #result setwindowtext (#handleWin, misc t2x=100; t2y=2; t2t='Мп:') //Обьект текст2
set #result setwindowtext (#handleWin, misc t3x=200; t3y=2; t3t='Стам:') //Обьект текст3
set #result setwindowtext (#handleWin, misc t4x=300; t4y=2; t4t='Голд:') //Обьект текст4
set #hp 0
:re2
set #result setwindowtext (#handleWin, misc t1t='Хп: ' + '#hp') //Динамическое изменение текста1
wait 100
set #hp #hp + 5
if #hp < 101
goto re2
end_if
end_script


Выключается нажатием искейпа если активно его окно, либо из скрипта:
Код
set clipboard misc game_end()


Изменение размера окна миска:
Код
set clipboard misc room_set_width(0,400) //Ширина (0, w).
wait 20
set clipboard misc room_set_height(0,20) //Высота (0, h).
wait 20
set clipboard misc room_restart()//Перезапуск окна, после этого все настройки сбиваются, поэтому делается в первую очередь.
wait 20
end_script


Выполнение:
Выполнение кода в миске происходит 1 раз при таком обращении:
Код
set clipboard misc room_set_height(0,20)
или в альтернативном:
set #handleWin findwindow (Misc_uopilot) //Получение хендла окна миска
set #result setwindowtext (#handleWin, misc e_stp0='draw_rect_screen(1100,0,1150,20)')

(Функция room_set_height(0,20) заносится в строковую переменную и выполняется, после чего переменная очищается(это может быть и не функция а большой кусок кода))
Для многократного выполнения есть спец переменные в которых код не очищается и выполняется 1 раз каждый шаг, шаг можно изменить, и пока он по умолчанию 5мс (200 раз в секунду=фпс 200)
Обычные функции требующие постоянного выполнения должны быть в событии Step:
e_stp0, e_stp1, e_stp2... e_stp10
Функции рисования должны быть в событии Draw:(за исключением функций рисования вне окна, они могут быть в step)
e_drw0, e_drw1, e_drw2... e_drw10
Также есть таймерные события отличающиеся от step только тем что выполняются раз в 10, 100, 1000 шагов:(для повышения производительности)
e_slow10
e_slow100
e_slow1000
Таким образом можно засунуть свой код в строковую переменную(например e_slow10), обработчик будет постоянно его выполнять до тех пор пока не завершена программа или не будет очищена переменная:
Код
set clipboard misc e_slow10='room_set_height(0,20)'
set clipboard misc e_slow10=''


Выполнение:(способ 2)
Отличие лишь в том что при таком обращении код помещается не в буфер а в заголовок окна миска, где он успешно отлавливается и выполняется, затем заголовок возвращается в исходное состояние:(misc_uopilot).
Код
set linedelay 0
set #handleWin findwindow (Misc_uopilot) //Получение хендла окна миска
set #result setwindowtext (#handleWin, misc e_stp0='draw_rect_screen(1100,0,1150,20)') //Установка кода в качестве заголовка, через несколько мс вернется обратно
//Обратная связь
set $x 100
set #result setwindowtext (#handleWin, misc clipboard_set_text(string(random($x)))// Ответ будет в буфере
set #result setwindowtext (#handleWin, misc room_caption=string(random($x))//Ответ будет в заголовке
wait 2
set $x2 GetWindowtext (#handleWin) //Получаем ответ из заголовка, можно не успеть забрать или опоздать, до изменения заголовка обратно
wait 20
get clipboard $x //Получаем ответ из буфера, намного надежнее
msg $x $x2
end_script


Графика на экране:
Есть функции рисования которых нет в документации (потому что они из дллки), полезны тем что в отличие от стандартных позволяют рисовать вне окна то есть в любом месте экрана: (линии, текст, прямоугольники)
Код
set linedelay 20
set clipboard misc set_pen(1,c_red) //Установка ширины линии и цвета(ширина, цвет).
set clipboard misc set_brush(c_lime) //Установка цвета прямоугольника(цвет).
set clipboard misc e_slow100='draw_rect_screen(1100,0,1150,20)' //Функция рисования прямоугольников на экране(лево, право, верх, низ).
set clipboard misc e_drw0='draw_rect_screen(1155,0,1175,20)'
set clipboard misc e_slow10='draw_line_screen(10,10,300,10)' //Функция рисования линий на экране(x1, y1, x2, y2).
set clipboard misc e_stp0='draw_text_screen(1000,1,"Misc Uopilot",c_aqua)'//Функция рисования текста на экране(x, y, текст, цвет).
//еще есть рисование текстуры но по крайней мере у меня оно начинает глючить через несколько минут
//set clipboard misc pic = load_bitmap("1test.bmp") //Загрузка текстуры.
//set clipboard misc e_stp1='draw_bitmap_screen(pic,400,0)'//Функция рисования текстуры на экране(x, y, текст, цвет).
end_script


Пример обратной связи:
Код
set $x 100
set clipboard misc clipboard_set_text(string(random($x)))
wait 20
get clipboard $x
set clipboard ""
msg $x
end_script


Скачать Misc Uopilot и документацию:
Misc_uopilot.7z:
http://zalil.ru/33626056
Game_Maker8_Документация_ru_en.7z:
http://zalil.ru/33622973
Определение диапазона цветов
При поиске диапазона цветов часто бывает затруднительно определить границы искомых цветов. В данной ветке есть скрипт для сбора возможных оттенков и два удобных решения, которые покажут необходимые значения диапазона цветов.
https://forum.uokit.com/index.php?showtopic=22116
UniqueColorsSearch
Unique Colors Search - программа анализа набора изображений с расширенной статистикой цветов. Полезна для нахождения уникальных цветов объекта(например мобов), для поиска наиболее распространненых цветов, подбора нескольких оптимальных цветов.
Позволяет сгенерировать условие поиска картинки в пилоте.
Скачать
Подробное описание/задать вопрос
Screen Scanner
Screen Scanner (cscan.exe)- аналог findcolor (в UOPilot), но обладает гораздо большими возможностями.

Плюсы и минусы по сравнению с findcolor:
Минусы:
- внешняя утилита, а значит не встроена в сам пилот и обмен данными со скриптом происходит не совсем естественным образом (через файл или буфер обмена);
- приходится искусственно задерживать ход выполнения скрипта пока не будут получены данные от программы- см. пример скрипта в конце 1-го сообщения в теме программы (в findcolor скрипт сам "притормаживает" в строке поиска).

Плюсы:
- любые параметры - границы области поиска, шаг поиска. цвета поиска и т.д. можно задавать в виде переменных;
- можно искать прямоугольные изображения из указанных графических файлов;
- можно производить поиск как до первой подходящей точки (ускорение работы), так и до любого указанного количества (параметр -plimit);
- можно указывать один или несколько цветов для поиска через запятую;
- можно указывать цветовые диапазоны для поиска;
- можно указывать отдельные значения и диапазоны цветовых RGB-каналов для поиска;
- можно комбинировать все вышеперечисленные методы поиска через запятую;
- возвращаются координаты найденных точек без всяких дополнительных смещений (как есть);
- можно вместо координат и цветов точек просто получить количество подходящих пикселов (параметр -pcount);
- можно искать координаты области, ограничивающей все пиксели всех указанных цветов (параметр -crop);
- можно изменять шаг поиска по осям X и Y(как и в findcolor), что реально ускоряет поиск (параметры -dx, -dy);
- можно изменять порядок проверки пикселей по осям X и Y (указывая -dx или -dy меньше нуля);
- можно опускать ненужные параметры - программа примет значения по умолчанию;
Подробное описание/задать вопрос
uowin
С помощью этой программы вы сможете получить об окне подробную информацию, в том числе размеры окна, координаты, состояния: минимизировано, максимизировано, восстановлено, активно, выключено.
Пример использования в пилоте:
Код
exec d:\uowin.exe 5534723 c:\my folder\arr.txt // в arr.txt  будут записаны параметры окна
load_array %arr c:\my folder\arr.txt // Загружаем информацию в пилот.
Более подробный хелп идет вместе с программой.
Скачать
Подробное описание/задать вопрос
Dec2RGBHex

Эта утилита позволит быстро определить диапазон цветов, который необходимо задать для проверок. Для обработки вам необходимо будет создать файлик, в котором будут содержаться возможные цвета. Сделать его можно следующим скриптом:
Код
wait 5s // Делаем паузу, чтобы развернуть нужное приложение и навести мышь на нужную точку.
set timer
set #n 1
get mouse_pos #x #y
while timer < 20000 // Собираем все цвета в выбранной точке на протяжении 20 секунд.
    get  color #colorForArr #x, #y
    set %colorArr [#n] #colorForArr // Напрямую массив испльзовать нельзя.
    set #n #n + 1
end_while
save_array %colorArr d:\color.txt
alarm // Подаем звуковой сигнал об окончании работы скрипта.
stop_script
Скачать
InqSoft Window Scanner
Эта программа позволяет не только просматривать большое количество параметров окон, таких, как размеры, видимость, текст и имя класса окна, но и изменять многие из них. Кроме того, программа способна строить дерево окон, просматривать главное меню окон, управлять потоками и процессами, включать отключенные пункты меню и многое другое.
Кроме того, InqSoft Window Scanner включает в себя инструменты для решения некоторых специфических задач, таких. как: захват содержимого окон с экрана, захват цвета нужного пикселя, принудительное извлечение данных из окон, редактирование памяти процесса и многое другое.
Так же это программа может пригодиться для привязки пилота к нужному окну. Более подробно это описано в разделе "Запуск скрипта", пункт "привязка".
Скачать c сайта Прикрепленный файл  InqSoft_Window_Scanner_1.7.zip ( 1,22 мегабайт ) Кол-во скачиваний: 25463

Скрипт поиска дочернего окна (генерирует готовый код)
http://forum.uokit.com/index.php?showtopic=26742
Код
set linedelay 0
// Версия скрипта 1.3.
// Данный скрипт предназначен для автоматической
// генерации кода поиска дочернего окна.
// Автор DarkMaster.
// Вопросы и предложения оставляйте на фореме
// в спецальной теме по данному скрипту.
// http://forum.uokit.com/index.php?showtopic=26742
set #handlePilot findwindow ()
log #handlePilot
log close
log clear
log open

set #logSizeX 300
set #logSizeY 200

set #handleLog 0
while #handleLog = 0
      set #handleLog findwindow (Log Window)
end_while
set #x (screenwidth  - #logSizeX) / 2
set #y screenheight / 4
set windowpos #x #y #logSizeX #logSizeY #handleLog
log mode compact

set workwindow 0
showwindow #handlePilot
log Укажите родительское окно (Ctrl+A)
while workwindow = 0
      wait 100
      showwindow #handlePilot
end_while
set #startHandle workwindow

log Теперь укажите дочернее окно (Ctrl+A)
while workwindow = #startHandle
      wait 100
      showwindow #handlePilot
end_while
set #targetHandle workwindow
log clear

// Получаем имя родительского окна.
set $ownerTitle getwindowtext (#startHandle)
if  $ownerTitle != "" // Генерируем только если у родительского окна есть имя.
    set $findwindow "findwindow"
    log set #ownerHandle $findwindow ($ownerTitle)
end_if

// Ищем от дочернего к родительскому, чтобы знать все child'ы
set %middleOwnerHandle #targetHandle
set #i 1
set #n 1
while #startHandle <> %middleOwnerHandle [ #i ]
      set #i #i + 1
      set #arrToIntTmp %middleOwnerHandle [ #n ]
      set %middleOwnerHandle [ #i ] getwindow (#arrToIntTmp owner)
      set #n #n + 1  
end_while

set #sizeMiddleOwnerHandle size (%middleOwnerHandle)

// Перебираем от родительского к дочернему.
set $beginString "set #tmp getwindo"
set $middleString "w (#tmp"
set $w "w"
set #var getwindow (#startHandle child)
log set #tmp getwindo$w (#ownerHandle child)
set #i #sizeMiddleOwnerHandle - 1
set $direction ""
while #var <> #targetHandle  
      if  $direction <> ""
          log $beginString$middleString $direction)
      end_if
      // Выход за пределы массива
      if  #i > #sizeMiddleOwnerHandle
          log Ошибка!
          log Пути от родительского окна
          log к дочернему не существует.
          log Возможные причины данной ошибки:
          log 1) Вы спутали местами дочернее и родительское окно.
          log 2) Вы промазали и нажали Ctrl+A по другому окну.
          log 3) Дочернее окно не принадлежит родительскому.
      end_if
      // Текущее окно совпало с одним из чайлдов,
      // найденных в начале скрипта  
      if  %middleOwnerHandle [ #i ] = #var
          set #var getwindow (#var child)        
          set $direction child
          set #i #i - 1
      else
          set #var getwindow (#var next)
          set $direction next
      end_if
end_while
log set #childHandle getwindo$middleString $direction)

set #x (screenwidth  - #logSizeX) / 2
set #y screenheight / 4
set #logSizeX 450
set #logSizeY screenheight / 8 * 5

set windowpos #x #y #logSizeX #logSizeY #handleLog

set $tmp "http:/"
set $tmp2 "/forum.uokit.com/index.php?showtopic=26742"
log
log  Автор скрипта DarkMaster.
log  Ветка на форуме: $tmp$tmp2


stop_script
FastStone Capture
FastStone Capture - отличная программа для определения цвета отдельных пикселей на экране (есть встроенная экранная лупа). Помимо этого позволяет производить на экране измерения расстояний, снятие скриншотов, запись видео в файл и много другое! Программа shareware, но в инете можно найти и портабельные версии.
Скачать
Dec -> Hex

Данный скрипт переводит из число из десятичного в шестнадцатеричное. Использование:
1) Поместить скрипт в конец вашего скрипта.
2) поместить переменную в #decCount число для перевода. Например: set #decCount 123456789.
3) вызвать подпрограмму. gosub DecToHex.
4) преобразованное число будет содержаться в переменной $hexCount
Код
set #decCount 123456789
gosub DecToHex

:DecToHex
while #decCount > 16
    set #ostatock #decCount - ( #decCount / 16 * 16)
    set #decCount #decCount / 16
    gosub format
    set logging  #decCount #ostatock || $hexCount
end_while
set #ostatock #decCount - ( #decCount / 16 * 16)
gosub format

return

:format  // Формирование внешнего вида числа.
    if #ostatock < 10
        set $hexCount #ostatock$hexCount
        return
    end_if
    if #ostatock = 10
        set $hexCount A$hexCount
        return
    end_if
    if #ostatock = 11
        set $hexCount B$hexCount
        return
    end_if
    if #ostatock = 12
        set $hexCount C$hexCount
        return
    end_if
    if #ostatock = 13
        set $hexCount D$hexCount
        return
    end_if
    if #ostatock = 14
        set $hexCount E$hexCount
        return
    end_if
    if #ostatock = 15
        set $hexCount F$hexCount
        return
    end_if
    msg Ошибка вычислений.
return
Детектор движений мышки

Данный скрипт будет отслеживать перемещения мышки. Если активность не наблюдалась заданное время, то сработает ваш код. Может быть полезно для автоматического запуска при простое или для контроля работы других ваших скпиптов, например, если вылетел скрипт, значит не водит мышкой - можно перезапустить или подать тревогу.
Код
get mouse_pos #xLast #yLast
set #timerAFK timer + 3000

:start
get mouse_pos #x #y
if ( #x = #xLast ) and ( #y = #yLast )
    if #timerAFK < timer
    set logging #timerAFK > timer
        СЮДА ПИШЕМ ЧТО СДЕЛАТЬ ПРИ ПРОСТОЕ(запуск/остановка скрипта, изменение переменной и т.д.)
    end_if
else
    set #timerAFK timer + 3000 // ВРЕМЯ ПРОСТОЯ в миллисекундах (1000 = 1 секунда)
end_if
set #xLast #x
set #yLast #y
goto start
Создание bat файла

Создать bat достаточно просто - вам всего лишь потребуется написать массив и сохранить его. %bat [#n], где #n номер строки в батнике. Для запуска используйте команду exec. Пример:
Код
set %bat [1] chcp 1251 // Адаптируем кодировку под пилот.
set %bat [2] echo Сейчас будет небольшая демонстрация бат файла.
set %bat [3] pause
set %bat [4] chcp 866 // Многие функции требуют дос кодировку.
set %bat [5] tasklist
set %bat [6] chcp 1251 / Адаптируем кодировку под пилот.
set %bat [7] echo Это список запущенных процессов на вашем компьютере. Завершаем работу батника.
set %bat [8] pause
save_array %bat "d:\Test.bat" // Не забываем кавычки.
exec "d:\Test.bat" //  Не забываем кавычки.
stop_script

Уничтожение массива
Способ уничтожить массив.
Код
set size (%arr)

Управление UOPilot через QiP

С помощью этого скрипта можно давать команды пилоту через QiP 2005.
1) Пишете в чат с удаленного компа "еще" (без кавычек).
2) Пишете какую команду выполнить.
Код
//Укажите полный адрес в кавычках к файлу истории квипа.
set $historyPatch "d:\qip\123456789.txt"

load_array %arr $historyPatch
set #n size (%arr) - 1
msg %arr [#n] // Это и будет ваше последнее сообщение
set $lastPost %arr [#n]
:start
if $lastPost = старт1 // ПРИМЕР 1
msg start1
end_if
if $lastPost = стоп1 // ПРИМЕР 2
msg stop1
end_if

:waiting
load_array %arr $historyPatch
set #n size (%arr) - 1
set $lastPost %arr [#n]
if_not $lastPost = еще
wait 200
goto waiting
end_if
while $lastPost = еще
load_array %arr $historyPatch
set #n size (%arr) - 1
set $lastPost %arr [#n]
wait 200
end_while
goto start
Преобразование Цветов Dec -> Rgb (hex), Нахождение Диапазонов

Если UOPilot не работает/не кликает/не печатает/не находит цвет, то прочтите этот пост.

На форуме есть огромное количество примеров работающих скриптов. Прежде чем спрашивать - как работает та или иная команда - воспользуйтесь ссылкой "Поиск" вверху окна форума! Также желательно просмотреть эту тему до конца и посмотреть хелп в пилоте. Там тоже есть поиск...

Сообщение отредактировал DarkMaster - 20.12.2022, 23:14


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
DarkMaster   Полезные Советы   31.10.2010, 18:08
DarkMaster   Нашел способ уничтожить массив. set $a findco...   15.1.2011, 13:47
alex-sm89   Здравствуйте! Меня интересует вопрос, как изме...   23.1.2011, 20:26
DarkMaster   Скрипт это. В любую вкладку скрипта и запустить. ...   23.1.2011, 21:15
alex-sm89   set #UOpilot findwindow (UoPilot v2.18.8 WK...   23.1.2011, 21:36
DarkMaster   RE: Полезные Советы   23.1.2011, 22:57
DarkMaster   https://forum.uokit.com/index.php?s=&am...st...   5.2.2011, 10:25
Zeleax   Продолбался немало времени пока понял, что процеду...   1.3.2011, 0:25
Zeleax   правильно, будет ошибка выполнения // скрипт 1 - ...   1.3.2011, 7:50
Zeleax   Часто на форуме появляются темы и посты типа: Так...   6.3.2011, 9:35
ПрогерМ   Все что есть в меню 2.18 Время year Текущее в...   10.3.2011, 14:42
DarkMaster   Вычистил весь флуд. ДАННАЯ ТЕМА ТОЛЬКО ДЛЯ ОБСУЖД...   13.3.2011, 12:12
ПрогерМ   21.02.2009 Версия 2.14   13.3.2011, 20:11
Zeleax   Предлагаю сюда добавить совет (сообщение 22) по по...   14.3.2011, 8:18
Zeleax   FastStone Capture - отличная программа для определ...   3.4.2011, 4:11
_LESTAT_   Привет, не знаю пригодиться ли кому. Если вы опред...   9.4.2011, 10:51
WKnight   жаль что впилоте нет нужной команды для простого к...   19.7.2011, 12:36
DarkMaster   макс длинна строковой переменной 255 символа   9.4.2011, 13:22
Sanny   В какой-то из тем был вопрос типа "а можно ли...   16.4.2011, 1:23
_LESTAT_   Вот и лопнуло мое терпение, надоело мучаться с тем...   17.4.2011, 19:50
DarkMaster   мне кажется потратив немного времени можно вытяну...   17.4.2011, 20:05
-AL-   у меня информация по поводу вызовов и остановов ск...   22.4.2011, 11:39
DarkMaster   ищу версии отсутствующие в данной теме, особенно 2...   25.5.2011, 4:48
Zeleax   Предлагаю в описании findcolor заменить условие пр...   11.6.2011, 7:42
Zeleax   Здраствуйте, Ктонибудь может подсказать почему ко...   25.6.2011, 7:17
WKnight   в след.версии: при ошибке альтернативного определе...   17.7.2011, 8:24
Zeleax   в след.версии: при ошибке альтернативного определ...   17.7.2011, 9:13
WKnight   основной - getpixel, альиернативный - скриншот. в ...   19.7.2011, 12:49
DarkMaster   А если будет использован обычный способ определен...   19.7.2011, 15:19
WKnight   Если именно "не найдено", то ноль, незав...   19.7.2011, 17:19
ДЖОНИ   Возможно ли сделать чтоб программа висела сверху н...   3.9.2011, 19:44
DarkMaster   Временно прилепляю сюда. В подфорумах прав нет...   6.9.2011, 4:51
DarkMaster   текст   10.9.2011, 5:35
DarkMaster   пцукпц   10.9.2011, 16:47
DarkMaster   это не оффициальные версии. на ваш страх и риск.   22.9.2011, 22:44
Zeleax   //привязка к рабочему окну, первоначальная настрой...   17.10.2011, 12:15
-AL-   доброго времени суток, спасибо за раздел и советы,...   25.10.2011, 18:35
Zeleax   Вообще-то уже 2.22 на оф.сайте пилота есть. Совме...   25.10.2011, 19:30
-AL-   Вообще-то уже 2.22 на оф.сайте пилота есть. Совм...   25.10.2011, 19:47
Zeleax   да многолетний опыт работы с софтом, обычно стары...   25.10.2011, 20:11
DarkMaster   Временная заготовка. Findimage предназначен для по...   14.11.2011, 15:29
Zeleax   Возможный вариант решения проблемы неработающей кл...   15.11.2011, 8:28
Zeleax   А знаете ли Вы что: 1) в устаревших версиях пилота...   14.12.2011, 18:14
Zeleax   где можно скачать версию 2.23? Версии пограммы U...   14.12.2011, 20:31
Zeleax   Небольшая процедура checkcolor для проверки значен...   12.1.2012, 13:18
WKnight   еще есть галочка "перемещать курсор в точку ...   13.1.2012, 2:22
Zeleax   Вопрос: Как задать рандомное (случайное) время ожи...   15.1.2012, 21:42
Zeleax   Буду собирать в этом посте дополнительную подборку...   19.1.2012, 13:27
Zeleax   я уже давно на панель быстрого запуска добавил ба...   24.1.2012, 0:31
Zeleax   Для помощи в игре LA2 и для борьбы с фростом сдел...   24.1.2012, 9:38
Zeleax   Пример написания своего плагина к пилоту   27.1.2012, 14:11
Zeleax   Есть автоматическое переименование пилота при зап...   28.1.2012, 9:54
Zeleax   [b]Мини-хелп по "неработающему" пилоту ...   30.1.2012, 11:38
Zeleax   Настройка горячих клавиш для запуска скриптов Ино...   2.2.2012, 20:07
Zeleax   Пример использования: // печатаем одной строкой т...   7.2.2012, 13:39
Zeleax   Помогите, есть ли команда какая либо, чтоб в игре...   10.2.2012, 10:13
Zeleax   Некоторые приложения в свернутом/не активном сост...   10.2.2012, 13:58
Zeleax   Не используйте goto для выхода из цикла for, т.к. ...   12.2.2012, 11:53
DarkMaster   gosub тоже низя. Из-за этого пришлось переписывать...   12.2.2012, 12:02
zavas   gosub тоже низя. Из-за этого пришлось переписыват...   5.3.2012, 23:38
DarkMaster   Нахождение целой части квадратного корня: set #x 5...   5.3.2012, 11:43
zavas   Проверка ввода символов на не числовые значения. Н...   6.3.2012, 9:19
WKnight   а чем не нравится 'get number'?   7.3.2012, 14:20
Zeleax   Пример скрипта для сортировки одномерного массива ...   11.3.2012, 13:21
Zeleax   Нашел программу Synergy, очень доволен. Можно 1 ...   21.3.2012, 21:50
WKnight   панелька для изменения адресов параметров чара и п...   25.3.2012, 13:15
Zeleax   Есть строка: set $string П е ч а т н а я ~ м...   7.4.2012, 23:18
zavas   Чуть-чуть расширил пример остатка от деления от Ze...   18.4.2012, 3:46
Zeleax   Вот придумал тихий запуск: [code]set %mas [ 1...   18.4.2012, 7:05
Zeleax   Программу Ybex Clipboard удобно использовать для п...   19.4.2012, 9:53
Zeleax   Что такое массивы и с чем их едят :) ссылка   24.4.2012, 14:44
DarkMaster   1 пн, 2 вт, 3 ср, 4 чт, 5 пт, 6 сб, 7 вск [code] ...   2.5.2012, 14:23
WKnight   .\ не? :) правда хз каким каталогом он будет...   5.5.2012, 8:23
Zeleax   MapKeyboard - небольшая бесплатная утилита (англоя...   13.5.2012, 19:31
DarkMaster   По поводу проги. Она правит реестр подменяя коды к...   13.5.2012, 22:08
Zeleax   Простые бесплатные программы для управления удален...   28.5.2012, 11:35
zavas   В пилоте не надо думать, как пишется та или иная к...   4.6.2012, 17:25
Zeleax   Вопрос: Здравствуйте. Мне необходимо средствами ...   3.8.2012, 10:56
xolost   Если вы нарезаете картинки в разрешении 1280 на 10...   4.8.2012, 20:17
Zeleax   Вопрос: Прошу подсказать мне, или разобраться.. За...   4.11.2012, 17:47
Zeleax   RAM-диск Часто приходится в скриптах активно испо...   10.11.2012, 13:33
Zeleax   Дополнение [url=https://addons.mozilla.org/ru/fire...   25.11.2012, 20:49
DarkMaster   Как пилот высчитывает откуда читать статы в уо? п...   16.2.2013, 2:16
Zeleax   Считывание текста с изображений на экране. http:/...   24.2.2013, 10:38
Zeleax   Отправка из скрипта сообщения на E-mail Качаем бе...   2.3.2013, 15:50
Zeleax   Получение SMS-уведомления о получении письма с опр...   3.3.2013, 11:28
zavas   Для тех людей, кто не любит ставить лишний софт в ...   25.3.2013, 0:15
Zeleax   Чтобы переслать в окно EVEonline комбинацию клави...   7.5.2013, 12:29
DarkMaster   только толщиной? или шириной тоже? Просто если кар...   28.11.2013, 23:36
nazar   только толщиной? или шириной тоже? Просто если ка...   29.11.2013, 1:30
Zeleax   Странно тогда, что возвращается -4, а не 0. Тоже д...   29.11.2013, 8:24
2 страниц V  1 2 >


Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.4.2024, 0:14
Designed by Nickostyle