Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » goto из функции

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

11. Adomb - 30 Июля, 2015 - 10:58:56 - перейти к сообщению
Ну в коде, считай, тоже самое.
CODE:
B(); // по ходу скрипта вызывает функцию B()


function B()
{
int t=gettime();
sendmouse(LEFT, 400, 594, as); //кликает
sleep(500);
mb:
sendmouse(LEFT, starpx-197, starpy, as); //кликает
sleep(500);
if (pd@()==1)return 1; //рисунок нашёлся - выход из функции, но на самом деле выхода нет и функция начинается сначала, происходит клик после int t=gettime(); , доходит ещё раз до этого места и только тогда прекращается.
if (gettime()-t<4000)goto mb; //если нет рисунка - опять кликает начиная с метки mb
return -1;
}

function pd@() //ищет рисунок
{
if(findimage(1, #pd[0][0], 0, #px, #py, mx-338, my1-140, mx+338, my1-85, 16, 16, 16, 16, 16, 16, 61, 1, as)==1) return 1;
return 0;
}

Когда выполняет функцию В() и рисунок находится, функция не прекращается, хотя должна, если код фунции я правильно составил, а начинается сначала и выполняется ещё раз. Так ведь не должно быть. А по моим примерам выше разве не видно, что не правильно функция обрабатывается?
Микрофоноа нет под рукой, со скайпом позже. Радость
12. Kibor - 30 Июля, 2015 - 11:17:31 - перейти к сообщению
 Adomb пишет:
А по моим примерам выше разве не видно, что не правильно функция обрабатывается?


Твой код..
 Цитата:
if (B()==-1) {messagebox ("бла..бла..");goto er;}

B();

========================

int b=B(); //добавили переменную

if (B()==-1) {messagebox ("бла..бла..");goto er;}

B();


Твои вопросы
так тоже 2 раза функцию обрабатывает.
то вообще три раза срабатывает. Я не могу понять.


не видно.

CODE:
B(); // по ходу скрипта вызывает функцию B()


function B()
{
int t=gettime();
sendmouse(LEFT, 400, 594, as); //кликает
sleep(500);
mb:
sendmouse(LEFT, starpx-197, starpy, as); //кликает
sleep(500);
if (pd@()==1)return 1; //рисунок нашёлся - выход из функции, но на самом деле выхода нет и функция начинается сначала, происходит клик после int t=gettime(); , доходит ещё раз до этого места и только тогда прекращается.
if (gettime()-t<4000)goto mb; //если нет рисунка - опять кликает начиная с метки mb
return -1;
}

function pd@() //ищет рисунок
{
if(findimage(1, #pd[0][0], 0, #px, #py, mx-338, my1-140, mx+338, my1-85, 16, 16, 16, 16, 16, 16, 61, 1, as)==1) return 1;
return 0;
}


ОСОБЫХ проблем не вижу..
13. Adomb - 30 Июля, 2015 - 11:34:25 - перейти к сообщению
Всё, надо побольше спать, поменьше работать.
CODE:
int a=1;

if (B()==-1) {messagebox ("бла..бла..");goto er;} // здесь я в упор не понимал, что вызываю функцию первый раз!!!!

B(); //а здесь во второй!!!


function B()
{
beep(2500, 1000); // какое-нидь действие
sleep(500);
mb:
beep(2500, 400); //действие, которое зацикливается, если a не равно 1
sleep(500);
if (a==1)return 1;
if (a!=1)goto mb;
return -1;
}

Меня замкнуло, что if (B()==-1) {messagebox....} просто выведет мне сообщение об ошибке. Ваабще замкнуло. Прошу прощения, что заморочил вам голову.

Powered by ExBB FM 1.0 Final