Budni |
Отправлено: 25 Июня, 2019 - 03:21:18
|
Специалист
Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018
Репутация: 2
|
Limbaugh , Конечно может дело не в этом а может быть такое, что просто вывод сообщения происходит за пределы экрана из за того, что разрешение разное?)
Скомпилируйте другу отдельно текст аут от программы) если включение Aero не помогло)
Так же можно выводить по центру экрана в независимости от разрешения)
Вывод textout по центру экрана (Отобразить)int col, xek, yek;
getdisplay(col, xek, yek);
xek=xek/2; yek=yek/2;
textbkcolor (0,255);
textout(0, xek, yek, "Скрипт включен\выключен Ctrl + Z" , 0);
Ну а по поводу почему остальное не работает ответе на вопросы, что уже были в теме, многое не ясно. Ключевое Привязка идет к окну или экрану а так же разреженность. |
|
|
Limbaugh |
Отправлено: 25 Июня, 2019 - 19:43:10
|
Участник
Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2019
Репутация: 0
|
Budni пишет: Limbaugh , Конечно может дело не в этом а может быть такое, что просто вывод сообщения происходит за пределы экрана из за того, что разрешение разное?)
Скомпилируйте другу отдельно текст аут от программы) если включение Aero не помогло)
Так же можно выводить по центру экрана в независимости от разрешения)
Вывод textout по центру экрана (Отобразить)int col, xek, yek;
getdisplay(col, xek, yek);
xek=xek/2; yek=yek/2;
textbkcolor (0,255);
textout(0, xek, yek, "Скрипт включен\выключен Ctrl + Z" , 0);
Ну а по поводу почему остальное не работает ответе на вопросы, что уже были в теме, многое не ясно. Ключевое Привязка идет к окну или экрану а так же разреженность.
У него разрешение 1600x900, как Я ему сказал поставить, в оконном режиме и бота создавал под это разрешение |
|
|
Almighty |
Отправлено: 30 Июня, 2019 - 17:23:37
|
Участник
Покинул форум
Сообщений всего: 64
Дата рег-ции: Июнь 2018
Откуда: Kyiv
Репутация: 2
|
Limbaugh пишет: Budni пишет: Limbaugh , Конечно может дело не в этом а может быть такое, что просто вывод сообщения происходит за пределы экрана из за того, что разрешение разное?)
Скомпилируйте другу отдельно текст аут от программы) если включение Aero не помогло)
Так же можно выводить по центру экрана в независимости от разрешения)
Вывод textout по центру экрана (Отобразить)int col, xek, yek;
getdisplay(col, xek, yek);
xek=xek/2; yek=yek/2;
textbkcolor (0,255);
textout(0, xek, yek, "Скрипт включен\выключен Ctrl + Z" , 0);
Ну а по поводу почему остальное не работает ответе на вопросы, что уже были в теме, многое не ясно. Ключевое Привязка идет к окну или экрану а так же разреженность.
У него разрешение 1600x900, как Я ему сказал поставить, в оконном режиме и бота создавал под это разрешение
Может не помочь.
Ситуация:
Делаю бота на Блюстакс, тестирую на 4 пк. На 1 только работает(на котором создавал), а на остальных - нет.
Проверил размер окна, которое создается в блюстаксе - на каждом пк была розбежность в 1-2 пикселя. А у меня бот заточен под поиск через изображение.
Решение: в бота встраивать автоизминение окна блюстакс, размеры под себя смените
CODE:int ttX, ttY;
getmouse(ttX, ttY);
win wO=getwindow(0, ttX, ttY);
//messagebox (wO.name);
if (wO.widthclient!=757 || wO.heightclient!=512)
{
wO.widthclient=757;
wO.heightclient=512;
moveclient(wO);
pause(2000);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}
Так же установил розбежность в в цветах при поиске изображения до 60. |
|
|
Limbaugh |
Отправлено: 02 Июля, 2019 - 13:17:59
|
Участник
Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2019
Репутация: 0
|
Almighty пишет: Limbaugh пишет: Budni пишет: Limbaugh , Конечно может дело не в этом а может быть такое, что просто вывод сообщения происходит за пределы экрана из за того, что разрешение разное?)
Скомпилируйте другу отдельно текст аут от программы) если включение Aero не помогло)
Так же можно выводить по центру экрана в независимости от разрешения)
Вывод textout по центру экрана (Отобразить)int col, xek, yek;
getdisplay(col, xek, yek);
xek=xek/2; yek=yek/2;
textbkcolor (0,255);
textout(0, xek, yek, "Скрипт включен\выключен Ctrl + Z" , 0);
Ну а по поводу почему остальное не работает ответе на вопросы, что уже были в теме, многое не ясно. Ключевое Привязка идет к окну или экрану а так же разреженность.
У него разрешение 1600x900, как Я ему сказал поставить, в оконном режиме и бота создавал под это разрешение
Может не помочь.
Ситуация:
Делаю бота на Блюстакс, тестирую на 4 пк. На 1 только работает(на котором создавал), а на остальных - нет.
Проверил размер окна, которое создается в блюстаксе - на каждом пк была розбежность в 1-2 пикселя. А у меня бот заточен под поиск через изображение.
Решение: в бота встраивать автоизминение окна блюстакс, размеры под себя смените
CODE:int ttX, ttY;
getmouse(ttX, ttY);
win wO=getwindow(0, ttX, ttY);
//messagebox (wO.name);
if (wO.widthclient!=757 || wO.heightclient!=512)
{
wO.widthclient=757;
wO.heightclient=512;
moveclient(wO);
pause(2000);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}
Так же установил розбежность в в цветах при поиске изображения до 60.
Спасибо, проверю на днях )
(Добавление)
Привязка к экрану у меня, у самого разрешение экрана 1920x1080, в игре, в оконном режиме 1600x900, под это искал координаты и тд |
|
|
Dantes3000 |
Отправлено: 02 Июля, 2019 - 13:34:19
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
Limbaugh пишет: Привязка к экрану у меня, у самого разрешение экрана 1920x1080, в игре, в оконном режиме 1600x900, под это искал координаты и тд
Лучше делать вот так, тогда не важно будет какой виндовс и какие размеры рамок у окон
CODE:win w;
start_();
function start_()
{
int x,y;
textout(0,0,0, "Нажми Ё над окном игры для привязки", 2);
while(getkeystate(192)==0) sleep(10);
while(getkeystate(192)==1) sleep(10);
textout(0,-100,0, "", 2);
getmouse(x,y);
w=getwindow(1, x,y);
w.leftclient=0; //расположение на экране
w.topclient=0; //расположение на экране
w.widthclient=1600;//размер окна
w.heightclient=900; //размер окна
moveclient(w);
} |
|
|
Limbaugh |
Отправлено: 02 Июля, 2019 - 15:30:42
|
Участник
Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2019
Репутация: 0
|
Dantes3000 пишет: Limbaugh пишет: Привязка к экрану у меня, у самого разрешение экрана 1920x1080, в игре, в оконном режиме 1600x900, под это искал координаты и тд
Лучше делать вот так, тогда не важно будет какой виндовс и какие размеры рамок у окон
CODE:win w;
start_();
function start_()
{
int x,y;
textout(0,0,0, "Нажми Ё над окном игры для привязки", 2);
while(getkeystate(192)==0) sleep(10);
while(getkeystate(192)==1) sleep(10);
textout(0,-100,0, "", 2);
getmouse(x,y);
w=getwindow(1, x,y);
w.leftclient=0; //расположение на экране
w.topclient=0; //расположение на экране
w.widthclient=1600;//размер окна
w.heightclient=900; //размер окна
moveclient(w);
}
Прям так и вставить ничего не меняя? |
|
|
Limbaugh |
Отправлено: 02 Июля, 2019 - 15:58:23
|
Участник
Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2019
Репутация: 0
|
Dantes3000 пишет: Limbaugh , нужно вызвать функцию start_() в начале скрипта и обьявить переменную win w;
Если в визуальном редакторе, то там чуть иначе
Code (Отобразить)CODE:int color_text_KIB_5[1]={16777215} // цвет текста
int coord[4]={750, 787, 1171, 839} // зона поиска
int deltaX=46; // расстояние между стрелками
int pause_=5; // пауза между поиском стрелок
loadsymbolbase("C:\Users\Limbaugh\Desktop\Au2RLBOT\Arrows.sib"); // база для readtext
int color_red=2302945; // цвет красной стрелки
int color_red_min=80; // сколько нужно минимум пикселей найти
int r=10; // разбежность
int fcolorX[999], fcolorY[999]; // массивы для findcolor
win w;
start_();
function start_()
{
int x,y;
textout(0,0,0, "Нажми Ё над окном игры для привязки", 2);
while(getkeystate(192)==0) sleep(10);
while(getkeystate(192)==1) sleep(10);
textout(0,-100,0, "", 2);
getmouse(x,y);
w=getwindow(1, x,y);
w.leftclient=0; //расположение на экране
w.topclient=0; //расположение на экране
w.widthclient=1600;//размер окна
w.heightclient=900; //размер окна
moveclient(w);
}
int script=0, i, posX;
char text_KIB; // сюда распознаётся текст, 1 символ
enabletimer(0);
loop()
{
textbkcolor (65280, 255);
textout(0, 300, 300, "Запуск/остановка скрипта Ctrl+Z", 1);
while(script)
{
textbkcolor (255, 65280);
textout(0, 300, 300, "Скрипт работает", 1);
// ожидание появления стрелок
loop()
{
if(readtext(RU, #text_KIB, 8, 1, -1, -1, -1, #color_text_KIB_5[0], 1, 5, -1, coord[0], coord[1], coord[2], coord[3], -1))
{
if(symbolcorrect(0)>0.7)
{
posX=coord[0]+symbolxpos(0)-10; break;
}
}
sleep(10);
}
/////////
i=0;
while(posX < coord[2]) // пока не проверили все стрелки
{
if(readtext(RU, #text_KIB, 8, 1, -1, -1, -1, #color_text_KIB_5[0], 1, 5, -1, posX, coord[1], posX+deltaX, coord[3], -1))
{
func(text_KIB, i); // вызов функции, которая проверяет корректность символа и нажимает клавиши
posX=posX+deltaX; i++; // смещаем область поиска для readtext
sleep(pause_);
}
else break; // если все стрелки нажаты
}
posX=coord[0];
sleep(10);
}
sleep(10);
}
function func(char c, int number)
{
if(symbolcorrect(0)>0.7) // если корректность символа больше 0.7
{
// поиск красных пикселей
int count_red=findcolor(sizearray(fcolorX), #fcolorX[0],#fcolorY[0], posX, coord[1], posX+deltaX, coord[3], color_red, r,r,r,r,r,r, -1);
if(count_red>color_red_min) // если найдено нужное количество красных пикселей
{
textbkcolor (65280, 255);
textout(9, 300, 380, "Красная стрелка", 1);
textbkcolor (255, 65279);
if(c=='п'){textout(10, 300, 400, format(number)+" Влево", 1); key(37); return;}
if(c=='л'){textout(10, 300, 400, format(number)+" Вправо", 1); key(39); return;}
if(c=='н'){textout(10, 300, 400, format(number)+" Вверх", 1); key(38); return;}
if(c=='в'){textout(10, 300, 400, format(number)+" Вниз", 1); key(40); return;}
}
else
{
textbkcolor (255, 16000000);
textout(9, 300, 380, "Синяя стрелка", 1);
textbkcolor (255, 65279);
if(c=='п'){textout(10, 300, 400, format(number)+" Вправо", 1); key(39); return;}
if(c=='л'){textout(10, 300, 400, format(number)+" Влево", 1); key(37); return;}
if(c=='н'){textout(10, 300, 400, format(number)+" Вниз", 1); key(40); return;}
if(c=='в'){textout(10, 300, 400, format(number)+" Вверх", 1); key(38); return;}
}
}
else
{
textbkcolor (255, 0);
textout(9, 300, 380, "Символ не распознан или некорректен", 1);
}
}
CREATE_TIMER(0, 30)
{
if(getkeystate(CONTROL) && getkeystate(90)) // Ctrl+Z включает/выключает
{
while(getkeystate(CONTROL) && getkeystate(90))sleep(10);
if(script)script=0;
else script=1;
}
}
Я сделал вот так, но почему то все равно бот не работает |
|
|
|