GreatProgram |
Отправлено: 22 Ноября, 2023 - 00:57:32
|
Участник
Покинул форум
Сообщений всего: 61
Дата рег-ции: Сент. 2022
Репутация: 2
|
Как не странно, но теперь мне этот функционал понадобился для щелчка мыши от найденной картинки, но почему то не работает.
CODE:mouse(LEFT, PosX[0], PosY[0], 1, SCREEN[0][0]);
Подскажите что тут не верно
перед этим идет такой код:
CODE:int PosX,PosY;
int var[1][50][50];
int SCREEN[1366][768];
for (int n=0; n<1; n++)loadimage (#var[n][0][0], "C:\var"+format(n)+".bmp");
screen (#SCREEN[0][0], 375, 280, 1098, 360, -1);
for (n=0; n<1; n++)
{
if (findimage(1, #var[n][0][0], -1, #PosX, #PosY, 0, 0, 723, 80, 5, 5, 5, 5, 5, 5, 97, 1, #SCREEN[0][0])==1)
{
if (n==0)mouse(LEFT, PosX[0]+50, PosY[0]+(-140), 1, SCREEN[0][0]);
}
}
В общем картинка находится я до этого проверял, но увы клики мыши не работают пробовал менять указатель SCREEN[0][0], на такие варианты: #SCREEN[0][0], 1 , -1, wind.
(Этот код у меня вставлен в блок code в визуальном редакторе... программа выполняется с привязкой по выбору. Но W_Kib привязан на активное окно игры, может в этом и кроется загвоздка). Помогите разобраться. |
|
|
Geoteh |
Отправлено: 22 Ноября, 2023 - 16:31:23
|
Участник
Покинул форум
Сообщений всего: 62
Дата рег-ции: Авг. 2021
Репутация: 0
|
у меня похожий вопрос ) мне нужно найти 100-200 картинок в определённой зоне (если есть то по истине иду, если нет по лож)
делаю скрин в блоке кода для виз. редактора таким образом потому что скрипт работает по контролу CODE:int PosX, PosY;
int ZonaX1=100, ZonaY1=500, ZonaX2=170, ZonaY2=570;
int SCREEN[70][70];
screen (#SCREEN[0][0], ZonaX1, ZonaY1, ZonaX2, ZonaY2, -1);
далее перехожу в цикл или функцию и прохожусь по блокам Findimage
теперь по поводу блоков Findimage, (время ожидания и пауза до) их оставлять с 0 ? или делать паузы 1-2 миллисекунд ?
и теперь вопрос еще, хотелось бы сделать так чтоб с каждой найденной картинкой давать свойства выбора к примеру это 1 из 100 персонажей что нашел, в диалоге поставить галку или тип того что с ним делать нападать или пропустить, проблема в том что диалог может 30 (CHECK) установить есть ли альтернатива этому ?(Отредактировано автором: 22 Ноября, 2023 - 16:32:05) |
|
|
Zireael |
Отправлено: 23 Ноября, 2023 - 00:59:23
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: теперь по поводу блоков Findimage, (время ожидания и пауза до) их оставлять с 0 ? или делать паузы 1-2 миллисекунд ?
Если нужно быстро найти, то ставьте 0. Поиск 100 картинок с паузой даже в 1 мсек сильно увеличит время поиска, т. к. в винде нет паузы в 1 мсек.
CODE:int t = gettime();
for(int i=0; i<100; i++)sleep(1);
messagebox(gettime()-t);
Цитата: проблема в том что диалог может 30 (CHECK) установить
500 галок:
CODE:#define WS_VISIBLE 0x10000000
#define WS_CHILD 0x40000000
#define BS_AUTOCHECKBOX 0x00000003
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
int check0[999];
createdialog(0);
showdialog(0, "Диалог0", 10, 10, 1050, 1050, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
for(int i=0; i<10; i++)
{
for(int j=0; j<50; j++)check0[i*50+j] = CreateWindow(0, "BUTTON", "Check"+format(i*50+j), BS_AUTOCHECKBOX | WS_VISIBLE | WS_CHILD, 10 + i*100, 10+j*20, 85, 18, gethwnd(0), 0, 0, 0);
}
} |
|
|
GreatProgram |
Отправлено: 20 Мая, 2024 - 00:02:43
|
Участник
Покинул форум
Сообщений всего: 61
Дата рег-ции: Сент. 2022
Репутация: 2
|
(Разрешение для теста 1366x768)
Подскажите в чем мой недочет?
Counter возвращает всегда -1.
из справки: В случае ошибки возвращает:
-1 размер массива в который записываются X координаты меньше найденных изображений
Если изображение одно — возвращает 1...
CODE:pause(1000);
int Result[2];
int X,Y,r=20,Counter;
int Img[2][15][15];
int Screen[1366][768];
for (int i=0; i<2; i++)loadimage (#Img[i][0][0], "C:\exmp\Img"+format(i)+".bmp");
screen (#Screen[0][0], 0, 0, 1366, 768, -1);
for (i=0; i<2; i++)
{
Counter=findimage(-1,#Img[i][0][0],-1,#X,#Y,0,0,1366,768,r,r,r,r,r,r,65,1,#Screen[0][0]);
messagebox("Counter: "+format(Counter));
}
Ссылка на изображения
(Добавление)
Проблему решил (Отобразить)pause(2000);
int Result[2];
int X[4],Y[4],r=20,Counter;
int Img[2][15][15];
int Screen[1366][768];
for (int i=0; i<2; i++)loadimage (#Img[i][0][0], "C:\exmp\Img"+format(i)+".bmp" );
screen (#Screen[0][0], 0, 0, 1366, 768, -1);
for (i=0; i<2; i++)
{
Counter=findimage(-1,#Img[i][0][0],-1,#X[i],#Y[i],0,0,1366,768,r,r,r,r,r,r,65,1,#Screen[0][0]);
messagebox("Counter: "+format(Counter));
} |
|
|
|