Мини-хелп по "неработающему" пилотуЕсли пилот не работает (не кликает мышкой, не нажимает кнопки, не находит цвета/картинки, не работают макросы, появляются ошибки), то рассмотрим следующие варианты "лечения".
То что обычно забывают сделать:1) установить самую новую версию UOPilot (ссылка есть в 1-м посте этой темы). В старых версиях многие команды и возможности просто не работают;
2) привязать пилот к рабочему окну или полю ввода текста (см.1-й пост темы). Иногда спасает только привязка по заголовку окна (особенно в ЛА2);
3) запускать пилот с правами администратора (правый клик мышкой на пилоте, "Запустить с правами администратора"); еще хорошо помогает отключение UAC (см.Яндекс) с последующей перезагрузкой - особенно при проблемах с макросами;
4) в некоторых играх используется технология защиты "фрост". Для таких игр можно попробовать версию пилота с анти-фрост плагином + поставить Касперского и всячески ограничить фрост в правах.
5) могут быть проблемы с определением цветов, поиском изображений, управлением мышкой, если игра работает в полноэкранном режиме - попробуйте переключить игру в оконный режим.
Далее рассмотрим отдельные направления:
Не жмутся кнопки клавиатуры (не печатается текст):а) в настройках уберите птичку с "Возвращать курсор мыши после кликов", если в скрипте используются клики мышкой;
а) попробуйте перед вводом текста сделать клик мышкой командой kleft на рабочем окне или в нужном месте ввода текста.
б) попробуйте разные команды отправки текста(нажатия кнопок) в порядке следующей очередности: sendex / send / send217 / post (для 32-битных ОС) / send_down+wait+send_up / say (см."Историю развития" в хелпе пилота);
Обычно sendex хорошо помогает (кнопки типа F1 пишем как {F1}). Но sendex работает только в активном окне.
в) перед использованием команд нажатия кнопок: поднимите рабочее окно на передний план командой showwindow (особенно важно для sendex, который не работает в свернутых или закрытых окнах) и поставьте команду wait для того, чтобы система успела отреагировать и "полностью поднять" на верхний план нужное окно.
Программа "Максимум" выглядит так:
Код
showwindow // поднимаем нужное рабочее окно на передний план
wait 500 // ждем, чтоб окно поднялось
kleft 10, 20 // кликаем в точке ввода текста
wait 200 // ждем
sendex test // печатаем нужный текст
Если при использовании sendex "глотаются" символы
В пилоте на закладке "Ещё" настраиваем опции sendex:
- выбираем свою ОС
- задаём паузу между символами от 10 до 200 мс
Есть еще один вариант -
использование экранной клавиатуры. Довольно надёжно работает, но несколько неудобно в использовании в скриптах.
Не кликает мышка- поменяйте команды kleft <> left (однако kleft не работает в фоновом окне);
- перед кликом командой move переместите мышку в точку клика , или поставьте птичку в настройках пилота "Перемещать курсор в точку клика";
- в настройках уберите птичку с "Возвращать курсор мыши после кликов".
Есть еще хитрое решение, использующее виртуальную машину, позволяющее обходить различные защиты в играх:
- запускаем игру в развёрнутом окне виртуальной машины
- запускаем пилот и включаем скрипт на основном компьютере (не в виртуальной машине)
Получается, что пилот кликает мышкой на основном компьютере, а защита в игре об этом даже не догадывается, т.к. не отличает поступающие клики пилота внутрь виртуальной машины от обычных "правильных" кликов.
Из самых известных виртуальных машин можно порекомендовать: VirtualBox (бесплатно), VMWare.
Не находится нужный цвет/картинкаОсновных 4 варианта:
1) Картинка имеет неверный формат/"повреждена" конвертацией. Надо bmp 24 бита, проще всего сделать в Paint (PrintScreen в игре с последующий вставкой в Paint по Ctrl+V, "Сохранить bmp", "24-xразрядный bmp"). Ни в коем случае не переделывайте jpg в bmp. Вообще никогда не переделывайте форматы. Никак. Переименование и конвертация и еще что-нибудь тоже не помогут. Картинка изначально должна быть bmp 24 бита.
2) Ошибочные координаты поиска.
3) Отсутствие привязки скрипта к рабочему окну либо ошибочная привязка приведет к пункту 2.
4) Ошибочный адрес файла с картинкой.
Сделайте log #a, это позволит хотя бы ошибок в адресе избежать.Если set #a findimage (...) возвращает -4, то это косяк адреса.
- Используйте последний синтаксис команд findcolor/findimage для поиска в рабочем окне (см."Историю развития" в хелпе пилота):
Код
set #a findcolor (#x1, #y1 #x2, #y2 1 1 #color %array workwindow)
set #a findimage (#x1, #y1 #x2, #y2 ($полный_путь_к_файлу_картинки) %array workwindow #точность 1 #отклонение)
- возможно, что в игре картинка немного отличается от указанной (актуально, когда она в игре полупрозрачна), тогда попробуйте указать #отклонение в пределах от 10 до 20. Иногда можно еще попробовать снизить #точность от 100 до 70 (90).
- помните, что если рабочее окно свёрнуто, то пилот в нём не найдет цветов/картинок. Если же окно не свернуто (неважно- закрыто другими окнами или нет), то findcolor/findimage в последней версии пилота обычно нормально находят цвета и картинки. if color, while color, get color работают только в видимых на экране окнах (не в свёрнутых, и не в перекрытых).
Не работают макросыДолжен отметить, что в Win7x64 наблюдаются серъезные проблемы с макросами ("синий экран смерти"). Решения пока нет (кроме смены ОС). Есть альтернатива- вместо макросов сделайте всё на скриптах.
Сообщение отредактировал Zeleax - 3.12.2013, 20:52