Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

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)