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

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

11. Kibor - 18 Мая, 2014 - 15:41:01 - перейти к сообщению
 Prusak пишет:
а как взять их от туда

Да просто. Просто об ъявляйте переменные глобальные. То есть не в функции..




CODE:
int hp_e; int hp_c; int hp_n;
int mp_e; int mp_c; int mp_n;



hpmp();
if (hp_e...)//тут уже в hp_e значение будет
if (mp_c...)//тут уже в mp_c значение будет
............
.......

hpmp();
if (hp_e...)//тут уже в hp_e значение будет
if (mp_c...)//тут уже в mp_c значение будет
............
.......


hpmp();
if (hp_e...)//тут уже в hp_e значение будет
if (mp_c...)//тут уже в mp_c значение будет
............
.......





function hpmp()//проверка ХП и МП
{

int r=5;


hp_e=scanpixel(222,38,3642461,r,r,r,r,r,r,aa);//хп есть
hp_c=scanpixel(126,38,2325306,r,r,r,r,r,r,aa);//хп среднее
hp_n=scanpixel(87,38,1930289,r,r,r,r,r,r,aa);//хп нет


mp_e=scanpixel(222,52,12938823,r,r,r,r,r,r,aa);//мп есть
mp_c=scanpixel(126,52,12275505,r,r,r,r,r,r,aa);//мп среднее
mp_n=scanpixel(68,52,12274992,r,r,r,r,r,r,aa);//мп нет
}
12. Prusak - 19 Мая, 2014 - 01:14:56 - перейти к сообщению
А ларчик оказывается просто открывался Улыбка . спасибо помогло.
13. Prusak - 31 Мая, 2014 - 07:08:33 - перейти к сообщению
PHP:
loop:;
1.функция()
2.функция()
goto loop;

function 1.функция()
{
ну очень много кода
3.функция()
}

function 2.функция()
{
ну очень много кода
3.функция()
}

function 3.функция()
{
много кода
}


в описании function сказано, что с return что без, мы возвращаемся в следующую строку от ее вызвавшей. но может быть есть возможность из 3.функции попасть на метку loop . если возможно подскажите, как? goto loop; не помогло.
14. RussianRemaker - 31 Мая, 2014 - 11:47:13 - перейти к сообщению
Примерно так:
CODE:
// Для отладки
char CR = formatic(13);
char LF = formatic(10);
string CRLF = CR + LF;
// -----------

int f = 0; // Флаг, для возврата значения при выходе из '3.функция'
loop:;
1.функция();
if (f == 1) goto loop;
2.функция();
if (f == 1) goto loop;
goto loop;

function 1.функция(){
// ну очень много кода
/* Отладка */ messagebox("Выполняется первая функция.");
3.функция();
}

function 2.функция(){
// ну очень много кода
/* Отладка */ messagebox("Выполняется вторая функция.");
3.функция();
}

function 3.функция(){
// много кода
// Обработка условия, по результатам которого будет решено, переходить к метке 'loop' или не переходить
if (/* Отладка */ messageboxyn("Выполняется третья функция." + CRLF + CRLF + "Вернуться на метку 'loop'?") == 1){
f = 1;
}
else{
f = 0;
}
// Функция должна вернуть единицу, чтобы произошёл переход к метке 'loop'
return f;
}
15. Prusak - 31 Мая, 2014 - 12:08:09 - перейти к сообщению
спасибо,очень познавательно. но в моем случае не подходит, 3.функция это функция проверок жив ли перс есть ли интернет и тд. стоит данная функция в каждом зацикленном блоке прочих функций
PHP:
a:;
код
код
3.функция
goto a;
код

а данный метод сработает только если 3.функция стоит в конце прочих функций.
(Добавление)
натолкнуло на мысль Улыбка
PHP:
// Для отладки
char CR = formatic(13);
char LF = formatic(10);
string CRLF = CR + LF;
// -----------

int f=0; // Флаг, для возврата значения при выходе из '3.функция'
loop:;
1.функция();
if (f == 1) goto loop;
2.функция();
if (f == 1) goto loop;
4.функция();
if (f == 1) goto loop;
goto loop;

function 1.функция(){
// ну очень много кода
/* Отладка */ messagebox("Выполняется первая функция.");
3.функция();
if(f==1){return;}
messagebox("Выполняется первая функция..п1");
}

function 2.функция(){
// ну очень много кода
/* Отладка */ messagebox("Выполняется вторая функция.");
3.функция();
if(f==1){return;}
messagebox("Выполняется вторая функция..п1");
}

function 4.функция(){
// ну очень много кода
/* Отладка */ messagebox("Выполняется четвертая функция.");
3.функция();
if(f==1){return;}
messagebox("Выполняется четвертая функция.п1");
}




function 3.функция(){
if (/* Отладка */ messageboxyn("Выполняется третья функция." + CRLF + CRLF + "Вернуться на метку 'loop'?") == 1){
f = 1;}
else{
f = 0;
}
return f;
}

вот так.
16. Kibor - 31 Мая, 2014 - 14:04:28 - перейти к сообщению
 Prusak пишет:
может быть есть возможность из 3.функции попасть на метку loop

Уверены что в данном коде из функции3 надо попадать на начало??
Просто тогда 2 функция не выполнится так как вызов 3 идет с первой... и после первой будет идти на старт...

ну а вообще вот код..
 Цитата:
loop:;
if (функция1()==1)goto loop;
if (функция2()==1)goto loop;
goto loop;

function функция1()
{
messagebox ("1");
if (функция3()==1)return 1;
return 0;
}

function функция2()
{
messagebox ("2");
if (функция3()==1)return 1;
return 0;
}

function функция3()
{
messagebox ("3");
return 1;
}




 Prusak пишет:
в описании function сказано, что с return что без, мы возвращаемся в следующую строку от ее вызвавшей

Если точнее то вот с хелпа:

 Цитата:
Если после оператора return находится возвращаемое значение, функция завершается и возвращается управление в строку ее вызвавшую и она заново выполняется, только вместо вызова функции находится возвращаемое ей выражение стоящее после return.
17. Prusak - 31 Мая, 2014 - 14:35:13 - перейти к сообщению
 Kibor пишет:
Уверены что в данном коде из функции3 надо попадать на начало??

да уверен, вобщем суть такова 3.функция имеет функцию проверки интернет соединения и отлова появления сообщения игры о разрыве соединения,если связь прервана и игра закрылась скрипт запускает игру. по идее было задумано чтоб после запуска игры скрипт продолжил работу с того же места.return тут как к стати, но было замечено что скрипт после начинает подглючивать, где то моя видимо ошибка,выявить ее не смог. решил сделать после запуска игры чтоб скрипт начинал работу сначала.
З.Ы за пример спасибо, блин похоже все таки придется искать ошибку чтобы скрипт работал так как было задумано.

Powered by ExBB FM 1.0 Final