Author Topic: Помогите разобраться  (Read 5181 times)

0 Members and 2 Guests are viewing this topic.

bionicfox

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Помогите разобраться
« on: January 19, 2023, 01:06:43 AM »
Всем привет.
Друзья, помогите чуть чуть. У меня есть скрипт, которым я пользовался долго, но почему то он стал работать некорректно и поэтому нужно его немного улучшить.

Есть картинка с поплавком в определённой зоне. Нужно найти поплавок по цвету пикселя, обозначить небольшую зону вокруг него (примерно как на скрине), и в этой небольшой зоне уже искать нужный пискель (белого цвета) после поклёвки и сделать пкм.

 

bionicfox

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Помогите разобраться
« Reply #1 on: January 19, 2023, 10:51:48 AM »
подскажите, пожалуйста, кусок скрипта, который ограничивает область вокруг найденного пикселя для дальнейшего поиска другого пикселя, дальше я сам справлюсь.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите разобраться
« Reply #2 on: January 19, 2023, 01:57:00 PM »
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
    // нашли первый
    IF_PIXEL_IN($_return1-40,$_return2-30, $_return1+40,$_return2+30, 16777215)
        RCLICK($_return1, $_return2)
        WAITMS(100)
    END_IF
END_IF

Это если однократно.
Если там повторения и есть ещё куча промежуточного кода, лучше найденные координаты запомнить в новых переменных и делать ещё GETSCREEN. Примерно так
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
    // нашли первый
    $wx = $_return1
    $wy = $_return2
   
    ...
   
    GETSCREEN($wx-40,$wy-30, $wx+40,$wy+30)
    IF_PIXEL_IN($wx-40,$wy-30, $wx+40,$wy+30, 16777215)
        RCLICK($_return1, $_return2)
        WAITMS(100)
    END_IF
   
    ...
   
END_IF


kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: Помогите разобраться
« Reply #3 on: January 19, 2023, 02:28:28 PM »
У меня есть скрипт... нужно его немного улучшить.
а код улучшаемого скрипта вы засекретили, чтоб местные электроудочники в вашем болоте всех мальков с головастиками не повыбивали?  ;D

bionicfox

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Помогите разобраться
« Reply #4 on: January 20, 2023, 03:37:23 PM »
У меня есть скрипт... нужно его немного улучшить.
а код улучшаемого скрипта вы засекретили, чтоб местные электроудочники в вашем болоте всех мальков с головастиками не повыбивали?  ;D

это ваш код, который я нашёл тут.

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

LOGWRITE ("Старт")
1:
KEYPRESS(#E)           //  начало ловли
$time = $_time_t + 15  // таймер на 15 секунд
WHILE($time > $_time_t)//  переход к сканированию пикселя
   GETSCREEN(46,265,1151,676)
   COLORMODE(2,46,265,1151,676)
   IF_PIXEL_IN(46,265,1151,676,16777215)
      LCLICK($_return1, $_return2) //клик на поплавок       
      $time = 0
      waitms(800)
   ELSE
      waitms(50)
   END_IF
END_CYC
IF($time ! 0)
   LOGWRITE ("Перезаброс")
ELSE
   INC($var,1)
   LOGWRITE ("Поймал рыбу ",$var," раз")
   WAIT(RND(2,3))         //  ждет 2-3 сек
END_IF
GOTO(1)//возврат в начало
« Last Edit: January 20, 2023, 03:50:18 PM by bionicfox »

bionicfox

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Помогите разобраться
« Reply #5 on: January 21, 2023, 06:20:59 AM »
У меня есть скрипт... нужно его немного улучшить.
а код улучшаемого скрипта вы засекретили, чтоб местные электроудочники в вашем болоте всех мальков с головастиками не повыбивали?  ;D
Кирилл, не поможете допилить код?
суть в следующем, что я хочу добавить. Забрасываем поплавок в определённую область, в ней сканируем пиксель поплавка, выбираем вокруг него небольшую область и ждём поклёвки для пкм по белому пикселю в области. Суть в том, что производитель что-то сделал с цветами и скрипт делает много ложных срабатываний.

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Помогите разобраться
« Reply #6 on: January 21, 2023, 11:44:05 AM »
Всем привет! :)
Игру Trove я не видел, но когда-то мне приходилось делать подобный скрипт для рыбалки в WoW, там те же проблемы с поиском пикселей. Помогло то, что при поклевке появляется всплеск на воде. Если подобрать настройки графики в игре и значение COLORMODE, то появляется чисто белый пиксель на разноцветной глади воды. Но в зоне поиска такие белые пиксели могут появляться например и от бликов на воде. Поэтому потребовалось еще делать дополнительную проверку перед кликом в поплавок, так как если кликнуть раньше поклевки, то процесс ловли прерывается и всё приходится начинать сначала. Пришлось определять код курсора (постоянного кода там нет, он все время меняется). Но есть закономерность - коды курсора над водой и над поплавком всегда разные между собой.
Алгоритм получился такой: забрасываем удочку...
    1. парковка курсора (вне зоны где может оказаться поплавок)
    2. ожидание белого пикселя в небольшой части экрана около поплавка
    3. при появлении пикселя - запоминаем код курсора на парковке; перемещаем курсор на найденный пиксель; получаем код курсора на этом пикселе
    4. сравниваем коды курсора; если коды курсора на парковке и над найденным пикселем не равны, то делаем правый клик по поплавку
Задержки нужно выставить индивидуально, например перед получением кода курсора над поплавком и прочие.
Вот такой вот пример. Возможно поможет подобрать решение и для Trove. :)

kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: рыбалка
« Reply #7 on: January 21, 2023, 01:01:56 PM »
 - Мама, а чем отличается зимний рыбак от летнего?
 - Да практически ничем доченька, та же пьянь, только в валенках!
Code: (clickermann) [Select]
LOGWRITE ("Старт")
1:
KEYPRESS(#E)           //  начало ловли
waitms(800)            //регулируемая задержка  в мс. после заброса поплавка
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255) // вместо 255 укажите через запятую основные цвета поплавка
   // запомнить где поплавок
   $wx = $_return1
   $wy = $_return2
   
   // регулировка области ожидания брызг от найденного пикселя поплавка
   $wx1 = $_return1-40  // в лево  по горизонтали
   $wy1 = $_return2-30  // в верх  по вертикали
   $wx2 = $_return1+40  // в право по горизонтали
   $wy2 = $_return2+30  // в низ   по вертикали
   // ...
   $time = $_time_t + 15  // таймер ожидания поклёвки на 15 секунд
   WHILE($time > $_time_t)//  переход к сканированию пикселя
      GETSCREEN($wx1,$wy1,$wx2,$wy2)
      IF_PIXEL_IN($wx1,$wy1,$wx2,$wy2, 16777215)  // через запятую можно указать дополнительные цвета для брызг
         // RCLICK($wx,$wy)   // правый клик на поплавок
         RCLICK($_return1, $_return2)  // заказанный пкм по белому пикселю брызг в области  а в оригинале был левый клик на поплавок
         $time = 0
         waitms(800)
      ELSE
         waitms(50)
      END_IF
   END_CYC
   IF($time ! 0)
       INC($var46,1)
      LOGWRITE ("Перезаброс ",$var46," раз")
   ELSE
      INC($var45,1)
      LOGWRITE ("Поймал рыбу ",$var45," раз")
      WAIT(RND(2,3))         //  ждет 2-3 сек
   END_IF
   GOTO(1)//возврат в начало
END_IF

bionicfox

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: рыбалка
« Reply #8 on: January 21, 2023, 09:26:52 PM »
- Мама, а чем отличается зимний рыбак от летнего?
 - Да практически ничем доченька, та же пьянь, только в валенках!
Code: (clickermann) [Select]
LOGWRITE ("Старт")
1:
KEYPRESS(#E)           //  начало ловли
waitms(800)            //регулируемая задержка  в мс. после заброса поплавка
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255) // вместо 255 укажите через запятую основные цвета поплавка
   // запомнить где поплавок
   $wx = $_return1
   $wy = $_return2
   
   // регулировка области ожидания брызг от найденного пикселя поплавка
   $wx1 = $_return1-40  // в лево  по горизонтали
   $wy1 = $_return2-30  // в верх  по вертикали
   $wx2 = $_return1+40  // в право по горизонтали
   $wy2 = $_return2+30  // в низ   по вертикали
   // ...
   $time = $_time_t + 15  // таймер ожидания поклёвки на 15 секунд
   WHILE($time > $_time_t)//  переход к сканированию пикселя
      GETSCREEN($wx1,$wy1,$wx2,$wy2)
      IF_PIXEL_IN($wx1,$wy1,$wx2,$wy2, 16777215)  // через запятую можно указать дополнительные цвета для брызг
         // RCLICK($wx,$wy)   // правый клик на поплавок
         RCLICK($_return1, $_return2)  // заказанный пкм по белому пикселю брызг в области  а в оригинале был левый клик на поплавок
         $time = 0
         waitms(800)
      ELSE
         waitms(50)
      END_IF
   END_CYC
   IF($time ! 0)
       INC($var46,1)
      LOGWRITE ("Перезаброс ",$var46," раз")
   ELSE
      INC($var45,1)
      LOGWRITE ("Поймал рыбу ",$var45," раз")
      WAIT(RND(2,3))         //  ждет 2-3 сек
   END_IF
   GOTO(1)//возврат в начало
END_IF

спасибо, но почему то идёт постоянный перезаброс удочки

kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: ловись рыбка, большая и маленькая
« Reply #9 on: January 21, 2023, 10:37:09 PM »
  $time = $_time_t + 15  // таймер ожидания поклёвки на 15 секунд
время до перезаброса можно регулировать.

IF_PIXEL_IN($wx1,$wy1,$wx2,$wy2, 16777215)  // через запятую можно указать дополнительные цвета для брызг
 если вообще не клюет то нужно добавлять возможные цвета брызг
в скрипте вообще куча регулировок  ;)

bionicfox

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: ловись рыбка, большая и маленькая
« Reply #10 on: January 21, 2023, 10:42:24 PM »
  $time = $_time_t + 15  // таймер ожидания поклёвки на 15 секунд
время до перезаброса можно регулировать.

IF_PIXEL_IN($wx1,$wy1,$wx2,$wy2, 16777215)  // через запятую можно указать дополнительные цвета для брызг
 если вообще не клюет то нужно добавлять возможные цвета брызг
в скрипте вообще куча регулировок  ;)
да, с регулировками я разобрался....я вписываю цвет пикселя, делаю другие регулировки (время, границы), но всё равно, сразу после заброса идёт перезаброс...такое чувство, что он находит нужный пиксель и перезабрасывает. Курсор не передвигается к пикселю, значит вторая чать (поклёвка) не отрабатывает
« Last Edit: January 21, 2023, 11:12:48 PM by bionicfox »

4.У.В.@.К

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Re: Помогите разобраться
« Reply #11 on: January 21, 2023, 11:06:04 PM »
Искать поплавок на воде визуально - дохлый номер. Не знаю может у тебя получится. У меня не получилось.
Я делал как написано здесь - http://crapware.aidf.org/forum/index.php?topic=3101.msg20696#msg20696 - по всплеску.
Вот пара советов из личного опыта. Если кому надо конечно.
Главное настроить графику самой игры. Там есть детализация воды и прочее. Всю графику естественно на минимум. Тогда определяет поплавок в момент поклевки 100%. Перед ловлей правда приходится немного покрутиться на месте, вода всегда разная. Но зато можно ловить даже у водопадов где вода рябит сильно. Помогает еще приближение и удаление изображения колесом мыши. Это уже как тонкая настройка. Все действия без задержек, по всплеску. Рандомная задержка только перед забросом удочки. Определение начала и конца каста ловли по наличию на экране полосы каста.
На звук ловить не пробовал. Баны тоже не ловил. :) Сейчас забросил всё это.

kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: ловись рыбка, большая и маленькая
« Reply #12 on: January 21, 2023, 11:42:58 PM »
не передвигается к пикселю, значит вторая часть (поклёвка) не отрабатывает
а что пишет в лог?

bionicfox

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: ловись рыбка, большая и маленькая
« Reply #13 on: January 22, 2023, 01:08:34 AM »
не передвигается к пикселю, значит вторая часть (поклёвка) не отрабатывает
а что пишет в лог?
1:07:02 Старт
1:07:03 Старт
1:07:04 Старт
1:07:05 Старт
1:07:06 Старт
1:07:07 Старт
1:07:08 Старт
1:07:09 Старт
« Last Edit: January 22, 2023, 04:42:14 AM by bionicfox »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Помогите разобраться
« Reply #14 on: January 22, 2023, 08:52:12 PM »
Всем привет.
Друзья, помогите чуть чуть. У меня есть скрипт, которым я пользовался долго, но почему то он стал работать некорректно и поэтому нужно его немного улучшить.

Есть картинка с поплавком в определённой зоне. Нужно найти поплавок по цвету пикселя, обозначить небольшую зону вокруг него (примерно как на скрине), и в этой небольшой зоне уже искать нужный пискель (белого цвета) после поклёвки и сделать пкм.


Это не БДО случайно?  ;D
« Last Edit: January 22, 2023, 09:28:23 PM by Hito »
Я не ду... Потому и не бу...