Нужно задать зону выполнения для скрипта, то есть все выполнялось в той зонеЯ вот посмотрел твои предыдущие сообщения и темы, ну вроде ж писал хоть какието скрипты, и толковые, и помогали же.
1) поиск будет картинка "1"это будущий 0,0 .проверить виден пиксель от картинки на 900,600. это зона выполнения скрипта будет
2) не находит картинку или пиксель
2.1) Не находит картинку этот шанс мал но может быть, ск прикрыта другим(и) окном пусть по ищет другую картинку "2" которая находится с права если по координаторам то будущий 900,0 и кликнет, выведет окно на передний план (если искать пиксель есть большой шанс что найдет другое ?)
2.2) не находит нижний пиксель, пусть пои щит картинку "2" которая указывала 900,0 нашлась, значит полосу прокрутки прокрутить вниз надо, найти и опустить на 20пх в низ. И повтор с пункта (1)
После повторов раз 10, стоп и сообщение не магу вывести зону, или что-то подобное
Конечно не плохо бы реализовать нижнюю прокрутку и расширения окна в лево
И приведите пару примеров поиска и клика.
Пожалуйста комментируйте строки
Нужна полноценная привязка, привязка к игре запрещена то есть черный экран.Ок, давай начнем с этого. Что в твоем понимании значит "виртуальная привязка"? И чем она отличается от существующей "обычной привязки"?
Чтобы работало как полагается да и остальные мелочи доделать нужна виртуальная привязка.
Чтобы работало как полагается да и остальные мелочи доделать...То есть без привязки не работает???
Проблема одна малейший сдвиг грубо говоря не работает. поэтому пака написан па простому код время выполнения дольше да и ошибки естьТы серьезно? Кто нибудь из присутствующих хоть немного понял из написанного? Остальное в том же духе :-\ . Ты извини, я не в обиду, но если ты пишешь свои мысли как они есть, то это не значит что все поймут что это все значит...
Чтобы я мог перенести на любой комп, передвинуть окно, итддобавлено: Кирил уже предложил, я более подробно расписал.
Надо нашёл картинку перевести координаты переменную $XY00 = $_return1, $_return2
И чтобы плясал весь поиск и выполнения (Скрипт) от переменной $XY00
Хотя эта переменная находится X600,Y100. я чтоб писал , якобы она находится X0,Y0
Как написать эту переменную так чтобы работал на весь код или вписать
И это просил как правильно написать IF_PIXEL_IN ($X1-96,$Y1-8, $X2+120,$Y2+19, 4145895) может понял бы как то все написать
$hwnd = WNDFIND ("Заголовок окна, то что сверху на нем написано.")
WNDPOS ($hwnd, 0, 0) //либо другие координаты
WNDSIZE ($hwnd, 800, 600) //либо другой размер. Использовать только в случае, если разрешение окна не статично.
//далее твой скрипт с нужными координатами
//пример
GETSCREEN(0, 0, 800, 600) // естественно, область снимка свою пиши
IF_PIXEL_IN (0, 0, 800, 600, 4145895) // естественно, область поиска свою пиши
//и так далее
//..........
//..........
В этом случае, на любом пк твое окно в начале переместится в нужные координаты. И если требуется, изменит свои размеры. И будет счастье :D .$check = 0
WHILE($check = 0)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "0000.bmp", -1, 100) // ищет картинку нашол значит и есть начальные координаты
$check = 1
LOGWRITE ("1")
$X = $_return1+999
$Y = $_return2+597
$X00 = $_return1
$Y00 = $_return2
WHILE(PXL ($X, $Y) ! 1653112) // проверка что вся область которая нужна видна
WAITMS (100)
END_CYC
WAITMS(100)
ELSE
WAITMS(50)
// след код корректировки
END_IF
END_CYC
HALT
// от этого чтоб все остальное работало снимки поиски выполнения итд, как сделать
$X00
$Y00
до остального думаю додумаюсь сам
Что-то подобное, но не то у одноклассников заголовок, может несколько вариантов.Может я чего то не знаю, и у одноклассников есть какоето приложение специальное. Но если это просто страница открытая в браузере, то обычно заголовк окна браузера выглядит примерно так - "Название страницы - Mozilla Firefox" или "Название страницы - Opera"
$hwnd = WNDFIND ("Mozilla Firefox")
WNDPOS ($hwnd, 0, 0) //либо другие координаты
WNDSIZE ($hwnd, 800, 600) //либо другой размер.
halt
// от этого чтоб все остальное работало снимки поиски выполнения итд, как сделатьВот прямо так и делай. Используй эти переменные, что тебе мешает?
$X00
$Y00
На ноутах с высотой экрана 768 лучше использовать полноэкранный режим нажав F11да плангина твоего на оф саите не вижу
Скролить окно туда сюда на пару строк не вариант. Ну и в любом случае делать это не колесом, а стрелками на клавиатуре.
Для мозилы есть плагин плавного скрола "SmoothWhell".
да плангина твоего на оф саите не вижуА там и нет
да плангина твоего на оф саите не вижуА там и нет
http://smoothwheel.mozdev.org/
На какой версии ты сидишь? В мазилле давно уже есть встроенная плавная прокрутка. Сам использую 47 версию.На последней. Всё дело в том, что дома я этим ничем не занимаюсь. А на работе только XP и под неё версия 52.9.0 максимум :D.
$check = 0
WHILE($check = 0)
GETSCREEN
LOGWRITE ("2") //-
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "0_Firefox.bmp", -1, 100) // ищем картинку приложения, только не FlashPlayerP [32-bit mode] Процесс
$check = 1
LOGWRITE ("игра обнаружена")
$hwnd = HGET($_return1,$_return2) // определение номера окна
//HSET($hwnd,1) //+ привязка 1, 0 отвезать
// WNDSETINFO($hwnd, 0, 0, 1037, 730) //установка окна вписать нужные координаты и размер, минимальный размер окна
WNDSIZE ($hwnd, 1037, 851) //+ Задает размер окна
//WNDPOS ($hwnd, 655, 0) //+ Помещает окно на экране в указанные координаты Правый угол комп + на половина полоса прокрутки
WNDPOS ($hwnd, 0, 0) //+ Помещает окно на экране в указанные координаты
WNDGETINFO($hwnd, $var1, $var2, $var3, $var4) //+ определение существующих размеров и координат их можно и вписать в установку, тогда не придётся переписывать существующий скрипт
LOGWRITE ("hwnd ",$hwnd," стали координаты ",$var1,",", $var2," размер ", $var3,",", $var4) //+
WNDBUMP ($hwnd) //+Помещает окно на передний план
WAITMS(1000) // время на обновление
GETSCREEN
LOGWRITE ("3")
// IF(PXL($X, $Y) = 1653112) // Доделать проверка что вся область которая нужна видна //+ будете проверять лучше заместо ($X, $Y) пишите ( $var1+"координаторы Х", $var2+"координаторы Y") без ковычек
LOGWRITE ("игра установлена ")
WAITMS(100)
ELSE
LOGWRITE ("измените браузер или его панели")
// END_IF
END_IF
END_CYC
//END_IF // вроде должно быть выше END_CYC
// m_move не з наеш что это удали просто обе строчки
m_move($var1+700-$U321+RND(-40,40),$var2+650+RND(-11,11))
LCLICK($_xmouse,$_ymouse) // если только это строчка будет кликнет где нашел
// и заспеши это
LCLICK($var1+700-$U321+RND(-40,40),$var2+650+RND(-11,11)) // клик в у казаном месте с ран домом
// куда угодно пишем выше выполнения а в самое начало чтобы удобно было изменить , цифры это цвет пикселя
// Или так пишите в Выполнении IF_PIXEL_IN($var1+700-$U321,$var2+530, $var1+720-$U321,$var2+550,138309,9962336,15786964)
$BUUB = 15786964 // Усиление брони
$BUUA = 138309 // Усиление атаки
$BUZM = 9962336 // Защита от магии
$BUPE = 8257 // -Повышение энергии
$BUL = 7536382 // -Лечение
$BUPEV = 9286 //+- Повышение энергии всем
$BUV = 660242 //- Воскрешение
// Выполнение
$U321 = 0 // обнуление
FOR ($Kup,$U321 < 400) // FOR (просто Счетчик, подсчет меньше заданного)
print ("Делаю"," Счет ",$U321) // а удали, просто для наблюдения начал выполнение и сколько подсчет
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN($var1+700-$U321,$var2+530, $var1+720-$U321,$var2+550,$BUUA,$BUZM,$BUUB) // "$var1+700-$U321" координаты поиска $var...+ не знаете значит вам пока не нужен удалить; 700 длина; $U321 отнемает то что нащитал; $BUUA,$BUZM,$BUUB цвет пикселя
$check = 1
print ("КУПИЛ ",$U321) // а удали, просто для наблюдения что купил и сколько подсчитал
WAITMS(RND(300,1000)) // просто пауза 0,3-1сек
m_move($var1+700-$U321+RND(-40,40),$var2+650+RND(-11,11)) // описание в самом верху
LCLICK($_xmouse,$_ymouse)
$U321 = $U321 + 199 // пересчитывает подсчет чтобы $U321 была больше на 199
WAITMS(100)
ELSE
IF_PIXEL_IN($var1+700-$U321,$var2+530, $var1+720-$U321,$var2+550,$BUPE,$BUL,$BUV,$BUPEV)
$check = 1
$U321 = $U321 + 199
print ("не нужно ",$U321) // а удали, просто для наблюдения что не купил и сколько подсчитал
WAITMS(100)
ELSE
LOGWRITE ("Не нашел") // а удали, просто если хочешь что что то не находит
WAIT(2)
END_IF
END_IF
END_CYC
WAITMS(rnd(300,1000))
GETSCREEN // 6 строк для проверки выскочило окно о не хватки денег, ен нужно удали
IF_PICTURE_IN ($var1+500,$var2+520, $var1+530,$var2+550, "Башня_\N_Ch_OK.bmp", -1, 100)
WAITMS(rnd(1000,1500))
m_move($_return1+3+RND(-30,30),$_return2+4+RND(-11,11))
LCLICK($_xmouse,$_ymouse)
END_IF
print ("счет ",$U321) // а удали, просто для наблюдения сколько подсчет
END_CYC
LOGWRITE ("Закончил ",$Kup) // это можно в конец скрипта чтобы видел сколько раз купил и пропустил, одна общая цифра
GETSCREEN
$hash = PXLCRC(10,10, 1000,1000) // Получаем контрольную сумму пикселов в области 10,10, 1000,1000
LOGWRITE ($hash)
HALT
GETSCREEN
IF(PXLCRC(10,10, 1000,1000) = 3171075084)
// Если верно
ELSE
// Если не верно
END_IF
$wx = 100 // Координата положения окна
$wy = 100
//=============================================
$time = $_time_t + 300 // Устанавливаем таймер на 5 минут
$timeF = $_time_t // Засекаем время с момента запуска
SETTHREAD (t1, 1) // Запускаем поток t1
THREAD(t1, 0)
IF($time < $_time_t) // Тут в потоке проверяем каждую секнуду не вышло ли время
BEEP(900,2000) // Если вышло сигналим
LOGWRITE ("Прошло с момента запуска: ", $_time_t-$timeF, " сек") // Выводим в лог время выполнения скрипта
HALT // И останавливаем выполнение
END_IF
WAITMS(1000)
END_THREAD
go: // Бесконечный цикл
$check = 0
WHILE($check = 0)
GETSCREEN
LOGWRITE ("2")
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "0_Firefox.bmp", -1, 100) // ищем картинку приложения, только не FlashPlayerP [32-bit mode] Процесс
$check = 1
$time = $_time_t + 300 // продлеваем таймер
LOGWRITE ("игра обнаружена")
$hwnd = HGET($_return1,$_return2) // определение номера окна
//HSET($hwnd,1) //+ привязка 1, 0 отвезать
// WNDSETINFO($hwnd, 0, 0, 1037, 730) //установка окна вписать нужные координаты и размер, минимальный размер окна
WNDSIZE ($hwnd, 1037, 851) //+ Задает размер окна
//WNDPOS ($hwnd, 655, 0) //+ Помещает окно на экране в указанные координаты Правый угол комп + на половина полоса прокрутки
WNDPOS ($hwnd, $wx, $wy) //+ Помещает окно на экране в указанные координаты
WNDGETINFO($hwnd, $var1, $var2, $var3, $var4) //+ определение существующих размеров и координат их можно и вписать в установку, тогда не придётся переписывать существующий скрипт
LOGWRITE ("hwnd ",$hwnd," стали координаты ",$var1,",", $var2," размер ", $var3,",", $var4) //+
WNDBUMP ($hwnd) //+Помещает окно на передний план
WAITMS(1000) // время на обновление
GETSCREEN
LOGWRITE ("3")
// IF(PXL($X, $Y) = 1653112) // Доделать проверка что вся область которая нужна видна //+ будете проверять лучше заместо ($X, $Y) пишите ( $var1+"координаторы Х", $var2+"координаторы Y") без ковычек
LOGWRITE ("игра установлена ")
WAITMS(100)
ELSE
LOGWRITE ("измените браузер или его панели")
WAITMS(500)
// END_IF
END_IF
END_CYC
GOTO(go) // Бесконечный цикл
$wx = 100 // Координата положения окна
$wy = 100
//=============================================
WNDPOS ($hwnd, $wx, $wy)
Если $W... ,не указывать, убрать в комментарий, пытался химикать немного. не прокатывает. Будет 0,0 или то что задал.$wx = -1 // WNDPOS работать не будет
$wy = 100
//=============================================
IF(($wx > -1)&($wy > -1)) // функция выполняется если оба параметра 0 или больше
WNDPOS ($hwnd, $wx, $wy)
END_IF
Заключи функцию в условие.Это я не увидел в притык спс
На карте от1 до 15(пака макс видел) сражений расположение неизвестно, хотя раз напал появляется значок
Цель; найти картинку у которой нет 2й картинки и кликнуть (выше она примерно на 30пх)
это ладно вроде знаю как в строитьесли не находит пусть поищет еще раз 5 + задержка сек 10, если все же не нашел спустя 5 раз пусть выполнит последние действие.
$Reid = 0
$Turnir = 0
WHILE($Turnir = 0)
$time = $_time_t + 300
$check = 0
WHILE($check = 0) // =========== Поиск
G_SCR
C_MOD // Рейд
IF_PICTURE_IN ($var1+623,$var2+476,$var1+648,$var2+501, "A_Hroniki\J_m6.bmp", -1, 100)
$check = 1
$Reid = 1
m_lclick($_return1-1+RND(-25,25), $_return2+6+RND(-10,10))
ELSE // Рейд нету
IF_PICTURE_IN ($var1+383,$var2+479,$var1+412,$var2+508, "A_Hroniki\G_T_T_y_m6.bmp", 0, 100) // Ы
$check = 1
m_move($_return1, $_return2) // удалить
// =======================
print("Начал поиск") // не нужно
// =========== поиск наподения
SCANPICTURE($ARR_SCAN,$var1,$var2,$var3,$var4, "A_Hroniki\G_T_T_v_m6.bmp", -1, 100) // $ARR_SCAN массив
print("Нашол ",ARRSIZE($ARR_SCAN)) // не нужно
$ARR_NUM = 0
WHILE($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1) //Увеличивает значение переменной
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
print($ARR_NUM/2,") Нашол X,Y ",$X-$var1,",",$Y-$var2) // не нужно
//m_move($X, $Y) // Клик
//WAITMS(100)
print("Ищю тут ",$X-60-$var1,",",$Y-5-$var2," - ",$X-45-$var1,",",$Y+10-$var2) // не нужно
IF_PICTURE_IN ($X+41,$Y-104,$X+56,$Y-89, "A_Hroniki\G_T_T_vv_m6.bmp", -1, 100) //Бой был
print("+++ 1 X=", $_return1-$var1, ", Y=", $_return2-$var2) // не нужно
IF($ARR_NUM = ARRSIZE($ARR_SCAN))
print()
print("Конец")
HALT
END_IF
ELSE
print("----")
m_lclick($X+62+RND(-25,25), $Y-70+RND(-25,25)) // н
$T_Vboi = 1
$ARR_NUM = ARRSIZE($ARR_SCAN) // Равно чтоб не искал
END_IF
print("Искал",$ARR_NUM/2)
END_CYC
UNDEFINE($ARR_SCAN) // =========== поиск нападения
END_IF
ELSE
WAITMS(1000)
END_IF
END_CYC // =========== Поиск
WAIT(1)
WHILE($T_Vboi = 1)
// код боя
END_CYC
WHILE($Reid = 1)
// код рейда
END_CYC
END_CYC
Логи нужны только для проверки почти всеG_SCR
C_MOD
GETSCREEN
SCANPICTURE($ARR_SCAN, 231,194, 1698,582, "Image.bmp", 0, 100)
$siz = ARRSIZE($ARR_SCAN)
IF($siz > 0)
FOR($a=0,$a<$siz,2) // создание массива $ARR для рандомизации индексов
ARRPUSH($ARR, $a)
END_CYC
$i = ARRSIZE($ARR)-1
WHILE($i>0) // Рандомизация массива $ARR
$j = RND(0,$i)
IF($i ! $j)
$tmp = $arr[$j]
$ARR[$j] = $ARR[$i]
$ARR[$i] = $tmp
END_IF
INC($i,-1)
END_CYC
FOR($ARR_NUM=0,$ARR_NUM<$siz/2)
$X = $ARR_SCAN[$ARR[$ARR_NUM]]
$Y = $ARR_SCAN[$ARR[$ARR_NUM]+1]
LCLICK($X,$Y)
WAITMS(100)
END_CYC
UNDEFINE($ARR_SCAN)
UNDEFINE($ARR)
END_IF
снимок и корекция я упростил да и легче читается кодИ ты правдо считал, что это не важно и можно часть кода не показывать?
#define G_SCR:GETSCREEN($var1,$var2,$var3,$var4) // снимок экрана
#define C_MOD:COLORMODE(6,$var1,$var2,$var3,$var4) // цветокоррекция; 8-2 7-8 6-64 5-512 4-4,096 3-32,768 2-262,144 1-2,097,152 0-16,777,216
Code: (clickermann) [Select]$X = $ARR_SCAN[$ARR[$ARR_NUM]]