1
Использование / Re: Помощь по синстаксису
« on: April 24, 2015, 09:52:22 PM »
Ребят, помогите пожалуйста. Реал не понимаю в чем дело)
Добавлена тема оформления "Clickermann" для кода с подсветкой синтаксиса. Выбирается из выпадающего списка "Код" (рядом с "цвет", "размер" и "шрифт") в режиме редактирования поста. Либо просто BB-тегом "code=clickermann"
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.
Да просто графика может меняться! Сглаживание шрифтов там всякое и тд.Сделал новый скрин. Сделал совпадения меньше, и как было так и осталось. Это магия(Code: (clickermann) [Select]// Отдельным скриптом получаешь скорректированный снимок
Из скриншота вырезаешь твою "отправить2.bmp"
GETSCREEN
COLORMODE(6) // уровень коррекции 6
SCREENSHOT
HALTCode: (clickermann) [Select]GETSCREEN
COLORMODE(6) // такую же коррекцию указываешь в своем скрипте.
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 80) // а здесь мы снизим процент совпадения до 80% может и ниже
На самом деле тут ничего сложного.
Это относится только к отправить2.bmp!ну блин....почему же часть кода работает? Картинку находит....извини может я туплю но это ппц как мне не понятно. Давай покажу в скайпе всё.Code: (clickermann) [Select]SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
LOGWRITE ("Найдено картинок: ", ARRSIZE($ARR_SCAN)/2)
Функция SCANPICTURE ищет все картинки отправить2.bmp на экране и складывает координаты в массив $ARR_SCAN. Две строки массива это 1 координата. Я просто написал функцию определения количества строк в массиве и поделить это на два ARRSIZE($ARR_SCAN)/2 таким образом мы можем узнать сколько найдено картинок "отправить2.bmp"
Как с тобой трудно... Разберись уже с картинками!
Ну судя по логу "отправить2.bmp" не найдена, вследствие чего $ARR_SCAN пуст а значит и цикл выполняться не будет! С цифрами лога ты конечно переборщилвот лог:
Вот я добавил строку лога которая сообщает сколько найдено картинок. Уверен что у тебя там 0Code: (clickermann) [Select]// вибор ника
LCLICK(1245,169)
WAITMS(500)
LCLICK(1245,169)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(1118,169)
KEYUP(#SHIFT)
WAITMS(50)
//вырезание ника
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#X)
WAITMS (50)
KEYUP (#X)
KEYUP (#CTRL)
WAITMS (50)
KEYPRESS(#DELETE)
//выделениеника в строке поиска
LCLICK(610,479)
WAITMS(500)
LCLICK(610,479)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(242,478)
KEYUP(#SHIFT)
WAITMS(50)
//удаление и вставка нового ника
KEYPRESS(#DELETE)
WAITMS (50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (50)
//поиск и нажатия на искать
GETSCREEN
IF_PICTURE_IN (231,488, 440,740, "искать.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
LOGWRITE ("0")
LCLICK($_return1, $_return2)
WAITMS(100)
else
LOGWRITE ("1")
WAITMS(50)
//проверка на конверт и поиск кнопки отправить
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
LOGWRITE ("Найдено картинок: ", ARRSIZE($ARR_SCAN)/2)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
LOGWRITE ("2")
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
WAITMS(1)
LOGWRITE ("err")
ELSE
$ARR_NUM = 99999 // сброс цикла
LCLICK($X, $Y)
WAITMS(1000)
LOGWRITE ("3")
END_IF
END_CYC
UNDEFINE($ARR_SCAN)
END_IF
Заметил еще одно, отсутствует UNDEFINE($ARR_SCAN) без этого на повторном проходе цикл снова отработает по старым координатам.Так в чем проблема? Этот код когда то вы мне и написали. И почему по отдельности работает а вместе нет? Может быть я покажу кому то в скайпе или ТВ в чем проблема?Code: (clickermann) [Select]// вибор ника
LCLICK(1245,169)
WAITMS(500)
LCLICK(1245,169)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(1118,169)
KEYUP(#SHIFT)
WAITMS(50)
//вырезание ника
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#X)
WAITMS (50)
KEYUP (#X)
KEYUP (#CTRL)
WAITMS (50)
KEYPRESS(#DELETE)
//выделениеника в строке поиска
LCLICK(610,479)
WAITMS(500)
LCLICK(610,479)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(242,478)
KEYUP(#SHIFT)
WAITMS(50)
//удаление и вставка нового ника
KEYPRESS(#DELETE)
WAITMS (50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (50)
//поиск и нажатия на искать
GETSCREEN
IF_PICTURE_IN (231,488, 440,740, "искать.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
LOGWRITE ("Найден крестик")
LCLICK($_return1, $_return2)
WAITMS(100)
else
WAITMS(50)
LOGWRITE ("проверка на конверт и поиск кнопки отправить")
//проверка на конверт и поиск кнопки отправить
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
$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)
IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
WAITMS(1)
ELSE
LOGWRITE ("проверка на конверт и поиск кнопки отправить")
$ARR_NUM = 99999 // сброс цикла
LCLICK($X, $Y)
WAITMS(1000)
END_IF
END_CYC
UNDEFINE($ARR_SCAN) // очищаем массив координат
END_IF
Еще у тебя написано "если есть конверт" на самом деле клик происходит если пиксель 16514039 не найденCode: (clickermann) [Select]IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
Может быть тут корень проблемы?
WAITMS(1) // если найден то ничего
ELSE
// если не найден то
LOGWRITE ("проверка на конверт и поиск кнопки отправить")
$ARR_NUM = 99999 // сброс цикла
LCLICK($X, $Y)
WAITMS(1000)
END_IF
Как ты определил что находит?если брать с всего кода только
Разберись с алгоритмомя разобрался, всё понятно как работает. Вот эта часть что ты скинул работает если без верхней части. В чем проблема?Code: (clickermann) [Select]//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
LCLICK($_return1, $_return2) // сработает если крестик.bmp найден
WAITMS(100)
else
// сработает если крестик.bmp не найден
WAITMS(50)
//проверка на конверт и поиск кнопки отправить
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
$ARR_NUM = 0
WHILE($ARR_NUM < ARRSIZE($ARR_SCAN)) // цикл сработает если отправить2.bmp найдено
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
WAITMS(1)
ELSE
$ARR_NUM = 99999 // сброс цикла
LCLICK($X, $Y)
WAITMS(1000)
END_IF
END_CYC // конец цикла
END_IF // конец крестик.bmp
Там у тебя в конце ошибки с завершенияминачиная с 48 строки не работает, по отдельности до 48 и после всё работает, вместе почему то нет.Code: (clickermann) [Select]// вибор ника
LCLICK(1245,169)
WAITMS(500)
LCLICK(1245,169)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(1118,169)
KEYUP(#SHIFT)
WAITMS(50)
//вырезание ника
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#X)
WAITMS (50)
KEYUP (#X)
KEYUP (#CTRL)
WAITMS (50)
KEYPRESS(#DELETE)
//выделениеника в строке поиска
LCLICK(610,479)
WAITMS(500)
LCLICK(610,479)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(242,478)
KEYUP(#SHIFT)
WAITMS(50)
//удаление и вставка нового ника
KEYPRESS(#DELETE)
WAITMS (50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (50)
//поиск и нажатия на искать
GETSCREEN
IF_PICTURE_IN (231,488, 440,740, "искать.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
else
WAITMS(50)
//проверка на конверт и поиск кнопки отправить
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
$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)
IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
WAITMS(1)
ELSE
$ARR_NUM = 99999 // сброс цикла
LCLICK($X, $Y)
WAITMS(1000)
END_IF
END_CYC
END_IF
// вибор ника
LCLICK(1245,169)
WAITMS(500)
LCLICK(1245,169)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(1118,169)
KEYUP(#SHIFT)
WAITMS(50)
//вырезание ника
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#X)
WAITMS (50)
KEYUP (#X)
KEYUP (#CTRL)
WAITMS (50)
KEYPRESS(#DELETE)
//выделениеника в строке поиска
LCLICK(610,479)
WAITMS(500)
LCLICK(610,479)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(242,478)
KEYUP(#SHIFT)
WAITMS(50)
//удаление и вставка нового ника
KEYPRESS(#DELETE)
WAITMS (50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (50)
//поиск и нажатия на искать
GETSCREEN
IF_PICTURE_IN (231,488, 440,740, "искать.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
else
WAITMS(50)
//проверка на конверт и поиск кнопки отправить
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
$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)
IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
WAITMS(1)
ELSE
$check = 1
$ARR_NUM = 99999 // сброс цикла
LCLICK($X, $Y)
WAITMS(1000)
END_IF
END_IF
спасибо за ответы. Браться будут по 1 строке из файла ники?Code: (clickermann) [Select]GETSCREEN
SCREENSHOTEX(300,300, 600,600, "Image_", 0) // сделать скриншот в BMP
HALT
GETSCREEN
SCREENSHOTEX(300,300, 600,600, "Image_", 1) // сделать скриншот в JPG
HALT
Как сказал Джонни для этого нужно переписать движок под современную IDE. http://crapware.aidf.org/forum/index.php?topic=1493.msg8064#msg8064Яснопонятно. Спасибо)
Наверное это будет 5.0