Версия для печати темы
UoKit.com Форумы _ UO Pilot в Ultima Online _ findimage and findcolor
Автор: Naprasno 11.3.2017, 22:33
Друзья!
Помогите,пожалуйста, со скриптом. Нужно собирать реагент среди орков, который респится 1 раз в 3 часа.
Что планирую реализовать:
1 чар стоит гостом в месте респа - мониторит. Как только реагент появляется он сообщает второму чару и тот летит и собирает быстро и улетает.
Проблема в том, что ни findimage ни findcolor с этим реагентом не работают... Или я неправильно использую.
Реагент полупрозрачный... Цвет не подберёшь, а появляется он в разных местах. Дома на базе в паре точек получается, но как только переставляешь его в новую точку то всё слетает... Для findimage слишком плохой фон, много пикселей... Для findcolor цвет плохой, его много где есть в экране....
Посмотрите, пожалуйста, как можно ещё в этом случае определить координаты появления, чтобы летящий чар знал откуда брать.... Да и мониторщик знал, что реагент появился...
один скрин с местом респа и второй с реагентом. Он очень мелкий.
Эскизы прикрепленных изображений
Автор: DarkMaster 12.3.2017, 8:34
попробуй вот это https://forum.uokit.com/index.php?showtopic=20545
может помочь.
Автор: Naprasno 15.3.2017, 18:56
Цитата(DarkMaster @ 12.3.2017, 8:34)
попробуй вот это https://forum.uokit.com/index.php?showtopic=20545
может помочь.
Спасибо! То что нужно!!!
Правда пришлось 5 разных запилить, т.к. слишком маленький реагент.
А подскажите, пожалуйста, как лучше скакать между скриптами. Например один скрипт к одному окну привязан, а а другой к другому и в случае нахождения картинки он запускает скрипт 0:
if #ucsResult > 0
какая команда на переход в 0 скрипт должна быть?
Автор: cirus 16.3.2017, 2:10
http://uopilot.tati.pro/index.php?title=Start_script
Автор: Naprasno 16.3.2017, 8:39
Цитата(cirus @ 16.3.2017, 2:10)
http://uopilot.tati.pro/index.php?title=Start_script
Спасибо! Вроде всё шерстил, а самое главное пропустил.
Автор: Naprasno 16.3.2017, 10:47
Цитата(cirus @ 16.3.2017, 2:10)
http://uopilot.tati.pro/index.php?title=Start_script
А вот пример. У меня 5 скриптов (5 видов картинок), т.к. там всё сложно.
Я запускаю первый, он запускает второй и т.д. Первый в момент запуска второго тормозится?
Как взять нужные переменные из скрипта, который нашёл их (координаты). например 2-е окно нашло, как оно отправит в главный скрипт 0 эти переменные?
Автор: cirus 16.3.2017, 11:44
В большинстве случаев можно обойтись одним скриптом вместо 5.
Цитата
Я запускаю первый, он запускает второй и т.д. Первый в момент запуска второго тормозится?
Нет, скрипты работают независимо друг от друга. Но, если нужно можно остановить или приостановить.
Цитата
Как взять нужные переменные из скрипта, который нашёл их (координаты). например 2-е окно нашло, как оно отправит в главный скрипт 0 эти переменные?
http://uopilot.tati.pro/index.php?title=Переменные_из_других_скриптов
Автор: Naprasno 16.3.2017, 13:34
Цитата(cirus @ 16.3.2017, 11:44)
В большинстве случаев можно обойтись одним скриптом вместо 5.
Нет, скрипты работают независимо друг от друга. Но, если нужно можно остановить или приостановить.
http://uopilot.tati.pro/index.php?title=Переменные_из_других_скриптов
Супер!
Просто они к разным окнам привязаны. Как минимум два скрипта нужно. Один к одному окну, второй к другому. Или пилот может и между окнами переключаться?
Сократил до 2 скриптов. Тестирую.
Автор: Cockney 16.3.2017, 13:43
Ну если нужна не одновременная работа скриптов, то можно по очереди привязывать к окнам.
Автор: cirus 16.3.2017, 14:53
Цитата
Или пилот может и между окнами переключаться?
Код
set #handle1 findwindow (окно1) // найти первое окно
set #handle2 findwindow (окно2) // найти второе окно
:start
set workwindow #handle1 // сделать рабочим первое окно
// код для первого окна
set workwindow #handle1 // сделать рабочим второе окно
// код для второго окна
goto start
Автор: Naprasno 27.3.2017, 13:36
Цитата(cirus @ 16.3.2017, 14:53)
Код
set #handle1 findwindow (окно1) // найти первое окно
set #handle2 findwindow (окно2) // найти второе окно
:start
set workwindow #handle1 // сделать рабочим первое окно
// код для первого окна
set workwindow #handle1 // сделать рабочим второе окно
// код для второго окна
goto start
Супер! Теперь всё идеально работает в одном скрипте! Спасибо!
А уточните, пожалуйста, по findcolor: почему не работает в перекрытом окне и почему не работает на заблокированном экране?
И возможно ли сделать, чтобы работало в перекрытом и на заблокированном...
И по команде drag тоже самое. В перекрытом не будет работать? Это симуляция действий мышки?
Заранее благодарю!
Автор: cirus 27.3.2017, 13:54
Цитата
А уточните, пожалуйста, по findcolor: почему не работает в перекрытом окне и почему не работает на заблокированном экране?
И возможно ли сделать, чтобы работало в перекрытом и на заблокированном...
По поводу перекрытия, всё зависит от винды и приложения, смотрите описание и примеры: http://uopilot.tati.pro/index.php?title=Findcolor
При блокировке экрана, скорее всего, не будет работать.
Цитата
И по команде drag тоже самое. В перекрытом не будет работать? Это симуляция действий мышки?
Если в окне работают клики типа left, то может и будет. Также можно попробовать:
Код
left_down 100 150 // нажать левую кнопку мыши в координатах 100 150
wait 100
left_up 400 600 // отпустить в 400 600
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)