Kibor |
Отправлено: 11 Июля, 2013 - 16:56:45
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
shumik пишет: я ничего от проги добиться немогу Щас вот просто двойной клик по иконке в координатах 100,50 нифига не получается тока курсор в то место ставиться
mousedbl(left, 100, 50);
sleep (25);
mousedbl(left, 100, 50);
sleep (25);
mouse(left, 100, 50);
sleep (25);
sleep(50); попробовал уже так
Естественно...
А если так?
mousedbl(LEFT, 100, 50);
sleep (2500);
mousedbl(LEFT, 100, 50);
sleep (2500);
mouse(LEFT, 100, 50);
sleep (2500);
sleep(50);
Где ты увидел в примере или справке что константа left пишется в маленьком регистре? Будьте внимательны и не будет таких проблем.
Тут даже проще, так как нет необходимости соблюдать установку пробелов, перевод строк и т.д. Даже имена переменных, функций и меток можно писать по русски. Но регистр и правила синтаксиса соблюдать надо.
Сложность языка заключается в изучение функций и их принимаемых параметров. Так же надо понять как работать с указателями на переменные, которых нет в других подобных программах и которые просто незаменимы в некоторых случаях и позволяют реализовать выполнение поставленной задачи не выполняемой в других программах автоматизации.
Но так благодаря этим функциям и указателям и существует возможность реализовать боты приведенные в качестве примеров...
shumik пишет: напиши простейший скрипт нахождения 1 изображения
Справка на эту тему. Там есть простейший пример и описание
Демострационный скрипт и описание |
|
|
Kibor |
Отправлено: 12 Июля, 2013 - 22:38:08
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
shumik пишет: Если можно простейший макрос из 2-3 строк на поиск изображения и клик по этим координатам. Чтоб без заморочек с активными окнами было
CODE:
//В этом примере мы допускаем что на экране может быть одно искомое изображение
int Image[26][20];//Масив для записи в него загружаемого рисунка. 26 это ширина изображения, 20 высота.
int PosX[1], PosY[1];//Масивы для записи в них найденых координат левого верхнего угла искомого изображения. Так как ищем изображение в одном экземпляре то объявляем масив на 1.
int k;//В эту переменную запишется возвращаемое значение функции поиска изображений. Она возвращает количество найденых изображений или код ошибки. Код ошибки отрицательное число. Подробнее в справке.
loadimage (#Image[0][0], "C:\Image.bmp");//Загружаем изображение в масив Image
//Ищем одну копию этого изображения на экране. В переменные PosX[0] PosY[0] запишутся координаты левого верхнего угла найденого изображения
k=findimage(1, #Image[0][0], 0, #PosX[0], #PosY[0], 0, 0, 1366, 768, -1);
if (k==1)//Если найдено одно изображение кликаем по нему
{//В фигурных кнопках выполняется код если условие if истина
mousedbl(LEFT, PosX[0]+13, PosY[0]+10);//Кликаем по середине изображения на экране. Клик смещается на половину размеров изображения
}
CODE:
//В этом примере мы допускаем что на экране может быть до 20 искомых изображений
int Image[26][20];//Масив для записи в него загружаемого рисунка. 26 это ширина изображения, 20 высота.
int PosX[20], PosY[20];//Масивы для записи в них найденых координат левого верхнего угла искомого изображения.
int k;//В эту переменную запишется возвращаемое значение функции поиска изображений. Она возвращает количество найденых изображений или код ошибки. Код ошибки отрицательное число. Подробнее в справке.
loadimage (#Image[0][0], "C:\Image.bmp");//Загружаем изображение в масив Image
//Ищем до 20 копий этого изображения на экране. В масивы переменных PosX PosY запишутся координаты левого верхнего угла найденых изображений
//В PosX[0], PosY[0] координаты первой картинка, в PosX[1], PosY[1] второй и т.д.
k=findimage(20, #Image[0][0], 0, #PosX[0], #PosY[0], 0, 0, 1366, 768, -1);//Ищем все копии этого изображения на экране.
if (k>0)//Если нашлось хоть одно изображение перебираем в цикле все координаты и кликаем по ним по очереди
{//В фигурных кнопках выполняется код если условие if истина
int n=0;
a: if (n<k)
{//В фигурных кнопках выполняется код если n<k
mousedbl(LEFT, PosX[n]+13, PosY[n]+10);//Кликаем по середине изображения на экране. Клик смещается на половину размеров изображения
n++;
goto a;
}
}
shumik пишет: непонимаю смысла всяких скобок, квадратных, фигурных, зачем точки с запятой в конце
В квадратных скобках указывается размерность масивов, переменные. в фигурные заключается код который должен выполниться после if else при соблюдение истинности условий: логика
Так же в фигурные скобки заключается код отдельной вызываемой функции: функции
Точка с запятой означает конец строки (команды). В отличие от подобных программ в Кибор возможно записать одну длинную команду в несколько строк:
st: if (findimage(-1, #Image[0][0], 16777215,
#x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind)<1)goto st;
Этот код равносилен:
st: if (findimage(-1, #Image[0][0], 16777215, #x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind)<1)goto st;
Или несколько коротких в одну:
s: if (a<5){a++; goto s;}
Этот код равносилен:
s:
if (a<5)
{
a++;
goto s;
}
shumik пишет: mousedbl(LEFT,PosX_0, PosY_0);
mousedbl(LEFT,PosX_0[0], PosY_0[0]); |
|
|
shumik |
Отправлено: 18 Июля, 2013 - 15:44:11
|
Прохожий
Покинул форум
Сообщений всего: 9
Дата рег-ции: Июль 2013
Репутация: 0
|
спасибо большое с этим разобрался вроде Теперь немогу
int Image_1[3][1];
int Image_0[3][1];
int PosX_0[1], PosY_0[1];
int PosA_0[1], PosS_0[1];
int k;
int f;
int n;
loadimage (#Image_0[0][0], "C:\Image_0.bmp"
loadimage (#Image_1[0][0], "C:\Image_1.bmp"
int color, xe, ye;
getdisplay(color, xe, ye);
n:
k=findimage(1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, xe, ye, -1);
if (k==1);
{
mousedbl(LEFT,PosX_0[0], PosY_0[0]) ;
sleep(900);
goto n ;
}
f=findimage(1, #Image_1[0][0], 255, #PosA_0[0], #PosS_0[0], 0, 0, xe, ye, -1);
if (f==1);
{
mousedbl(LEFT,PosA_0[0], PosS_0[0]);
sleep(900);
goto n ;
}
sleep(900);
goto n;
(Добавление)
немогу разобраться как с двумя и более разными изображениями разбираться? |
|
|
Kibor |
Отправлено: 18 Июля, 2013 - 20:54:20
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
shumik пишет: if (k==1);
{
shumik пишет: if (f==1);
{
Ошибка. После if (k==1) и if (f==1) не надо ставить точку с запятой. Логические операции
shumik пишет: int Image_1[3][1];
int Image_0[3][1];
Рисунки имеют размер 3 на 1 пикселей?
shumik пишет: int n;
shumik пишет: n:
shumik пишет: goto n ;
Зачем тут объявлена переменная n? Тем более что такое же имя имеет метка перехода что не допускается. Метки не могут иметь одинаковые имена с переменными.
Исправить эти ошибки и должно работать.
Код:
CODE:
int Image_1[3][1];
int Image_0[3][1];
int PosX_0[1], PosY_0[1];
int PosA_0[1], PosS_0[1];
int k;
int f;
loadimage (#Image_0[0][0], "C:\Image_0.bmp");
loadimage (#Image_1[0][0], "C:\Image_1.bmp");
int color, xe, ye;
getdisplay(color, xe, ye);
n:
k=findimage(1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, xe, ye, -1);
if (k==1)
{
mousedbl(LEFT,PosX_0[0], PosY_0[0]) ;
sleep(900);
goto n ;
}
f=findimage(1, #Image_1[0][0], 255, #PosA_0[0], #PosS_0[0], 0, 0, xe, ye, -1);
if (f==1)
{
mousedbl(LEFT,PosA_0[0], PosS_0[0]);
sleep(900);
goto n ;
}
sleep(900);
goto n;
|
|
|
Kibor |
Отправлено: 25 Июля, 2013 - 18:16:36
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
sicosha пишет: Как мне реализовать печать в блокнот, того что посчитано в боте?
Преобразовать число в string: как преобразовать int или double к string
Затем:
Можно так. Дописывает текст:
CODE:win w=window ("Безымянный — Блокнот", "Notepad", -1);//Указатель блокнот
int result=12345;//Число которое надо напечатать
key("Результат = "+format(result),1, 1, w);
Можно в свернутое окно блокнота. Работает только со свернутым окном и меняет весь текст:
CODE:win w=window (-1, "Edit", window ("Безымянный — Блокнот", "Notepad", -1));//Указатель на поле для ввода текста блокнота
int result=123456;//Число которое надо напечатать
sendtext("Результат = "+format(result), w);
Можно выбрать другой способ тут:Нажатие кнопок клавиатуры |
|
|
|