Kibor |
Отправлено: 21 Мая, 2016 - 16:30:54
|
Эксперт
Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Не ошибку надо исправлять, а правильно логику писать...
Если клавиши жмутся не завися ни от чего то какие могут быть паузы до и после?? До чего? После чего?? Если они независимы?? пауза может быть между.. и все.
Вот код реализующий..
CODE:
int t[9], k[9], t1[9], kod[9];
int tim;
int n;
int n1;
int f=0;
t[0]=formatsn(getcontrol(EDIT_0));
t[1]=formatsn(getcontrol(EDIT_1));
t[2]=formatsn(getcontrol(EDIT_2));
t[3]=formatsn(getcontrol(EDIT_3));
t[4]=formatsn(getcontrol(EDIT_4));
t[5]=formatsn(getcontrol(EDIT_5));
t[6]=formatsn(getcontrol(EDIT_6));
t[7]=formatsn(getcontrol(EDIT_7));
t[8]=formatsn(getcontrol(EDIT_8));
/////////////////////////////////////////////////////////////
k[0]=getcontrol(CHECK_0);
k[1]=getcontrol(CHECK_1);
k[2]=getcontrol(CHECK_2);
k[3]=getcontrol(CHECK_3);
k[4]=getcontrol(CHECK_4);
k[5]=getcontrol(CHECK_5);
k[6]=getcontrol(CHECK_6);
k[7]=getcontrol(CHECK_7);
k[8]=getcontrol(CHECK_8);
////////////////////////////////
for(n1=0; n1<9; n1++){t1[n1]=gettime();}
kod[0]=65;
kod[1]=67;
kod[2]=69;
kod[3]=72;
kod[4]=75;
kod[5]=81;
kod[6]=85;
kod[7]=87;
kod[8]=91;
/////////////////////////////////////////////////////загрузка изображения полоски хп моба
int col_KIB, ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB, tim_KIB;
int Image_0_KIB[84][1];
getdisplay(col_KIB, ex_KIB, ey_KIB);
loadimage (#Image_0_KIB[0][0], "D:\kibor\PoloskaHpMoba3.bmp");
//////////////////////////////////////////////////////
enabletimer(0);
loop()
{
if (findimage_(#Image_0_KIB[0][0], 100, 0, 0, 0, 0, 0, 0, -1, 0, 100, 1, #sum_KIB, #x_KIB, #y_KIB)==1)//ищем полоску хп мобов
{
if (f==0)
{
for(n1=0; n1<9; n1++){t1[n1]=gettime();}
f=1;
}
}
else f=0;
sleep(5);
}
////////////////////////////////////////////////////// паузы
CREATE_TIMER(0, 50)//Номер таймера, выполнение таймера через мсек.
{
if (f==1)
{
tim=gettime();
for(n=0; n<9; n++)
{
if (k[n]==1)
{
if (tim-t1[n]>=t[n]){key(kod[n]);t1[n]=tim;}
}
}
}
}
//функция поиска изображения
function findimage_(int #Image, int t, int p1, int p2, int m, int xm, int ym, int p3, int fon, int r, int p, int k, int#sum, int#x, int#y)
{
pause(p1);
sum_KIB=0;
if (t!=1) tim_KIB=gettime();
a: if (r==0 && p==100){sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], 0, 0, ex_KIB, ey_KIB, -1); if (sum>0) goto e;}
else {sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], 0, 0, ex_KIB, ey_KIB, r, r, r, r, r, r, p, 1, -1); if (sum>0) goto e;}
if (t==0) return 0;
if (gettime()-tim_KIB<t){sleep(20); goto a;}
return 0;
e: sum_KIB=sum; x_KIB=x[0]; y_KIB=y[0];
pause(p2);
if (m==1){mouse(LEFT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==2){mouse(MIDDLE, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==3){mouse(RIGHT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==4){mousedown(LEFT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==5){mousedown(MIDDLE, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==6){mousedown(RIGHT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==7){mouseup(LEFT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==8){mouseup(MIDDLE, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==9){mouseup(RIGHT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==10){mousemove(x_KIB+xm, y_KIB+ym); pause(p3);}
return sum_KIB;
}
/////////////////////////////////////////////////////////////////
CREATE_INTERFACE //создание интерфейса
{
DIALOG "B&S" 550 650 //название/РазмерX/РазмерY
//первый скилл
CHECK_0 0 /*Выключена*/ "1" 10 10 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_0 "0" 50 10 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//третий скилл
CHECK_1 0 /*Выключена*/ "3" 10 50 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_1 "0" 50 50 50 18 //ПозицияX ПозицияY РазмерX РазмерY
/////////////////////////////////////////////////////////////////////////////
//клавиша z скилл
CHECK_2 0 /*Выключена*/ "z" 10 90 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_2 "0" 50 90 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//клавиша x скилл
CHECK_3 0 /*Выключена*/ "x" 10 110 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_3 "0" 50 110 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//клавиша v скилл
CHECK_4 0 /*Выключена*/ "v" 10 150 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_4 "0" 50 150 50 18 //ПозицияX ПозицияY РазмерX РазмерY
/////////////////////////////////////////////////////////////////////////////
//клавиша tab скилл
CHECK_5 0 /*Выключена*/ "tab" 10 170 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_5 "0" 50 170 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//клавиша клик левой скилл
CHECK_6 0 /*Выключена*/ "lkm" 10 190 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_6 "0" 50 190 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//клавиша клик правой скилл
CHECK_7 0 /*Выключена*/ "pkm" 10 210 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_7 "0" 50 210 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//////////////////////////////////////////////////////////////////////////////
//клавиша F скилл
CHECK_8 0 /*Выключена*/ "f" 10 230 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_8 "0" 50 230 50 18 //ПозицияX ПозицияY РазмерX РазмерY
BUTTONSCRIPT "Запустить" 420 580 100 25 //ПозицияX ПозицияY РазмерX РазмерY
//Добавление контролов управления ......
}
|
|
|
AdryV |
Отправлено: 21 Мая, 2016 - 17:56:41
|
Специалист
Покинул форум
Сообщений всего: 449
Дата рег-ции: Май 2016
Репутация: 11
|
Kibor пишет: Не ошибку надо исправлять, а правильно логику писать...
спасибо за этот код, мне он понравился, много вычислений для меня, но надеюсь разберусь...
----------
код работает идеально на 2-х кнопках уже проверил, буду проверять дальше
----------
в итоге получается что сейчас все паузы хранятся в одном таймере с gettime?
и еще паузу до нажатия и после нажатия не реализовать? или можно добавить еще один таймер и вычисления таймера по аналогу первого?
(Добавление)
все отлично работает
вот весь код мало ли кому пригодится)
Спойлер (Отобразить)CODE:////////////////////////////////////
int t[12], k[12], t1[12], kod[12];
int tim;
int n;
int n1;
int f=0;
////////////////////////////////////
t[0]=formatsn(getcontrol(EDIT_0));
t[1]=formatsn(getcontrol(EDIT_1));
t[2]=formatsn(getcontrol(EDIT_2));
t[3]=formatsn(getcontrol(EDIT_3));
t[4]=formatsn(getcontrol(EDIT_4));
t[5]=formatsn(getcontrol(EDIT_5));
t[6]=formatsn(getcontrol(EDIT_6));
t[7]=formatsn(getcontrol(EDIT_7));
t[8]=formatsn(getcontrol(EDIT_8));
t[9]=formatsn(getcontrol(EDIT_9));
t[10]=formatsn(getcontrol(EDIT_10));
t[11]=formatsn(getcontrol(EDIT_11));
/////////////////////////////////////////////////////////////
k[0]=getcontrol(CHECK_0);
k[1]=getcontrol(CHECK_1);
k[2]=getcontrol(CHECK_2);
k[3]=getcontrol(CHECK_3);
k[4]=getcontrol(CHECK_4);
k[5]=getcontrol(CHECK_5);
k[6]=getcontrol(CHECK_6);
k[7]=getcontrol(CHECK_7);
k[8]=getcontrol(CHECK_8);
k[9]=getcontrol(CHECK_9);
k[10]=getcontrol(CHECK_10);
k[11]=getcontrol(CHECK_11);
////////////////////////////////
for(n1=0; n1<12; n1++){t1[n1]=gettime();}
kod[0]=49; //кнопка 1
kod[1]=50; //кнопка 2
kod[2]=51; //кнопка 3
kod[3]=52; //кнопка 4
kod[4]=90; //кнопка Z
kod[5]=88; //кнопка X
kod[6]=67; //кнопка C
kod[7]=86; //кнопка V
kod[8]=9; //кнопка TAB
kod[9]=82; //кнопка R //назначенная в настройках игры левая кнопка мышы
kod[10]=220; //кнопка \ //назначенная в настройках игры правая кнопка мышы
kod[11]=70; //кнопка F
/////////////////////////////////////////////////////загрузка изображения полоски хп моба
int col_KIB, ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB, tim_KIB;
int Image_0_KIB[84][1];
getdisplay(col_KIB, ex_KIB, ey_KIB);
loadimage (#Image_0_KIB[0][0], "D:\kibor\PoloskaHpMoba3.bmp");
//////////////////////////////////////////////////////
enabletimer(0);
loop()
{
if (findimage_(#Image_0_KIB[0][0], 100, 0, 0, 0, 0, 0, 0, -1, 0, 100, 1, #sum_KIB, #x_KIB, #y_KIB)==1)//ищем полоску хп мобов
{
if (f==0)
{
for(n1=0; n1<12; n1++){t1[n1]=gettime();}
f=1;
}
}
else f=0;
sleep(5);
}
////////////////////////////////////////////////////// паузы
CREATE_TIMER(0, 50)//Номер таймера, выполнение таймера через мсек.
{
if (f==1)
{
tim=gettime();
for(n=0; n<12; n++)
{
if (k[n]==1)
{
if (tim-t1[n]>=t[n]){key(kod[n]);t1[n]=tim;}
}
}
}
}
//функция поиска изображения
function findimage_(int #Image, int t, int p1, int p2, int m, int xm, int ym, int p3, int fon, int r, int p, int k, int#sum, int#x, int#y)
{
pause(p1);
sum_KIB=0;
if (t!=1) tim_KIB=gettime();
a: if (r==0 && p==100){sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], 0, 0, ex_KIB, ey_KIB, -1); if (sum>0) goto e;}
else {sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], 0, 0, ex_KIB, ey_KIB, r, r, r, r, r, r, p, 1, -1); if (sum>0) goto e;}
if (t==0) return 0;
if (gettime()-tim_KIB<t){sleep(20); goto a;}
return 0;
e: sum_KIB=sum; x_KIB=x[0]; y_KIB=y[0];
pause(p2);
if (m==1){mouse(LEFT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==2){mouse(MIDDLE, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==3){mouse(RIGHT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==4){mousedown(LEFT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==5){mousedown(MIDDLE, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==6){mousedown(RIGHT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==7){mouseup(LEFT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==8){mouseup(MIDDLE, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==9){mouseup(RIGHT, x_KIB+xm, y_KIB+ym); pause(p3);}
if (m==10){mousemove(x_KIB+xm, y_KIB+ym); pause(p3);}
return sum_KIB;
}
/////////////////////////////////////////////////////////////////
CREATE_INTERFACE //создание интерфейса
{
DIALOG "B&S" 550 650 //название/РазмерX/РазмерY
//первый скилл
CHECK_0 0 /*Выключена*/ "1" 10 10 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_0 "0" 50 10 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//второй скилл
CHECK_1 0 /*Выключена*/ "2" 10 30 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_1 "0" 50 30 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//третий скилл
CHECK_2 0 /*Выключена*/ "3" 10 50 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_2 "0" 50 50 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//четвертый скилл
CHECK_3 0 /*Выключена*/ "4" 10 70 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_3 "0" 50 70 50 18 //ПозицияX ПозицияY РазмерX РазмерY
/////////////////////////////////////////////////////////////////////////////
//клавиша z скилл
CHECK_4 0 /*Выключена*/ "z" 10 90 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_4 "0" 50 90 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//клавиша x скилл
CHECK_5 0 /*Выключена*/ "x" 10 110 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_5 "0" 50 110 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//клавиша c скилл
CHECK_6 0 /*Выключена*/ "c" 10 130 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_6 "0" 50 130 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//клавиша v скилл
CHECK_7 0 /*Выключена*/ "v" 10 150 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_7 "0" 50 150 50 18 //ПозицияX ПозицияY РазмерX РазмерY
/////////////////////////////////////////////////////////////////////////////
//клавиша tab скилл
CHECK_8 0 /*Выключена*/ "tab" 10 170 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_8 "0" 50 170 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//клавиша клик левой скилл
CHECK_9 0 /*Выключена*/ "lkm" 10 190 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_9 "0" 50 190 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//клавиша клик правой скилл
CHECK_10 0 /*Выключена*/ "pkm" 10 210 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_10 "0" 50 210 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//////////////////////////////////////////////////////////////////////////////
//клавиша F скилл
CHECK_11 0 /*Выключена*/ "f" 10 230 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_11 "0" 50 230 50 18 //ПозицияX ПозицияY РазмерX РазмерY
BUTTONSCRIPT "Запустить" 420 580 100 25 //ПозицияX ПозицияY РазмерX РазмерY
//Добавление контролов управления ......
}
(Добавление)
по поводу поиска изображения можно и тут спросить или лучше новую тему создать?(Отредактировано автором: 21 Мая, 2016 - 18:10:11) |
|
|
AdryV |
Отправлено: 26 Мая, 2016 - 07:13:27
|
Специалист
Покинул форум
Сообщений всего: 449
Дата рег-ции: Май 2016
Репутация: 11
|
Спасибо,
подскажите как сделать более компактней, а то у меня получается 14 полей, что бы перебирать на запись и чтение +1
и еще просмотрите пожалуйста весь код на ошибки логики и тд... так то все работает
Спойлер (Отобразить)CODE:int t[2], k[2], t1[2], kod[2];
int tim;
int n;
int n1;
int f=0;
int x[1], y[1];
int zona_X[1][2], zona_Y[1][2];//Координаты зон поисков
t[0]=formatsn(getcontrol(EDIT_0));
t[1]=formatsn(getcontrol(EDIT_1));
/////////////////////////////////////////////////////////////
k[0]=getcontrol(CHECK_0);
k[1]=getcontrol(CHECK_1);
////////////////////////////////
for(n1=0; n1<2; n1++){t1[n1]=gettime();}
kod[0]=82;
kod[1]=70;
/////////////////////////////////////////////////////загрузка изображения полоски хп моба
int Image_0_KIB[84][1];
int Image_2_KIB[174][1];//Полоска жизни босов
loadimage (#Image_0_KIB[0][0], "D:\kibor\PoloskaHpMoba3.bmp");
loadimage (#Image_2_KIB[0][0], "D:\kibor\PoloskaHpBoss1.bmp");//Полоска жизни босов
//////////////////////////////////////////////////////
enabletimer(0);
//сохранение пауз
if (fopen ("D:\pause.txt", "w")!=0)
{
fwrite(t[0]);
fwrite(ENDL);
fwrite(t[1]);
fclose();
}
loop()
{
zona_X[1][0]=364; zona_X[1][1]=1556; //координаты изображений полоски жизни мобов бослв X начало; X конец;
zona_Y[1][0]=47; zona_Y[1][1]=259; //координаты изображений полоски жизни мобов бослв Y начало; Y конец;
if (findimage(1, #Image_0_KIB[0][0], 0, #x[0], #y[0], zona_X[1][0], zona_Y[1][0], zona_X[1][1], zona_Y[1][1], 0, 0, 0, 0, 0, 0, 100, 0, -1)==1 || findimage(1, #Image_2_KIB[0][0], 0, #x[0], #y[0], zona_X[1][0], zona_Y[1][0], zona_X[1][1], zona_Y[1][1], 0, 0, 0, 0, 0, 0, 100, 0, -1)==1)
{
if (f==0)
{
for(n1=0; n1<2; n1++){t1[n1]=gettime();}
f=1;
}
}
else f=0;
sleep(5);
}
////////////////////////////////////////////////////// паузы
CREATE_TIMER(0, 50)//Номер таймера, выполнение таймера через мсек.
{
if (f==1)
{
tim=gettime();
for(n=0; n<2; n++)
{
if (k[n]==1)
{
if (tim-t1[n]>=t[n]){key(kod[n]);t1[n]=tim;}
}
}
}
}
///////////////////////////////////////////////////////
INITDIALOG
{
//считывание пауз
if (fopen ("D:\pause.txt", "r")!=0)
{
fread(t[0]);
fread(t[1]);
fclose();
sendcontrol(EDIT_0, t[0]);
sendcontrol(EDIT_1, t[1]);
}
}
/////////////////////////////////////////////////////////////////
CREATE_INTERFACE //создание интерфейса
{
DIALOG "B&S" 550 650 //название/РазмерX/РазмерY
//первый скилл
CHECK_0 0 /*Выключена*/ "r" 10 10 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_0 "0" 50 10 50 18 //ПозицияX ПозицияY РазмерX РазмерY
//третий скилл
CHECK_1 0 /*Выключена*/ "f" 10 50 40 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_1 "0" 50 50 50 18 //ПозицияX ПозицияY РазмерX РазмерY
BUTTONSCRIPT "Запустить" 420 580 100 25 //ПозицияX ПозицияY РазмерX РазмерY
//Добавление контролов управления ......
}
(Добавление)
как перебирать на запись разобрался
CODE:if (fopen ("D:\pause.txt", "w")!=0)
{
for (n=0; n<2; n++)
{
fwrite (t[n]);
fwrite (ENDL);
}
fclose();
}
а вот как перебирать на считывание в поля EDIT не понял
(Добавление)
так это минимальный вариант? или както можно и EDIT_0 и тд... перебирать?
CODE:INITDIALOG
{
if (fopen ("D:\pause.txt", "r")!=0)
{
for (n=0; n<15; n++)
{
fread(t[n]);
}
fclose();
sendcontrol(EDIT_0, t[0]);
sendcontrol(EDIT_1, t[1]);
sendcontrol(EDIT_2, t[2]);
sendcontrol(EDIT_3, t[3]);
sendcontrol(EDIT_4, t[4]);
sendcontrol(EDIT_5, t[5]);
sendcontrol(EDIT_6, t[6]);
sendcontrol(EDIT_7, t[7]);
sendcontrol(EDIT_8, t[8]);
sendcontrol(EDIT_9, t[9]);
sendcontrol(EDIT_10, t[10]);
sendcontrol(EDIT_11, t[11]);
sendcontrol(EDIT_12, t[12]);
sendcontrol(EDIT_13, t[13]);
sendcontrol(EDIT_14, t[14]);
}
} (Отредактировано автором: 26 Мая, 2016 - 07:15:36) |
|
|
|