Kibor |
Отправлено: 21 Января, 2014 - 01:31:00
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
loadimage при загрузке изображения в массив загружает полностью все изображение, а неиспользуемую память, которая остается если изображение меньше массива инициализирует -1.
Можно сколько угодно раз перегружать в массив изображения. Главное что бы они не были по размеру больше массива.
zaxlex пишет: то есть findimage будет работать неверно? Все будет верно.
Сколько у Вас изображений надо грузить? Вообще то я не вижу смысла постоянно перед поиском загружать в один и тот же массив разные изображения. loadimage надо вызывать один раз и хранить картинки в разных массивах.
Если проблема в использование своей функции как у Вас (то есть хотите сделать одну функцию которую будете вызывать для разных изображений)
CODE:int king[400][400];
int x,y;
string s2="C:\Images\chekit.bmp";
n4: if (proverka(s2)==0) {sleep(50);goto n4;}
key("ugcl");
key(13);
function proverka (string f1)
{
loadimage(#king[0][0],f1);
sleep(4000);
if (findimage(1, #king[0][0], 255, #x, #y, 0, 0, 1920, 1080, -1)==0)
{
return 0;
}
else
{
return 1;
}
}
то используйте массивы изображений. Ну и выставьте int king[400][400]; по максимальному. Если он меньше 400 400, то уменьшите его.
CODE:int king[10][100][200];
int x,y;
loadimage(#king[0][0][0],"C:\Images\chekit.bmp");
loadimage(#king[1][0][0],"C:\Images\chekit1.bmp");
loadimage(#king[2][0][0],"C:\Images\chekit2.bmp");
//..................................................
n4: if (proverka(0)==0) {sleep(50);goto n4;}
key("qqqqqq");
n5: if (proverka(1)==0) {sleep(50);goto n5;}
key("wwwwwwwwwww");
n2: if (proverka(2)==0) {sleep(50);goto n2;}
key("rrrrrrrrrrr");
//..............................
function proverka (int t)
{
return findimage(1, #king[t][0][0], 255, #x, #y, 0, 0, 1920, 1080, -1);
} |
|
|
zaxlex |
Отправлено: 22 Января, 2014 - 18:42:41
|
Участник
Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2014
Репутация: 0
|
Здравствуйте, такая проблема - не записывается с буфера обмена в переменную типа string, просто выводит пустой messagebox.
CODE:sendlanguage("00000409", 0);
sleep(1000);
start("C:\Program Files\Google\Chrome\Application\chrome.exe");
if (f2=="C:\Images\36.bmp") {klikleft(s4); klikleft(k41);}
n5: if (proverka(s1)==1) {sendlanguage("00000409", 0);key("genword.ru/generator/nicknames");}
else {goto n5;}
key(13);
n4: if (proverka(k39)==1) {klikleft(k39);}
else {goto n4;}
klikleft(k40);
sleep(5000);
mousetransfer(LEFT,x-170,y+75,x+70,y+75,0.02);
keydown(17);
key('c');
keyup(17);
klikleft(s3);
writeclipboard(s);
messagebox(s); |
|
|
Kibor |
Отправлено: 22 Января, 2014 - 20:47:23
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
zaxlex пишет: Здравствуйте, такая проблема - не записывается с буфера обмена в переменную типа string, просто выводит пустой messagebox.
zaxlex пишет: writeclipboard(s);
messagebox(s);
?
Работа с буфером обмена
Цитата: writeclipboard - запись в буфер обмена.
readclipboard - чтение с буфера обмена.
http://kibor-bot.com/forum/topic...41471#1390241471
Соседняя тема. |
|
|
Kibor |
Отправлено: 25 Января, 2014 - 06:40:58
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
zaxlex пишет: по поводу второй версии программы? может код есть?
Если программа вылетела, то вторая копия Кибор отследит это так:
CODE://Запускать после первой
a: if (window("Название окна первой программы")!=0){sleep(200); goto a;}//Указатель на первую
//На этот код попадет если программа первая вылетела
messagebox ("");
Для простоты можно в основную программу вставить в старт кода
CODE:rename("блаблабала");
После запуска скрипта окно Кибор будет иметь это название.
Во вторую которая следит
CODE://Запускать после первой
a: if (window("блаблабала")!=0){sleep(200); goto a;}//Указатель на первую
//На этот код попадет если программа первая вылетела
messagebox ("");
zaxlex пишет: 2-а залага программы, первая - это действительно залаг самой программы
Подробнее? Если баг - исправлю. Но я не встречал таких багов... Обычно я их быстро исправляю.
zaxlex пишет: Виснет - то есть происходит зацикливание в функции klikleft. Было бы неплохо добавить к этой функции условие при котором запускался таймер и если он перевысил 2-е муниты например, то происходил переход по указателю к перезагрузке виртуалки.
Ну этот таймер есть почти в каждом скрипте...
CODE:function klikleft()
{
int time=gettime();
qwe: if (gettime()-time>12000)
{
//Перегрузи
return;
}
//код
goto qwe;
}
|
|
|
zaxlex |
Отправлено: 03 Февраля, 2014 - 07:04:30
|
Участник
Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2014
Репутация: 0
|
Программа зависла только раз и больше не повторялось. Сейчас такая ситуация - я переустановил windows и забыл перенести папку с изображениями.Программа у меня работает из под виртуалки, которую я также переустановил. Первая проблема возникла на момент загрузки кибора. http(5) error installation abort. Такая проблема была уже на форуме и вы давали прямую ссылку на кибор - я загрузил по этой ссылке кибор и удачно установил. Кибор работает в windows xp в shadow mode при запущенном shadow defendere. Запускной файл был создан и помещен в автозагрузку. Я столкнулся с совершенно непонятной проблемой. Полностью отредактировав до рабочего состояния я перенес все файлы на флэшку. конец работы программы у меня - перезагрузка виртуалки - т.к она находится в shadow mode - происходит откат изменений, созданных кибором. И при запуске виртуалки происходит опять запуск скрипта и он начинает работать до определенного изображения, которое он не находит,хотя на экране оно присутствует.Если я опять делаю снимок искомого изображения и сохраняю его вместо текущего, то программа начинает работать дальше до следующего изображения,которое не может найти и таких изображений где-то десяток при чем все остальные удачно находятся.Может изображение действительно отличается на незаметные для глаза пикселя, но до переустановки windows на прошлой виртуалке - все работало. При чем я попробывал запустить кибор и найти изображение на котором происходил сбой - не находит. Потом открыл этот bmp файл и опять не находит( не кликает по нему и не завершает работу скрипта) на прошлой виртуалке - находил.Я пробывал отредактировать все проблемные изображения, сохранить все изменения, создать запускной файл, но опять после перезагрузки все доходило до первого проблемного изображения, которое я отредактировал и зацикливание в функции klikleft - так как скрипт не может найти изображение.В чем может быть проблема подскажите пожалуйста, а то я уже не знаю что делать. |
|
|
|