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

Основной раздел => Общие вопросы => Topic started by: Hito on July 27, 2014, 10:38:01 AM

Title: Еще по GETSCREEN вопрос...
Post by: Hito on July 27, 2014, 10:38:01 AM
Ребят, предположим, что есть цвет xxx и есть цвет yyy. Эти пиксели разбросаны по экрану. Мне нужен xxx, но только там, где в радиусе 10-15 пикслей возле него нет yyy. Как это реализовать в GETSCREEN, а?
Title: Re: Еще по GETSCREEN вопрос...
Post by: aden on July 27, 2014, 02:35:38 PM
найти  массив координат xxx и массив координат yyy
а потом уже какойто математической формулой сравнивать насколько от данной конкретной xxx удалены все yyy
Title: Re: Еще по GETSCREEN вопрос...
Post by: Hito on July 27, 2014, 03:21:47 PM
Мда... А примером скрипта можно...?
Title: Re: Еще по GETSCREEN вопрос...
Post by: Oraven on July 27, 2014, 04:02:20 PM
Можно и без формул.
Code: (clickermann) [Select]
GETSCREEN
SCANPXL($ARR_SCAN, 0,0, $_xmax,$_ymax, 255) // цвет xxx
$ARR_NUM = 0
$SHIFT_X = 1 // смещение
$SHIFT_Y = 1
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   IF(($X > $X2) | ($Y > $Y2))
      $X2 = $X + $SHIFT_X
      $Y2 = $Y + $SHIFT_Y
      IF_PIXEL_IN($X-7,$Y-7, $X+7,$Y+7, 16777215) // цвет yyy
         WAITMS(1)
      ELSE
         LCLICK($X, $Y)
         WAITMS(100)
      END_IF
   END_IF
END_CYC
UNDEFINE($ARR_SCAN)
Title: Re: Еще по GETSCREEN вопрос...
Post by: aden on July 27, 2014, 04:21:55 PM
ну как то так
не уверен в работоспособности потому как надо проверять синтаксис
Code: (clickermann) [Select]
GETSCREEN
SCANPXL($ARR_XXX, 0,0, $_xmax,$_ymax, $color_xxx)
SCANPXL($ARR_YYY, 0,0, $_xmax,$_ymax, $color_yyy)
while(arrsize($ARR_XXX) > 0) // берем координаты xxx
$y1 = arrpop($ARR_XXX)
$x1 = arrpop($ARR_XXX)
while(arrsize($ARR_YYY) > 0) // берем координаты yyy
$y2 = arrpop($ARR_YYY)
$x2 = arrpop($ARR_YYY)
$l = sqrt(($x2-$x1)($x2-$x1)+($y2-$y1)($y2-$y1))  // вычисляем длину между координатами
if($l > 12) // если длина больше 12 заносим в массив  устраивающих нас результатов
arrpush($result, $x1)
arrpush($result, $y1)
end_if
end_cyc
end_cyc
Title: Re: Еще по GETSCREEN вопрос...
Post by: Hito on July 27, 2014, 04:59:50 PM
Спс большое! Я верхним скриптом обойдусь...))
Title: Re: Еще по GETSCREEN вопрос...
Post by: Hito on July 27, 2014, 07:44:53 PM
"надо проверять синтаксис" - слова-то какие тут знают... Чтоб внести ясность - я окончил 8 классов интерната и всё ))
Title: Re: Еще по GETSCREEN вопрос...
Post by: aden on July 27, 2014, 08:08:47 PM
"надо проверять синтаксис" - слова-то какие тут знают... Чтоб внести ясность - я окончил 8 классов интерната и всё ))

слова вроде как слова, а скрипт должен быть рабочим просто надо проверить в действии
Title: Re: Еще по GETSCREEN вопрос...
Post by: Hito on July 27, 2014, 11:02:22 PM
Ну ты прости - я привык тут "черному коту" и "космонавту" доверять в первую очередь )) У них скрипты всегда рабочие и по ним хоть как-то постепенно логику понять можно. Ну хоть чуть-чуть )) Но за то, что откликнулся, большое спасибо! ))
Title: Re: Еще по GETSCREEN вопрос...
Post by: blackhawk2k on August 09, 2014, 07:38:04 AM
не хочу плодить темы по GETSCREEN, но уперся в одну проблему :( не корректно работает скрипт

GETSCREEN
// поиск красного или зеленого или пурпурного пикселя
IF_PIXEL_IN (20,40, 1290, 800, 255, 15002625, 16748973)
 lclick($_return1, $_return2)
   WAITMS(100)
// нашли красный или зеленый или пурпурный пиксель, заходим в меню

// если есть красного пиксель, то жмем кнопку LCLICK(678,802) атакуем
IF_PIXEL_IN (550,784, 797, 839, 255)
 lclick($_return1, $_return2)
     WAIT (2)
    LCLICK(678,802)

ELSE // если нет красного пикселя то ищем серый пиксель и жмем кнопку LCLICK(1369,96) закрываем меню

// поиск серого пикселя
IF_PIXEL_IN (550,784, 797, 839, 4276287)
 lclick($_return1, $_return2)
    WAIT (2)
    LCLICK(1369,96) // закрываем меню
END_IF
  WAITMS(1000)   
Title: Re: Еще по GETSCREEN вопрос...
Post by: dramster on August 09, 2014, 08:50:48 AM
не хочу плодить темы по GETSCREEN, но уперся в одну проблему :( не корректно работает скрипт


каждый IF_ должен заканчиваться END_IF, и незабывай про GETSCREEN при смене картинки на экране.

Code: (clickermann) [Select]
GETSCREEN
// поиск красного или зеленого или пурпурного пикселя
IF_PIXEL_IN (20,40, 1290, 800, 255, 15002625, 16748973)
   lclick($_return1, $_return2)
END_IF
WAIT (1)
// нашли красный или зеленый или пурпурный пиксель, заходим в меню
GETSCREEN
// если есть красного пиксель, то жмем кнопку LCLICK(678,802) атакуем
IF_PIXEL_IN (550,784, 797, 839, 255)
   lclick($_return1, $_return2)
   WAIT (2)
   LCLICK(678,802)
   
ELSE  // если нет красного пикселя то ищем серый пиксель и жмем кнопку LCLICK(1369,96) закрываем меню
   
   // поиск серого пикселя
   IF_PIXEL_IN (550,784, 797, 839, 4276287)
      lclick($_return1, $_return2)
      WAIT (2)
      LCLICK(1369,96) // закрываем меню
   END_IF
END_IF
WAITMS(1000)
Title: Re: Еще по GETSCREEN вопрос...
Post by: blackhawk2k on August 09, 2014, 11:36:15 AM
Большое спасибо, за подсказку.
Title: Re: Еще по GETSCREEN вопрос...
Post by: blackhawk2k on August 12, 2014, 05:08:26 PM
Уважаемы гуру, помогите допилить скрипт, логику вроде прописал, но не пойму где ошибка, я только учусь :)

Задача скрипта по приоритетам:

1. Сканирование карты на наличие красного пикселя (работает)
2. Заходим в найденную базу красных (работает)
3. А вот дальше проблема с условиями :( мне нужно чтобы в определенном месте меню базы скрипт искал через функцию DEFINE значения от 0 до 2 и делал соответствующие действия.
    - например если нет противников на базе то есть 0 то закрываем меню базы и продолжаем искать красные пиксели (они периодически спавнятся)
    - если есть противник на базе от 1 до 2 и более то атакуем базу (при нажатии на кнопку атаки, меню базы закрывается автоматически) и продолжаем дальше искать цели красные пиксели на карте
    - если в процессе поиска красного пикселя флот зашел на другую базу красных для атаки, а там будет гореть серая кнопка не позволяющая атаковать, то закрываем меню базы

Вот вся логика, хелп плз :)

Code: (clickermann) [Select]
$K_SPEED = 4  // Delay multiplier
DEFINE ($var000, 2528328279)//0 противников
DEFINE ($var001, 2074897902)//1 противник
DEFINE ($var002, 2911676177)//2 противника
DEFINE ($var003, 3851769229)//STOP

wndpos( wndfind("BlueStacks App Player"), 0, 0) // перемещаем окно в угол

LCLICK(1552,560)  // забираем тех. очки
WAIT (2)
LCLICK(159,189)  // марш

GETSCREEN
// поиск красного пикселя на карте
IF_PIXEL_IN (32,244, 1465, 800, 8487423)
   lclick($_return1, $_return2) 
END_IF

// нашли красный пиксель, заходим в меню

WAIT (1)

GETSCREEN
$count = PXLCRC (897, 558, 934, 579)
logwrite("Hash: ", $count)
print($count)

WAIT(1)

GETSCREEN
$count = PXLCRC (897, 558, 934, 579)
logwrite("STOP: ", $count1)
print($count1)

//Если 0 противников то выходим из меню

IF($count1 = $var003 )
      WAIT (2)
      LCLICK(1369,96) // закрываем меню
END_IF

//Если противников 0 то закрываем меню, если не 0 то жмем кнопку атака

IF($count = $var000 )

else
skip:
GETSCREEN 
$count = PXLCRC (897,558, 934, 579)
logwrite("Hash: ", $count)
print($count)

       //условие поиск противников выше 1
        IF (($count = $var001) | ($count = $var002))

        LCLICK(678,802)  //кнпока атака
WAIT(1)           //пауза 1 сек

GETSCREEN
$count = PXLCRC (897,558, 934, 579)
logwrite("STOP1: ", $count2)
print($count2)

IF($count2 = $var003 )
HALT
    END_IF
       goto(skip)
    END_IF
END_IF
Title: Re: Еще по GETSCREEN вопрос...
Post by: Vint on August 13, 2014, 09:44:52 AM
Может в стр.31 должно быть $count1
И зачем там вообще $count и $count1 если область у них одна и значение одно? Или я не до конца понял.

Code: (clickermann) [Select]
DEFINE ($var000, 2528328279)//0 противников
//DEFINE ($var001, 2074897902)//1 противник
//DEFINE ($var002, 2911676177)//2 противника
DEFINE ($var003, 3851769229)//STOP

wndpos( wndfind("BlueStacks App Player"), 0, 0) // перемещаем окно в угол

LCLICK(1552,560)  // забираем тех. очки
WAIT (2)
LCLICK(159,189)  // марш

WHILE(1)
   GETSCREEN
   // поиск красного пикселя на карте
   IF_PIXEL_IN (32,244, 1465, 800, 8487423)
      // нашли красный пиксель, заходим в меню
      lclick($_return1, $_return2)
      WAIT (1)
     
      GETSCREEN
      $count = PXLCRC (897, 558, 934, 579)
      logwrite("Hash: ", $count)
      print($count)
     
      IF (($count = $var000) | ($count = $var003)) // если 0 или STOP выходим
         IF($count = $var003 )
            WAIT (2)
            LCLICK(1369,96) // закрываем меню
         END_IF
      ELSE  // 1 и больше
         LCLICK(678,802)  //кнопка атака
      END_IF
      WAIT(1)
   ELSE
      WAIT(1)
   END_IF
END_CYC
Title: Re: Еще по GETSCREEN вопрос...
Post by: blackhawk2k on August 13, 2014, 04:53:49 PM
Может в стр.31 должно быть $count1
И зачем там вообще $count и $count1 если область у них одна и значение одно? Или я не до конца понял.

Да...это что то лишнего я добавил, каюсь, проверить ваш скрипт смогу только через 3-4 дня, так как в жуткой глуши нахожусь.
Спасибо за ответ.
Title: Re: Еще по GETSCREEN вопрос...
Post by: blackhawk2k on August 16, 2014, 02:03:30 PM
Блиииин, там функция DEFINE наверно не подойдет, на черном фоне окна в базе противника, когда происходит поиск кол-ва врагов в этой области  (878, 537, 900, 561)

GETSCREEN
      $count = PXLCRC (878, 537, 900, 561)
      logwrite("Hash: ", $count)
      print($count)
 
      IF (($count = $var000) | ($count = $var003))
         IF($count = $var003 )
            WAIT (2)

по всей области окна базы противника происходят движения еле заметные и значение DEFINE постоянно меняется, может попробовать через IF_PICTURE хотя картинка тоже будет меняться, что посоветуете, если хотите могу предоставить скрины игры, чтобы было понятнее о чем я говорю?
Title: Re: Еще по GETSCREEN вопрос...
Post by: blackhawk2k on August 16, 2014, 02:47:24 PM
Если алгоритм разложить по скринам, то будет вот так:

Ищу красный пиксель

(http://i65.fastpic.ru/thumb/2014/0816/e9/fc6062d16743826fb4ade929558ea5e9.jpeg) (http://fastpic.ru/view/65/2014/0816/fc6062d16743826fb4ade929558ea5e9.jpg.html)

Далее захожу на базу красных и смотрю есть ли игроки на базе, если нет (0) то выхожу жму крест красный наверху и продолжаю искать красных или пурпуных с населенной базой, зеленые это свои

(http://i65.fastpic.ru/thumb/2014/0816/37/1619ca4d3d947a4314026ac863d9a637.jpeg) (http://fastpic.ru/view/65/2014/0816/1619ca4d3d947a4314026ac863d9a637.jpg.html)

Если есть 1 и более на базе противников то атакую нажав красную кнопку

(http://i65.fastpic.ru/thumb/2014/0816/36/6bedbc039089b84036fa648917635636.jpeg) (http://fastpic.ru/view/65/2014/0816/6bedbc039089b84036fa648917635636.jpg.html)

Дальше если я в процессе атаки (МАРШ) то ничего не делать, как только слово МАРШ сменилось на слово ОТДЫХ, снова начать искать красных, см. скрин №1

(http://i66.fastpic.ru/thumb/2014/0816/bf/bc57923181f61ccfae039027ca3fc3bf.jpeg) (http://fastpic.ru/view/66/2014/0816/bc57923181f61ccfae039027ca3fc3bf.jpg.html)

Вот как бы и весь аглоритм, буду признателен если поможете.

Убедительная просьба для всех игроков в GL, не выкладывать этот скрипт на других ресурсах, лучше расскажите про эту программу вашим друзьям которая поможет автоматизировать многие их действия, это и будет дань уважения разработчику и тем ребятам кто тратит свои время помогая нам новичкам писать скрипты, хотя наверно меня вряд ли услышат.
Title: Re: Еще по GETSCREEN вопрос...
Post by: Atas on August 16, 2014, 05:11:54 PM
Проходил мимо.
Попробовал найти игру GL поиском Яндекса. (http://yandex.ru/yandsearch?text=%D0%B8%D0%B3%D1%80%D0%B0%20GL&clid=1929745&lr=192&p=1)
Не нашел игру GL...  :-\ Поиск по картинке тоже ничего не дал.
"Нет такой игры" - подумал я... и пошел дальше.
Имя, сестра, имя! (http://www.youtube.com/watch?v=Fc5u7osXKxM)
Title: Re: Еще по GETSCREEN вопрос...
Post by: blackhawk2k on August 16, 2014, 05:31:18 PM
прощу прощения за конспирацию, игра называется Galaxy Legend на Андрюше и IOS красивая пошаговая космическая РПГ с жутким донатом и задротсвом...вот отсюда и хочется как то с помощью скриптов экономить свое время.