|
|
|
Полезные Советы, Практическое применение. Настройка запуска. |
|
|
Zeleax |
26.10.2014, 8:18
|
ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010 Группа: Пользователи Наличность: 0 Из: Киев
Пользователь №: 13.093
|
Скрипт для отслеживания координат, смещений и цветов точек на экранеСмысл скрипта: Запускаем, водим мышей по экрану, и видим данные по координатам и цветам точек под курсором. Если надо запомнить очередную точку под курсором- жмем Ctrl+A. Когда закончили сбор инфы по точкам - на последней точке жмём Ctrl+A два раза. Обычно использую этот скрипт для определения смещений нужных мне точек относительно какой-то базовой точки на экране. Поэтому в принципе возможны баги в редко используемых пунктах ) Пояснения по пунктам меню: Отслеживание - просто просмотр инфы о пикселах Мышка_0 - мышкой указываем на экране точку нулевого отсчета (для определения смещений) Клавиатура_отн0 - с клавиатуры вводим точку нулевого отсчёта в относительных координатах окна Инфо_окна - получить инфу об указанном окне (координаты угла, размеры, хендл, заголовок)- в буфер обмена и на экран. Обработка инфы по собранным точкам- подготовка к копированию в буфер обмена: copy_abs_coords - копируем абсолютные координаты точек copy_relative_coords - копируем относительные координаты точек copy_deltas - копируем смещения dont_add_colors - не добавляем цвет после каждой координаты add_active_colorsA - добавляем цвет после каждой координаты, тот что был под курсором мыши в момент нажатия Ctrl+A add_nonactive_colorsB - добавляем цвет после каждой координаты, тот что сейчас Скрипт
Код // Скрипт отслеживания координат и цвета v1.6 (c) Zeleax set #sn 0 - 1 // !!! отслеживаем координаты курсора и цвет для указанного скрипта set #uopilot findwindow (UoPilot) if #uopilot = 0 msg Не найдено окно пилота stop_script end_if
// если указанный номер < 0, то предлагается выбрать рабочее окно вручную gosub showcoord end_script
// Отображает текущие относительные и абсолютные кординаты курсора для другого скрипта // заданного по номеру. а также цвет ДЛЯ РАБОЧЕГО ОКНА в текущей позиции мыши // В отслеживаемом скрипте после привязки к окну обязательно должна быть строка: // set #myworkwindow workwindow :showcoord set linedelay 1 if #sn < 0 // or #myworkwindow.#sn = "" // забыли привязаться к другому скрипту, или другой скрипт не работает msg Укажите рабочее окно: поместите мышку над ним и нажмите Ctrl+A showwindow #uopilot set workwindow 0 while workwindow = 0 end_while else set workwindow #myworkwindow.#sn // задали рабочее окно end_if set #w workwindow :start1 set #b prompt(Отслеживание Мышка_0 Клавиатура_отн0 Инфо_окна)
if ( #b = 1 ) or ( #b = 0 ) set #mode 1 else set #mode 2 end_if
if #b = 2 // указание точки отсчета на экране msg Наведите мышку на точку нулевого отсчета в окне и нажмите Ctrl+A. /n Последующие нажатия Ctrl+A запоминают указанные точки в буфер обмена/n Закончить: Ctrl+A на последней точке повторно showwindow #uopilot
hint Наведите мышку на точку нулевого отсчета в окне и нажмите Ctrl+A set workwindow 0 while workwindow = 0 end_while set workwindow #w end_if if #b = 3 // ввод кординат точки отсчета вручную set $x 0 set $y 0 set $x prompt (Введите_X0) set $y prompt (Введите_Y0) set #x0 $x set #y0 $y wait 500 move #x0 #y0 end_if if #b = 4 // Инфо окна set $wtitle getwindowtext (workwindow) get windowpos workwindow #x #y #width #height set $tmp Хендл: workwindow . Xabs= #x, Yabs= #y, W= #width, H= #height . Заголовок: $wtitle set clipboard $tmp msg $tmp /n Данные в буфере обмена goto start1 // окно выбора вариантов end_if
if #mode = 2 // относительные смещения get mouse_pos #x0 #y0 abs set #a findcolor (#x0 #y0 #x0 #y0 1 1 (R(0-255)+G(0-255)+B(0-255)) %arr workwindow abs) // получаем цвет в точке get color #color %arr[1 1] %arr[1 2] abs // сохраняем цвет в переменной alarm end_if
get mouse_pos #xa #ya abs get mouse_pos #x #y set #diffx #xa - #x set #diffy #ya - #y set #n 0 while 1 = 1 // бесконечный цикл set workwindow 0 while workwindow = 0 get mouse_pos #xa #ya abs get color #color #xa #ya abs // сохраняем цвет в переменной set #x #xa - #diffx set #y #ya - #diffy if #xa < 350 and #ya < 150 set #hy 200 else set #hy 0 end_if set #tmp colorToRGB(#color %cc) if #mode = 1 hint (12 255 0 #hy ( #x, #y / #xa, #ya abs - цвет #color (%cc[1 1] %cc[1 2] %cc[1 3]) /n Точек: #n )) else set #dx #xa - #x0 // считаем смещение относительно нулевой точки set #dy #ya - #y0 hint (12 255 0 #hy ( #x, #y / #xa, #ya abs - цвет #color (%cc[1 1] %cc[1 2] %cc[1 3]) /n (dx, dy) = #dx, #dy /n Точек: #n )) end_if wait 100 end_while // workwindow = 0 if #n > 0 and %brr[#n 1] = #xa and %brr[#n 2] = #ya // кликнули Ctrl+A 2 раза в одном месте break end_if set #n #n + 1 init_arr %brr (#n 3) #xa #ya #color end_while // бесконечный цикл set #k prompt(copy_abs_coords copy_relative_coords copy_deltas) set #c prompt(dont_add_colors add_active_colorsA add_nonactive_colorsB) set $buf if #c = 3 // убираем мышку в нулевую точку move 0 0 abs wait 200 end_if set #brlen size(%brr) for #i 1 #brlen switch #k case 1: set #x %brr[#i 1] set #y %brr[#i 2] break case 2: set #x %brr[#i 1] - #diffx set #y %brr[#i 2] - #diffy break case 3: set #x %brr[#i 1] - #x0 set #y %brr[#i 2] - #y0 break case: stop_script end_switch switch #c case 1: set $buf $buf #x #y , break case 2: set $buf $buf #x #y %brr[#i 3] , break case 3: get color %brr[#i 1] %brr[#i 2] #color abs set $buf $buf #x #y #color , break end_switch end_for set clipboard $buf msg Данные в буфере обмена end_script Сообщение отредактировал Zeleax - 26.10.2014, 12:25
--------------------
|
|
|
|
Mislitel2000 |
10.11.2015, 12:16
|
Registred
Сообщений: 6
Регистрация: 10.11.2015 Группа: Пользователи Наличность: 0
Пользователь №: 17.694
|
Цитата(Zeleax @ 25.11.2012, 21:49) Дополнение Fastest Search к Mozilla FireFox может искать регулярные выражения на текстовой странице браузера и выделять найденный текст. Т.е. текст соответствующий заданному шаблону поиска, а не указанный точно! В сочетании с командами пилота для работы с клавиатурой и буфером обмена это позволит получать почти любой требуемый текст со страницы браузера. Единственное требование- возможность выделения текста на странице, т.е. из флеша достать текст таким образом не получится. После установки дополнения необходимо перезапустить браузер (хотя пишут, что и без перезапуска работает). Вызов поиска- комбинация Ctrl+Shift+F. А вообще есть видеообучение и документация к этому дополнению ) Например, если на странице есть текст "У вас осталось 12 жизней", то можно сделать небольшой скрипт, который будет получать со страницы именно число "12". Нижеприведенный скрипт находит в данном посте число жизней и отображает его. Перед его запуском в FireFox уже должно быть установлено дополнение Fastest Search и в окне поиска (Ctrl+Shift+F) обязательно должна быть включена опция RegEx (остальные опции нужно выключить или оставить на ваше усмотрение). Окно поиска должно отсутствовать на экране. Пилот должен быть привязан к окну браузера (Ctrl+A). Код showwindow // отображаем рабочее окно браузера на передний план wait 200 // небольшая задержка set $reg осталось \d{1,3} жизн // искомое регулярное выражение... set clipboard $reg // ...записываем в буфер обмена sendex ^~f // Ctrl+Shift+F - вызов окна поиска Fastest Search (на RegEx должна быть установлена "птичка") wait 100 sendex ~{Insert} // вставляем из буфера искомое выражение в окно поиска wait 100 sendex {Enter} // ищем wait 500 // задержка, чтоб найти и выделить текст в окне sendex ^{Insert} // копируем выделенный текст в буфер обмена get clipboard $s // забираем его в переменную $s get word $w 2 $s // выковыриваем второе слово в строке = числу жизней if is_real ($w) = 1 // проверяем было ли найдено именно число msg Число жизней = $w else msg Не удалось получить число жизней! end_if end_script Там вроде при копировании выделенного текста в буфер вместо sendex ^{Insert} должно быть sendex ^c. Во всяком случае у меня только так заработало (IMG: style_emoticons/default/smile.gif)
|
|
|
|
Mik |
26.1.2017, 18:58
|
Registred
Сообщений: 4
Регистрация: 25.1.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.310
Возраст: 36
|
Цитата(cirus @ 25.1.2017, 19:13) Код Здравствуйте, кто подскажет, как запускать автоматически все рабочие скрипты вместе с запуском UO Pilot а? Первый пост этой темы, под спойлером Запуск UO Pilot, Автоматический запуск скрипта. "Командная строка Для загрузки с параметрами, указанными ниже, отредактируйте ярлык либо создайте bat файл." Объясните, пожалуйста мне, нубу, что и где редактировать и создавать (IMG: style_emoticons/default/blink.gif)
|
|
|
|
Mik |
28.1.2017, 22:06
|
Registred
Сообщений: 4
Регистрация: 25.1.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.310
Возраст: 36
|
Цитата(cirus @ 28.1.2017, 1:00) Через пробелы надо писать. Посмотрите мой скрин.
По всякому пробовал, решил проблему через бат файл, спасибо за помощь
|
|
|
|
FREEON |
14.2.2017, 1:40
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1315
Пользователь №: 18.346
Возраст: 25
|
Проблема в том что когда значение не верное то отправляет приглашение как и нужно, но дальше продолжает выполнять скрипт игнорируя строку if. Как сделать что бы пилот повторял запрос if_not до тех пор пока не соберутся 5 звезд как нужно...звезды повышают игроки и время ожидания может быть разным. А по кругу нет смысла делать ведь нужно выполнить пять квестов данного типа и затем переключиться на другое задание. Код Скрипт: if 1555, 398 65 left 1555, 398 //Открыть окно ГИ end_if if 590, 399 931255 left 593, 358 //Получить квест end_if if_not 642, 443 3394287 //Если нет 5 звезд, left 1553, 395 //то отправить приглашение wait 5s end_if if 642, 443 3394287 //если есть 5 звезд left 1394, 376 //выполнить задание end_if Дальше идет тоже самое только на 4 однотипных заданий Я новенький, поэтому не очень разбираюсь еще, только в простых совсем скриптах. И если можно то сбросте свои мануалы с комментариями к каждой строке...если таковы имеются. Потренироваться хочу (IMG: style_emoticons/default/unsure.gif) P.S. И как задовать цикличность повторений. А то у меня функция Repeat не работает, а гоняет покругу пока не выключишь сам Код repeat 25 left координаты wait 1s left координаты end_repeat end_script
|
|
|
|
cirus |
14.2.2017, 2:18
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26747
Пользователь №: 16.971
Возраст: 29
|
Лучше создайте новую тему с интересующими вопросами, чтобы не засорять эту. Цитата Как сделать что бы пилот повторял запрос if_not Код if_not 642, 443 3394287 //Если нет 5 звезд, left 1553, 395 //то отправить приглашение wait 5s end_if Заменить на: Код while_not 642, 443 3394287 //Если нет 5 звезд, left 1553, 395 //то отправить приглашение wait 5s end_while Цитата И если можно то сбросте свои мануалы с комментариями к каждой строке Список функций с описанием и примерамиЦитата P.S. И как задовать цикличность повторений. А то у меня функция Repeat не работает, а гоняет покругу пока не выключишь сам А вы сколько времени ждали? 25 повторений с паузой 1 секунда, т. е. 25 секунд будет скрипт выполняться. Также есть for: Код For #i 1 10 // выполнить 10 раз log #i // показать в логе значение переменной wait 100 // пауза 0,1 сек end_for end_script
|
|
|
|
|
|
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|