Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - PasqualeAcosta

Pages: [1] 2
1
Вот как отсеять например координаты в массиве которые находятся рядом в пределах 10 пикселей например и оставить только 1 пару.

Code: (clickermann) [Select]
SUB(cleaning)
    UNDEFINE($clear)
    $a_scansize = ARRSIZE($a_scan)
    LOGWRITE("Найдено изображений: ", $a_scansize/2)

    FOR($j=0, $j < $a_scansize, 2)
        $X = $a_scan[$j]
        $Y = $a_scan[$j+1]

        $dead_zone = 0
        $clear_size = ARRSIZE($clear)
        FOR($m=0, $m < $clear_size, 2)
            $X_old = $clear[$m]
            $Y_old = $clear[$m+1]
            //LOGWRITE("X/X_old = ", $X, "/", $X_old)
            //LOGWRITE("ABS ", ABS($X - $X_old), "/", ($Y - $Y_old))
            IF((($Y - $Y_old) <= $dead_Y) & (ABS($X - $X_old) <= $dead_X))
                $dead_zone = 1
                $m = $clear_size + 10
                LOGWRITE("---Дубль!--- ", $X, "/", $Y)
            END_IF
        END_CYC
     
        IF($dead_zone = 0)
            ARRPUSH($clear, $X)
            ARRPUSH($clear, $Y)
            //LOGWRITE("добавляем ", $X, "/", $Y)
        END_IF
    END_CYC
END_SUB


// тестовые данные
$dead_X = 5
$dead_Y = 5
STRSEPARATE("22,60,29,62,25,64,200,66,210,66,205,88,207,88", ",", $a_scan)

// боевые данные
//$dead_X = 10
//$dead_Y = 10
//UNDEFINE($a_scan)
//SCANPICTURE($a_scan, $f_x1,$f_y1,$f_x2,$f_y2, "pic.bmp", -1, 100)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


LOGCLEAR
LOGWRITE("Мёртвая зона x/y ", $dead_X, "/", $dead_Y, " px")
LOGWRITE("")

LOGWRITE("Было")
FOR($i = 0, $i < ARRSIZE($a_scan), 2)
    LOGWRITE ($a_scan[$i], " : ", $a_scan[$i+1])
END_CYC
LOGWRITE("")

cleaning()

LOGWRITE("")
LOGWRITE("Стало")
FOR($i = 0, $i < ARRSIZE($clear), 2)
    LOGWRITE ($clear[$i], " : ", $clear[$i+1])
END_CYC

HALT

Результат в массиве $clear,

Quote
18:03:16 Мёртвая зона x/y 5/5 px
18:03:16
18:03:16 Было
18:03:16 22 : 60
18:03:16 29 : 62
18:03:16 25 : 64
18:03:16 200 : 66
18:03:16 210 : 66
18:03:16 205 : 88
18:03:16 207 : 88
18:03:16
18:03:16 Найдено изображений: 7
18:03:16 ---Дубль!--- 25/64
18:03:16 ---Дубль!--- 207/88
18:03:16
18:03:16 Стало
18:03:16 22 : 60
18:03:16 29 : 62
18:03:16 200 : 66
18:03:16 210 : 66
18:03:16 205 : 88

Большое спасибо. Думаю этот вариант будет намного быстрее работать, пошел тестить. А то пришлось убирать массивы, делать через цикл if_picture.. и каждый раз перекрашивать пиксели. На удивление даже все заработало, но секунды 3 иногда 5 все переваривает, если несколько цветов ))

2
по моему ники не зумируются, а это значит, что можно обойтись поиском белого пикселя и простой сортировкой
Зумируются( Анимации глаз по крайней мере точно не видит, но пиксили даже при равном размере все равно немного пляшут. В общем задница какая то.
Получается иногда сделать так что б все находило при низком уровне совпадения, но выходит так что б влижних кругах скрипт находит картинку сразу много раз с разницей в 1-2 пикселя по координатам. Вот как отсеять например координаты в массиве которые находятся рядом в пределах 10 пикселей например и оставить только 1 пару.

3
Какие здесь примеры. На форуме, каждый второй скрипт это пример "подобного".

А чтоб пример был рабочим, нужно знать что может появиться в этих кружках? какие цвета. Как там с вариацией цвета, а то потом выяснится как всегда, что там всё переливается в анимации.
Скрины от большого до малого размера какие бывают. Ну и все скрины естественно не jpeg
Никакая анимация на круги не влияет. Влияет только удаление и соответственно размер.
На скрине как раз они с разной удаленностью.
Прикладываю еще пару скринов в колормоде 6 и формат бмп24 для наглядности
Вложить не могу, размер не дает, можно по ссылке посмотреть https://yadi.sk/d/rg83vWnR2NAEPQ

4
Искать какой нибудь из оттенков красного. Скорее всего в COLORMODE 6. Считать количество этого цвета в области.
Проверять область правее, где соседний маркер-кружок, считать в нём серые ИЛИ жёлтые пиксели. Так мы отсекаем другие места где достаточно красного (стрелки, гребень огромного крокодила). Это при условии что нам известны все эти доп цвета.
А ещё лучше сделать наоборот: Искать круги с жёлтым/серым и слева зону проверять на наличие нужного красного.
Случаем нету примера чего то подобного, может кто то уже реализовывал похожее (на форуме чет пока не нахожу)? Т.к. с нуля с ума сойду такое реализовывать.
Я могу уменьшить процент совпадения и найти все что нужно, но как и написано попадается много лишнего, или дублируются координаты (-+ 1 пиксель). Не могу понять как реализовать дополнительные отборы в массиве.

5
Общие вопросы / Помогите найти картинку
« on: December 02, 2019, 12:00:31 AM »
Вечер добрый! Перепробовал и вырезать по разному и работал с колормодами. Но никак не получается точно определять красные шары. Суть в том что пиксели немного пляшут, плюс в зависимости от удаления объект становится меньше...
Скрин во вложении. Может попробовать искать по уровням, но там тоже иконка при удалении становится меньше.
Подскажите, может будут еще какие то варианты, интересные идеи?

6
Учебные статьи / Re: Массивы
« on: December 01, 2019, 08:35:05 PM »
Что еще за 05? Число не может начинаться с нуля.
Число работает нормально, пробовал по разному. Как только добавляю строчку колормода выдает подобную ошибку.
Код для теста сократил. В общем беда какая то с массивами, версия кликера 4.13. Или что то не так делаю? Как в в данной ситуации колормод применить?

Code: [Select]
MOVE(100,100)
GETSCREEN (260,140,1015,646)
COLORMODE(7,260,140,1015,646)
scanpicture ($var,260,140,1015,646,"textures\red4.bmp",-1, 5)
LOGWRITE (ARRSIZE($var))
while (arrsize($var) > 0)
   
   $y = arrpop($var)
   $x = arrpop($var)
   LOGWRITE ($x," ",$y)
WAITMS(100)
end_cyc
UNDEFINE($var)
LOGSHOW (1, 700,300)

HALT

7
Учебные статьи / Re: Массивы
« on: December 01, 2019, 01:20:42 AM »
Доброго времени суток! Создал массив по примеру описанному в шапке. Суть скрипта, нужно искать совпадения картинок и делать с ними определенные действия (удаляя координаты уже отработанных из массива). По факту фарм мобов в игре.
В итоге когда добавляю колормод во второй строке скрипкт выдает ошибку. Так же при нахождении нескольких картинок цикл не повторяется. В чем может быть проблема?

Code: [Select]
GETSCREEN (264,112,1030,646)
COLORMODE(7,264,112,1030,646)
WAITMS(300)
scanpicture ($var,264,112,1030,646,"textures\002.bmp", -1, 05)
WAITMS(300)
LOGWRITE (ARRSIZE($var))
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   WAITMS(300)
   lclick($x+100, $y-30) // клик моба
   WAITMS(500)
   GETSCREEN (658,666,658,666)
   COLORMODE(4,658,666,658,666)
   IF(PXL(658,666)=3100575)
      WAITMS(500)
      GETSCREEN (619,105,625,117)
      COLORMODE(8,619,105,625,117)
      IF_PICTURE_IN (619,105,625,117, "textures\004.bmp", -1, 70)
         WAITMS(100)
         LOGWRITE ("S моб")
         LCLICK(457,525)  // выходим
      ELSE
         WAITMS(300)
         LOGWRITE ("бьем"," ",$x+100,", ",$y-30)
         LCLICK(658,666)  // 3100575  атака
         WAITMS(300)
         LCLICK(723,219)  // 3885367
         WAITMS(300)
         LCLICK(733,291)  // 9874874
         WAITMS(300)
         LCLICK(739,367)  // 2105376
         WAITMS(300)
         LCLICK(742,483)  // 2499878
         WAITMS(300)
         LCLICK(739,549)  // 2302499
         WAITMS(300)
         LCLICK(640,686) // в бой
         WAITMS(30000)
      END_IF
   ELSE
   END_IF
end_cyc

LOGWRITE ("херушки")

HALT




8
Использование / Пираты Карибского моря
« on: September 06, 2019, 09:01:18 PM »
Доброго времени суток! Никто случаем не настраивал бота на игру Пираты корибского моря на андроиде через Facebook Gameroom?
Сложно опять вспоминать азы и заново все писать, может есть у кого готовые варианты, я бы выкупил идеи. Либо может у кого из профи есть свободное время, можно обсудить его оплату.

9
В том то и дело, что перед кликом тебе нужно сначала переместить курсор, а потом уже клик.

Прописал, не получается. Координаты нормально определяются, привязка правильная, в логе так же все корректно отображается. Но по факту клик все равно происходит там где в данный момент находится курсор и он не сдвигается...
Пробовал и клики мыши прописать через postmessage как у вас в теме.
Тоже 0 реакции. В чем еще может быть проблема?

10
Спасибо. Кстати тоже в арчейдж поигрывал когда то еще с ЗБТ на корее))

11
Да не, не будет проблем  :D.
Что бы создать клик мне нужно будет через альтернативу прописать как наведение мышкой А_Move, а потом еще через альтернативу продублировать координаты в сам клик мышкой A_lclick ?
Просто не понимаю зачем прописывать передвижение если в самом щелчке так же указываются координаты действия?

12
Хорошо, спасибо. Буду оба варианта тестировать. Как минимум ради общего развития)

13
В вашем случае проявляется необходимость наводить курсор перед кликом, что исключает использование режима привязки.

Если кликер не может быть кликером, зачем тогда вообще привязки)? У меня сейчас жена в диабло 3 на виртуалке ботит)) Хороший вариант конечно, но думал все как то проще реализуется.

14
А способа попроще реально нету)? Судя по описанию функций все гораздо проще должно было быть.
Я не против и так сделать, но реально именно так необходимо?
Как понимаю "0x0200" означает клик левой кнопки? Справку прочитал, но не особо понял эту команду. почему первый координат "0", а второй "$x+($y*65536)". Можно чуть подробнее.

15
Общие вопросы / Привязка к окну, проблемы
« on: November 02, 2018, 12:12:32 PM »
День добрый! Перечитал массу тем про проблемы с привязыванием окон. И только еще больше запутался.
В общем игра три в ряд, отдельный клиент, без каких либо геймгуардов и защит. Оконный режим. Винда 10.
Все цвета в лупе отображаются корректно, мышка кликает во время, цвета считываются. НО мышка кликает туда где находится курсор в данный момент, а не по координатам. Как такое исправить?
Судя по темам которые находил, есть ряд команд которые не работают при привязке, но не нашел нигде общий список того что "Нельзя".
В общем как обходят такие проблемы с наведением?

Pages: [1] 2