Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Hito on July 27, 2014, 10:38:01 AM
-
Ребят, предположим, что есть цвет xxx и есть цвет yyy. Эти пиксели разбросаны по экрану. Мне нужен xxx, но только там, где в радиусе 10-15 пикслей возле него нет yyy. Как это реализовать в GETSCREEN, а?
-
найти массив координат xxx и массив координат yyy
а потом уже какойто математической формулой сравнивать насколько от данной конкретной xxx удалены все yyy
-
Мда... А примером скрипта можно...?
-
Можно и без формул.
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)
-
ну как то так
не уверен в работоспособности потому как надо проверять синтаксис
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
-
Спс большое! Я верхним скриптом обойдусь...))
-
"надо проверять синтаксис" - слова-то какие тут знают... Чтоб внести ясность - я окончил 8 классов интерната и всё ))
-
"надо проверять синтаксис" - слова-то какие тут знают... Чтоб внести ясность - я окончил 8 классов интерната и всё ))
слова вроде как слова, а скрипт должен быть рабочим просто надо проверить в действии
-
Ну ты прости - я привык тут "черному коту" и "космонавту" доверять в первую очередь )) У них скрипты всегда рабочие и по ним хоть как-то постепенно логику понять можно. Ну хоть чуть-чуть )) Но за то, что откликнулся, большое спасибо! ))
-
не хочу плодить темы по 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)
-
не хочу плодить темы по GETSCREEN, но уперся в одну проблему :( не корректно работает скрипт
каждый IF_ должен заканчиваться END_IF, и незабывай про GETSCREEN при смене картинки на экране.
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)
-
Большое спасибо, за подсказку.
-
Уважаемы гуру, помогите допилить скрипт, логику вроде прописал, но не пойму где ошибка, я только учусь :)
Задача скрипта по приоритетам:
1. Сканирование карты на наличие красного пикселя (работает)
2. Заходим в найденную базу красных (работает)
3. А вот дальше проблема с условиями :( мне нужно чтобы в определенном месте меню базы скрипт искал через функцию DEFINE значения от 0 до 2 и делал соответствующие действия.
- например если нет противников на базе то есть 0 то закрываем меню базы и продолжаем искать красные пиксели (они периодически спавнятся)
- если есть противник на базе от 1 до 2 и более то атакуем базу (при нажатии на кнопку атаки, меню базы закрывается автоматически) и продолжаем дальше искать цели красные пиксели на карте
- если в процессе поиска красного пикселя флот зашел на другую базу красных для атаки, а там будет гореть серая кнопка не позволяющая атаковать, то закрываем меню базы
Вот вся логика, хелп плз :)
$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
-
Может в стр.31 должно быть $count1
И зачем там вообще $count и $count1 если область у них одна и значение одно? Или я не до конца понял.
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
-
Может в стр.31 должно быть $count1
И зачем там вообще $count и $count1 если область у них одна и значение одно? Или я не до конца понял.
Да...это что то лишнего я добавил, каюсь, проверить ваш скрипт смогу только через 3-4 дня, так как в жуткой глуши нахожусь.
Спасибо за ответ.
-
Блиииин, там функция 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 хотя картинка тоже будет меняться, что посоветуете, если хотите могу предоставить скрины игры, чтобы было понятнее о чем я говорю?
-
Если алгоритм разложить по скринам, то будет вот так:
Ищу красный пиксель
(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, не выкладывать этот скрипт на других ресурсах, лучше расскажите про эту программу вашим друзьям которая поможет автоматизировать многие их действия, это и будет дань уважения разработчику и тем ребятам кто тратит свои время помогая нам новичкам писать скрипты, хотя наверно меня вряд ли услышат.
-
Проходил мимо.
Попробовал найти игру 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)
-
прощу прощения за конспирацию, игра называется Galaxy Legend на Андрюше и IOS красивая пошаговая космическая РПГ с жутким донатом и задротсвом...вот отсюда и хочется как то с помощью скриптов экономить свое время.