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

 
Ответить в эту темуОткрыть новую тему
> Отслеживание Координат Курсора И Цвета Точки, готовый скрипт
Zeleax
сообщение 19.1.2012, 13:55
Сообщение #1


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Иногда нужно отследить относительные координаты для какого-либо окна или рабочего окна заданного скрипта и цвет в той точке. Или измерять смещения относительно какой-либо особой точки окна. Особенно это актуально для браузерных игрушек.
Данный скрипт позволяет это сделать.
Кроме того, можно получить информацию о рабочем окне другого скрипта:
- хендл
- координаты левого верхнего угла
- размеры окна (W - ширина, H - высота)
- заголовок окна

Если отслеживаете данные какого-либо ДРУГОГО работающего скрипта, то в отслеживаемом скрипте после точки привязки к рабочему окну обязательно должна быть строка:
Код
set #myworkwindow workwindow 


В данном скрипте придется отредактировать номер отслеживаемого скрипта в строке
set #sn 0 // !!! изменить, если отслеживаем координаты курсора и цвет для ДРУГОГО указанного скрипта

Если задать #sn < 0 (как в примере), то вам будет предложено выбрать интересующее окно мышкой на экране и задать точку нулевого отсчёта. Я так обычно и делаю.
Если просто хотите скриптом получить интересующую информацию на экране, то в скрипте ничего менять не надо.

Для остановки отслеживания нужно остановить выполнение данного скрипта в пилоте.

Скрипт измерения координат и смещений
Код
// Скрипт отслеживания координат и цвета v1.6 (c) Zeleax
set #sn -1  // !!! отслеживаем координаты курсора и цвет для указанного скрипта
// если указанный номер < 0, то предлагается выбрать рабочее окно вручную
gosub showcoord
end_script

// Отображает текущие относительные и абсолютные кординаты курсора для другого скрипта
// заданного по номеру. а также цвет ДЛЯ РАБОЧЕГО ОКНА в текущей позиции мыши
// В отслеживаемом скрипте после привязки к окну обязательно должна быть строка:
// set #myworkwindow workwindow
:showcoord
   set linedelay 1
   if #sn < 0 // or #myworkwindow.#sn = "" // забыли привязаться к другому скрипту, или другой скрипт не работает
      msg Укажите рабочее окно: поместите мышку над ним. У вас есть 5 секунд после нажатия кнопки OK.
      wait 5s
      set #w windowfromcursor
      alarm
      if #w <= 0
         msg Не могу найти рабочее окно! Повторите попытку
         goto showcoord
      else
         set workwindow #w
      end_if
   else
      set workwindow #myworkwindow.#sn // задали рабочее окно
   end_if
  
   :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 Наведите мышку на точку нулевого отсчета в окне (без клика). У вас 5 секунд после нажатия кнопки OK.
      wait 5s
   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
      msg Хендл: workwindow . Xabs= #x, Yabs= #y, W= #width, H= #height . Заголовок: $wtitle
      goto start1 // окно выбора вариантов
   end_if

   if #mode = 2 // относительные смещения
      get mouse_pos #x0 #y0
      alarm
    end_if
  
   while 1 = 1 // бесконечный цикл
      get mouse_pos #x #y
      get mouse_pos #xa #ya abs
      get color #color #x #y // сохраняем цвет в переменной
      
      if #xa < 350 and #ya < 150
         set #hy 200
      else
         set #hy 0
      end_if
      if #mode = 1
            hint (12 255 0 #hy -1 -1 ( #x, #y / #xa, #ya abs - цвет #color ))
      else
            set #dx #x - #x0 // считаем смещение относительно нулевой точки
            set #dy #y - #y0
            hint (12 255 0 #hy -1 -1 ( #x, #y / #xa, #ya abs - цвет #color /n (dx, dy) = #dx, #dy ))
      end_if
      wait 100
   end_while // бесконечный цикл
return


Сообщение отредактировал Zeleax - 18.9.2012, 17:36


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 21.1.2012, 16:09
Сообщение #2


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Добавил в скрипт возможность измерять смещения относительно заданной точки окна.


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 21.1.2012, 18:12
Сообщение #3


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Исправил глюк при выборе измерения смещений.


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 7.2.2012, 9:45
Сообщение #4


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Добавил возможность указания точки нулевого отсчета вводом координат с клавиатуры.
Правда prompt немного глючит, но думаю что и так все понятно


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 7.2.2012, 10:07
Сообщение #5


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Подправил ещё пару мелочей для удобства


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 7.2.2012, 10:46
Сообщение #6


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Добавил возможность отображения информации о рабочем окне другого скрипта:
- хендл
- координаты левого верхнего угла
- размеры окна (W - ширина, H - высота)
- заголовок окна


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 29.4.2012, 7:39
Сообщение #7


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



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

Сообщение отредактировал Zeleax - 29.4.2012, 7:39


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 15.8.2012, 16:18
Сообщение #8


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



версия 1.6
исправил пару багов


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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