Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Tvlad on March 03, 2017, 03:08:47 AM

Title: 3д. Изменение цвета взависимости от освещения.
Post by: Tvlad on March 03, 2017, 03:08:47 AM
Доброго времени суток форумчане. Сломал голову от простого вопроса сына. "Можно создать скрипт для рыбалки в игре Тров"?
И так.. Суть вопроса. Есть игра Trove. В ней есть рыбалка на воде, на лаве, в шоколадной речке (везде перекатываются волны и меняется цвет). Есть поплавок. Тоже зараза шатается из стороны в сторону и меняет цвет в зависимости от времени суток. Пробую выставить рыбака в одну позицию и понять траекторию пошатывания поплавка. Отслеживаю цвета и применяю GETSCREEN  и PXL. Совмещаю с IF, затем while. результат = 0. Пробую обойти более грубым подходом, отследил  место появления поплавка, использую GETSCREEN и PXLXOR, надеясь на разнице сумм с играть. результат=0. то есть на PXLXOR игра вообще не реагирует. Провожу туже махинацию с PXLCRC. Тут пошли ответы, то сумма перемешивается с суммой, когда поплавок на верху. На этом месте мысли кончились. Толи уже коньяка прилично принял, толи мозги совсем окаменели. ПОдскажите пожалуйста что-то дельное по этому поводу. Заранее спасибо.
Читая предыдущие темы спешу добавить, что сделать скрин поплавка бесполезно. ОН меняет цвет, в зависимости от времени суток. Сутки в игре примерно равняются 10 минутам реальной жизни.  То есть примерно 144 картинки разной. Добавить сюда его скольжение по разной (водяной, лавовой, шоколадной) глади и оттенками от них и количество картинок увеличивается в тысячи.
Title: Re: 3д. Изменение цвета взависимости от освещения.
Post by: Vint on March 03, 2017, 08:19:11 AM
Раз всё движется и меняется, PXLXOR и PXLCRC сразу в топку.
Т.к. движется и всё время не в одном месте PXL тоже за ними.

Меняется цвет - применяем COLORMODE, скорее всего режимы 6-7

Если при поклёвке поплавок (искомый цвет) полностью исчезает - применяем  IF_PIXEL_IN.
Если ещё может притапливаться - ведём подсчёт пикселов PXLCOUNT

Чтобы понять в первом приближении что делать, в редакторе, под окном лупы, самое правое число это режим COLORMODE для лупы.
Ставим 7, включаем лупу. Смотрим выделяется ли наш поплавок на разных фонах "воде, лаве, шоколадной речке".
Смотрим как ведёт себя в покачиваниях на волнах, не пропадают ли пикселы совсем в некоторые моменты времени.

И опять же если нужно ловить только пропадание поплавка просто в цикле ищем IF_PIXEL_IN до пропадания.
Если даже при утопленном поплавке остаётся несколько пикселов, то в цикле PXLCOUNT. Количество для сравнения подбираем.


Title: Re: 3д. Изменение цвета взависимости от освещения.
Post by: Atas on March 03, 2017, 11:14:31 AM
Всем привет! :)
Игру Trove я не видел, но когда-то мне приходилось делать подобный скрипт для рыбалки в WoW, там те же проблемы с поиском пикселей. Помогло то, что при поклевке появляется всплеск на воде. Если подобрать настройки графики в игре и значение COLORMODE, то появляется чисто белый пиксель на разноцветной глади воды. Но в зоне поиска такие белые пиксели могут появляться например и от бликов на воде. Поэтому потребовалось еще делать дополнительную проверку перед кликом в поплавок, так как если кликнуть раньше поклевки, то процесс ловли прерывается и всё приходится начинать сначала. Пришлось определять код курсора (постоянного кода там нет, он все время меняется). Но есть закономерность - коды курсора над водой и над поплавком всегда разные между собой.
Алгоритм получился такой: забрасываем удочку...
    1. парковка курсора (вне зоны где может оказаться поплавок)
    2. ожидание белого пикселя в небольшой части экрана около поплавка
    3. при появлении пикселя - запоминаем код курсора на парковке; перемещаем курсор на найденный пиксель; получаем код курсора на этом пикселе
    4. сравниваем коды курсора; если коды курсора на парковке и над найденным пикселем не равны, то делаем правый клик по поплавку
Задержки нужно выставить индивидуально, например перед получением кода курсора над поплавком и прочие.
Вот такой вот пример. Возможно поможет подобрать решение и для Trove. :)
Title: Re: 3д. Изменение цвета взависимости от освещения.
Post by: Tvlad on March 03, 2017, 03:06:10 PM
Спасибо вам обоим за идеи. Есть мысли куда копать. По поводу Wow. Да, примерно тоже самое , только тут нет кругов на поверхности, когда поплавок тонет и верхняя часть поплавка видна.  В общем ночью буду пробовать вариант с COLORMODE и IF_PIXEL_IN и PXLCOUNT.  Винт, отдельное спасибо. Разжевал более чем подробно.
Title: Re: 3д. Изменение цвета взависимости от освещения.
Post by: Tvlad on March 05, 2017, 12:59:39 AM
Доброго всем. Вот код на обсуждение.

1:
 waitms (1500)
 KEYDOWN  (70)
 waitms (500)
 KEYUP   (70)
 waitms (2000)

 2:
 GETSCREEN
 COLORMODE ( 6, 620, 320, 750, 380)
 
 
 
 $clr = PXL ( 679, 375)
    if ($clr = 2039647) | ($clr = 2039615) | ($clr = 4144959) | ($clr = 4145023)
    logwrite ( "o", $clr)
    waitms (100)
    KEYDOWN  (70)
    waitms (100)
    KEYUP   (70)
    waitms (3000)
      
      goto (1)
      
      else
       logwrite ( "w", $clr)
      goto (2)
      
      end if
   

Тут не хватает кусочка кода, где "муви" направляет курсор на определенную позицию. Дальше жмём F, это рыбалка. Паузы сделаны из-за лагов на сервере. Делаем снимок экрана, упрощаем цветность картинки. Обращаемся к конкретному пикселю(его я вычислил с помощью лупы) и вот дальше запарка. Периодически отказывается работать "ИЛИ" в цикле. Вопрос. Почему не работает "ИЛИ"? Что не так. ЗА красоту кода не ругайте. Я только учусь
   
(Отдельный респект Винту, аз подсказку о операторе colormode, он реально гасит все переливы, блики и оставляет только один неизменный цвет)      
Title: Re: 3д. Изменение цвета взависимости от освещения.
Post by: Oraven on March 05, 2017, 08:09:54 AM
Для начала исправим ошибки.
Писать нужно не  end if а end_if
В комплексном условии отсутствуют общие скобки.

Избавился от гото, в место него нормальный цикл. Запись в лог ощутимо тормозит выполнение, поэтому используй его только для теста.
Code: (clickermann) [Select]
waitms (1500)
KEYDOWN  (#F)
waitms (500)
KEYUP   (#F)
waitms (2000)

$check = 0
WHILE($check = 0)
   GETSCREEN(679,375,679,375) // ограничиваем область снимка и цветокоррекции одним пикселом для ускорения
   COLORMODE (6,679,375,679,375)
   $clr = PXL (679,375)
   IF(($clr = 2039647) | ($clr = 2039615) | ($clr = 4144959) | ($clr = 4145023))
//      logwrite ("o", $clr)
      waitms (100)
      KEYDOWN  (#F)
      waitms (100)
      KEYUP   (#F)
      waitms (3000)
      $check = 1
   ELSE
//      logwrite ("w", $clr)
      WAITMS(5) // нужна небольшая задержка для разгрузки процессора
   END_IF
END_CYC
Title: Re: 3д. Изменение цвета взависимости от освещения.
Post by: Tvlad on March 05, 2017, 10:22:24 AM
Спасибо что объяснил, Oraven. Конечно же нужны были общие скобки. Упустил из виду. ЗА код тоже отдельное спасибо. Теперь более красиво. Goto помню еще с Бейсика, поэтому и применил.
Ещё раз спасибо за науку.