Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Без описания
Bubblegum
Отправлено: 06 Ноября, 2014 - 16:32:05
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 17
Дата рег-ции: Окт. 2014  
Репутация: 0




Приветствую!

Скрипт как в моей теме(для просмотра ссылки Вам необходимо авторизоваться)
CODE:

int mob[3];
mob[0]=117; mob[1]=118; mob[2]=119;

//int baf_time[1];
//baf_time[0]=90000;

//int baf_t[1];
//baf_t[0];

int col_pix, X_pix, Y_pix;
int col_pix1, X_pix1, Y_pix1;
int col_pix2, X_pix2, Y_pix2;
int col_pix3, X_pix3, Y_pix3;

int N=0;
int k_mob=0;
int k_error_tim;
int col, xek, yek;
int error_tim=25000;


nastroit();

////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////Основной цикл///////////////////////////////////////
cikl:;

keydown(116);
pause(rand(100, 200));
keyup(116);
pause(rand(500, 550));


if (getcolor(X_pix, Y_pix)!=col_pix)
{
cikl1: keydown(mob[k_mob]);pause(rand(100, 200));keyup(mob[k_mob]);
k_mob++;
if (k_mob==2)k_mob=0;
pause(rand(1000, 1100));
}



if (getcolor(X_pix, Y_pix)==col_pix)
{
bit1: k_error_tim=gettime();
bit: if (getcolor(X_pix, Y_pix)==col_pix)
{

if(gettime()-k_error_tim>error_tim)
{
if (getcolor(X_pix1, Y_pix1)==col_pix1)
{
keydown(27);pause(rand(100, 200));keyup(27);
goto cikl1;
}
}




keydown(113);pause(rand(100, 200));keyup(113);
keydown(112);pause(rand(100, 200));keyup(112);
goto bit;
}

N++;
textout(0, X_pix, Y_pix+20, "Мобов слито:"+format (N), 0);
podbor();

goto cikl;
}
/////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////Подбор///////////////////////////////////////////

function podbor()
{
keydown(115);pause(rand(450, 500));keyup(115);keydown(115);pause(rand(450, 500));keyup(115);
keydown(115);pause(rand(450, 500));keyup(115);keydown(115);pause(rand(450, 500));keyup(115);
keydown(115);pause(rand(450, 500));keyup(115);keydown(F4);pause(rand(450, 500));keyup(115);
keydown(115);pause(rand(450, 500));keyup(115);keydown(F4);pause(rand(450, 500));keyup(115);
keydown(115);pause(rand(450, 500));keyup(115);keydown(27);pause(rand(100, 200));keyup(27);
}


//////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////Настройка//////////////////////////////////////////
function nastroit()
{
getdisplay(col, xek, yek);
xek=xek/2-200; yek=yek/2;

textbkcolor (0,255);
textout(0, xek, yek, "Первый пиксель ХП:", 0);
e: if (getkeystate(192)==0) {sleep(50); goto e;}
getmouse(X_pix, Y_pix);
q: if (getcolor(X_pix, Y_pix)==getcolor(X_pix-1, Y_pix)) {X_pix--; goto q;}
col_pix=getcolor(X_pix, Y_pix);
pause(500);

textbkcolor (0,65280);
textout(0, xek, yek, "Последний пиксель ХП:", 0);
e1: if (getkeystate(192)==0) {sleep(50); goto e1;}
getmouse(X_pix1, Y_pix1);
q1: if (getcolor(X_pix1, Y_pix1)==getcolor(X_pix1+1, Y_pix1)) {X_pix1++; goto q1;}
col_pix1=getcolor(X_pix1, Y_pix1);

pause (500);


textbkcolor (0,65280);
textout(0, xek, yek, "Старт?", 0);
e7: if (getkeystate(192)==0) {sleep(50); goto e7;}
pause (5000);

textout(0, xek, yek, "", 2);
resettextout(1);
textbkcolor (0,65280);
}


В целом работает, и задачу выполняет, однако периодически случается остановка скрипта, без какого-либо сообщения об ошибках и вылет в окно среды разработки. Следил за скриптом в процессе выполнения и пытался ловить что бы могло вызвать ошибку - и не смог, вроде все делает как надо, никакие внутриигровые глюки вроде не мешают, мобы там застрявшие или исчезающие, не знаю, окошки перекрывали может быть полоску ХП моба, ничего такого).

Вопрос, может кто-то реализовывал каким-нибудь образом нахождение таких ошибок? Т.е. чтобы после вылета более понятно было в каком месте был остановлен скрипт? Может с помощью лога какого-нибудь, запись в файл текстовый, с отметками о прохождении всех циклов скрипта? Подкиньте идейку, профессионально программированием никогда не занимался...

Спасибо!

(Отредактировано автором: 06 Ноября, 2014 - 16:33:42)

 
 Top
Kibor
Отправлено: 06 Ноября, 2014 - 21:31:28
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




все просто...
цикл замкнут goto cikl

а оно в блоке if (getcolor(X_pix, Y_pix)==col_pix)

отсюда, переход на метку только если if (getcolor(X_pix, Y_pix)==col_pix)


а если нет, то финиш...

вынесите goto cikl за блок
 
 Top
Bubblegum
Отправлено: 06 Ноября, 2014 - 21:38:41
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 17
Дата рег-ции: Окт. 2014  
Репутация: 0




Спасибо! Сейчас запущу, буду смотреть вылетит или нет.

А по вопросу отладки и поиска мест вылета, на будущее, что-нибудь посоветуете?
 
 Top
Kibor
Отправлено: 06 Ноября, 2014 - 21:54:40
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




CODE:
log("wwwaardtygyiu");
log("jhljihkjio");

function log(string s)
{
if (fope n ("c:\5.txt", "a")!=0)
{
fwri e(s);fwrit e(ENDL);
fclos e();
}
}


что то с форумом.. удалить пробелы
 
 Top
Bubblegum
Отправлено: 06 Ноября, 2014 - 22:26:17
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 17
Дата рег-ции: Окт. 2014  
Репутация: 0




Ну то есть вести логирование каждой функции или даже нескольких точек в функциях, все записывать в файл последовательно, чтобы при вылете по логу видеть где мы находились в последний раз, так я понимаю.

 Kibor пишет:
CODE:
log("wwwaardtygyiu");
log("jhljihkjio");

function log(string s)
{
if (fope n ("c:\5.txt", "a")!=0)
{
fwri e(s);fwrit e(ENDL);
fclos e();
}
}


что то с форумом.. удалить пробелы
 
 Top
Kibor
Отправлено: 06 Ноября, 2014 - 22:28:16
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




наверно...
только вылетало из за петли неправильной
 
 Top
Bubblegum
Отправлено: 06 Ноября, 2014 - 22:37:19
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 17
Дата рег-ции: Окт. 2014  
Репутация: 0




 Kibor пишет:
наверно...
только вылетало из за петли неправильной


Да, цикл поправил уже, тестирую, обычно за ночь работы вылетаело стабильно. Сегодня-завтра-послезавтра ставлю на проверку. Вдруг не только это...

Если мне память не изменяет, оператор goto никогда не пользовался особой популярностью среди программеров, вроде мог работать как-то криво. А здесь у меня их понатыкано достаточно.

Хотя мои знания ниразу не авторитет, я этим последний раз в школе еще интересовался, бейсик/делфи. Насколько он надежен в си++ не имею понятия.
 
 Top
Kibor
Отправлено: 06 Ноября, 2014 - 22:53:33
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 Bubblegum пишет:
оператор goto никогда не пользовался особой популярностью среди программеров, вроде мог работать как-то криво


гг... им бы волю дать...
для информации, goto это самое близкое к машинной команде EB xx.
и все эти if, for, while сделаны для удобства и транслируются в goto, то есть EB

просто надо применять правильно . ну конечно не стоит писать сплошное полотно с goto..
код должен быть читаем, но не бояться использовать где надо.
 
 Top
Bubblegum
Отправлено: 06 Ноября, 2014 - 23:02:26
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 17
Дата рег-ции: Окт. 2014  
Репутация: 0




 Kibor пишет:
 Bubblegum пишет:
оператор goto никогда не пользовался особой популярностью среди программеров, вроде мог работать как-то криво


гг... им бы волю дать...
для информации, goto это самое близкое к машинной команде EB xx.
и все эти if, for, while сделаны для удобства и транслируются в goto, то есть EB

просто надо применять правильно . ну конечно не стоит писать сплошное полотно с goto..
код должен быть читаем, но не бояться использовать где надо.


Ну, повторюсь, я чайник в этом всем. Спасибо за помощь, продолжаю разбираться.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by