Author Topic: GETSCREEN области в приложении EVE-Online с привязкой к окну и без.  (Read 5104 times)

0 Members and 1 Guest are viewing this topic.

digiTALker

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
В свете недавнего обсуждения провёл серию опытов скрипта из двух строк.
Code: (clickermann) [Select]
GETSCREEN(600,600,900,900)
SCREENSHOT("test flash")

И выяснил что:
  • В случае привязки к окну Гетскриин делается всего окна целиком, не смотря на указанную область. ~98% всех снимков дают скрин окна а внутри просто черный цвет, и только пара процентов получается годных. (выборка 150 снимков)
  • Если активировать режим прозрачности в Clickermann, то выход годных поднимается и превышает 50%, но не системно. Уж не знаю возможно это совпадение, выборка была тоже не большая (150 снимков).
  • Если не привязывать к окну, то уже успешно делается снимок только нужной области и выдаёт 100% годных, никакого мерцания нет. Но цель работать именно с привязкой, чтобы можно было и другими делами заниматься на компе, ибо идея привязки очень импонирует.
    Если выключить Антиаляйсинг, то выход годных повышается в обоих случаях, но не значительно, на такой короткой выборке данным фактом можно пренебречь.

Родилась идея заставить его снимать скрины до тех пор, пока внутри будет хоть какой то цвет кроме чёрного, и только в этом случае разрешить приступать к алгоритму поиска нужной точки в этом скрине. Скажите плиз в какую сторону читать для реализации оного?

NStra

  • Освоившийся
  • **
  • Posts: 45
  • Подпись под аватаром.
    • View Profile
Попробуй.
Code: [Select]
WHILE($n=0)
GETSCREEN
$n=PXLXOR(0,0,$_xmax,$_ymax)//Вставь свои координаты
END_CYC
PRINT("На экране не только черный")
HALT
« Last Edit: March 25, 2015, 12:23:48 PM by NStra »
Тут должна быть подпись...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
По первому пункту, вроде бы уже определились, что область в режиме привязки не работает. Здесь http://crapware.aidf.org/forum/index.php?topic=1852.msg10982#msg10982

Попробуй конечно ловить не чёрный скрин. Но при таком раскладе лучше использовать виртуальную машину.

P.S.
Выявлена интересная закономерность.
У меня на таком скрипте результаты брака 15%
Code: (clickermann) [Select]
FOR($i=0, $i<100)
   GETSCREEN
   SCREENSHOTEX(43,0, 172,137, "TEST_", 0)
   WAITMS(30)
END_CYC
HALT

Что интересно, прогнал раз 10. Процент стабильно 15.
Больше того, номера бракованных скринов всегда одни и те же 2,3,5,7,10,13,16,25,27,30,33,37,57,86,100
Задержку менял, ставил и 0 и 30 и 50 и 70, перепривязывал и перезапускал. Результат один. Раскладка бракованных скринов всегда одна.

Переместил тестовый скрипт в другую папку. Раскладка по браку изменилась. Разные прогоны теперь выдавали стабильно другую раскладку.

Всё интересней и интересней.
В общем опробовал 3 места. Раскладка бракованных скринов зависит от местонахождения скрипта.
Неужели случайность?

Мне видится только ошибка в кликере. Видать он очищает или затирает образ буфера. Такая зависимость может быть только от того, что при выполнении скрипта тайминги работы конкретных команд смещаются в зависимости от того куда кликеру нужно сохранять скриншот. Может конечно и другое объяснение.
« Last Edit: March 25, 2015, 01:21:45 PM by Vint »


digiTALker

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
ограничения области используются для ускорения работы, а если результат работы непредсказуем, то это уже долгая лотерея.
Зачем изгаляться и писать скрипты определяющие годность GETSCREEN(600,600,900,900), когда можно просто написать GETSCREEN и относительно быстро получить нужный результат?
Ну первичная моя цель это обратить внимание разработчика. Знаешь как Хаус как то нанял себе полотёра вместо своих докторов, и советовался с ним. По сути ему не нужны были его советы, но он помогал творческому процессу своими бесполезными высказываниями. Может и мы копаясь скажем что-то от чего разработчик скажет - ЕВРИКА )), это может быть даже косвенно.

Quote
Больше того, номера бракованных скринов всегда одни и те же 2,3,5,7,10,13,16,25,27,30,33,37,57,86,100
Новый метод шифрования? ))
 
На самом деле можно наблюдать как мерцает изображение в лупе, думаю что та же причина что заставляет мерцать в квадрате превью действует и на битые скрины.
« Last Edit: March 25, 2015, 02:24:09 PM by digiTALker »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
На самом деле можно наблюдать как мерцает изображение в лупе, думаю что та же причина что заставляет мерцать в квадрате превью действует и на битые скрины.

Это само собой, через превью и искал "плохие" окна. Только через превью статистику не соберёшь, моргает и моргает.
Хотя тоже как то странно моргает, будто одна фраза азбукой морзе.

Эврика! В кликере заточён человек! Возможно раб кликера, который там всё и выполняет. И таким хитрым макаром он пытается нам подать сигнал. Даёт знать о себе посылая пока только SOS  :) :D ;D

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


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
прогнал все тесты Винта, менял место расположения кликера, скрипта и окна привязки, но получения брака никогда небыло всегда 100% правильных скринов. моргает заметно.
 А вот с координатами  лупы в режиме привязки невсегда, но иногда получается перебор по оси У.

На каком приложении проверял?


digiTALker

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Немножечко в тему топика )))
Вот как выглядит работающий скрипт для EVE-Online для прыгания по гейтам.
Не изучил пока как сделать чтоб  кодировка передавалась латиницы.
Code: (clickermann) [Select]
// ãîëóáåíüêàÿ ñêîðîñòü 16777087
// áåëûé öâåò â îâåðâüþ 16777215
begin:


GETSCREEN
COLORMODE(7)


IF(PXLXOR(0,0, $_xmax,$_ymax) = 8421504 )  // ïðîâåðêà ëèêâèäíîñòè
   goto(begin)
END_IF

IF(PXL(804,884) = 8388479)  // ïðîâåðêà ñâåòîôîðà

   IF_pixel_in(1258,117,1375,126,16777215)  // ïðîâåðêà îâåðâ

      IF_pixel_in(954,1013,964,1022,16777087)   //ïðîâåðêà ñèíåíüêîé
   
         WAIT(7)
         
         GOTO(begin)
      END_IF
      LOGWRITE ("ñèíåíüêîé ÍÅÒ ñîáèðàþñü êëèêíóòü")
      LOGSHOW (1)
      LCLICK(RND(1234,1504),RND(89,103))
      WAIT(RND(1,3))
      DBLCLICK(RND(1589,1613),RND(88,112))

      WAIT(4)
   ELSE

      GOTO(begin)
   END_IF
ELSE

HALT  // åñëè ñâîòîôîð ïðîïàë
   
END_IF

« Last Edit: March 25, 2015, 05:38:51 PM by digiTALker »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Немножечко в тему топика )))
Вот как выглядит работающий скрипт для EVE-Online для прыгания по гейтам.
Не изучил пока как сделать чтоб  кодировка передавалась латиницы.

Немного перестраиваем скрипт и можно обойтись без ГОТО
Code: (clickermann) [Select]
// голубенькая скорость 16777087
// белый цвет в овервью 16777215

GETSCREEN
COLORMODE(7)
IF(PXLXOR(0,0, $_xmax,$_ymax) = 8421504)  // проверка ликвидности
   IF(PXL(804,884) = 8388479)  // проверка светофора
     
      IF_pixel_in(1258,117, 1375,126, 16777215)  // проверка оверв
         
         IF_pixel_in(954,1013, 964,1022, 16777087)   //проверка синенькой
            WAIT(7)
         ELSE
            LOGWRITE ("синенькой НЕТ собираюсь кликнуть")
            LOGSHOW (1)
            LCLICK(RND(1234,1504),RND(89,103))
            WAIT(RND(1,3))
            DBLCLICK(RND(1589,1613),RND(88,112))
            WAIT(4)
         END_IF
      ELSE
         WAITMS(50)
      END_IF
     
   ELSE
     
      HALT  // если свотофор пропал
     
   END_IF
ELSE
   WAITMS(50)
END_IF

У меня XP и проблем с кодировкой никаких нет. Но говорят на семерке и выше нужно выбирать "Ру" раскладку перед копированием текста.