Bubblegum |
Отправлено: 06 Ноября, 2014 - 16:32:05
|
Прохожий
Покинул форум
Сообщений всего: 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) |
|
|
Bubblegum |
Отправлено: 06 Ноября, 2014 - 22:26:17
|
Прохожий
Покинул форум
Сообщений всего: 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();
}
}
что то с форумом.. удалить пробелы |
|
|
Bubblegum |
Отправлено: 06 Ноября, 2014 - 23:02:26
|
Прохожий
Покинул форум
Сообщений всего: 17
Дата рег-ции: Окт. 2014
Репутация: 0
|
Kibor пишет: Bubblegum пишет: оператор goto никогда не пользовался особой популярностью среди программеров, вроде мог работать как-то криво
гг... им бы волю дать...
для информации, goto это самое близкое к машинной команде EB xx.
и все эти if, for, while сделаны для удобства и транслируются в goto, то есть EB
просто надо применять правильно . ну конечно не стоит писать сплошное полотно с goto..
код должен быть читаем, но не бояться использовать где надо.
Ну, повторюсь, я чайник в этом всем. Спасибо за помощь, продолжаю разбираться. |
|
|
|