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

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

1. AdryV - 18 Октября, 2018 - 08:34:57 - перейти к сообщению
есть функция
CODE:

pers_kordX=r_mem_kord(pers_ykaz+8508);

function r_mem_kord(int adress)
{
if(readmemory(#xp[0], 4, adress, prc)!=0)
{
perevernut_masiv();
double res=codhexd(#xpp[0]);
return res;
}
}

как правильней сделать что бы если неудачно/не считало/ну итд. считало с памяти или что бы если вернуло 0
что бы не возвращало 0 или -1
думал просто сделать у функции 2 принимающих параметра чет типа
CODE:

pers_kordX=r_mem_kord(pers_ykaz+8508, pers_kordX);

function r_mem_kord(int adress, double old_kord)
{
if(readmemory(#xp[0], 4, adress, prc)!=0)
{
perevernut_masiv();
double res=codhexd(#xpp[0]);
if(res<1)res=old_kord;
return res;
}
else return old_kord;
}

или есть более разумный вариант?
2. Kibor - 18 Октября, 2018 - 09:45:48 - перейти к сообщению
CODE:
double pers_kordX;

if (r_mem_kord(pers_ykaz+8508)==-1)messagebox ("error -1");


function r_mem_kord(int adress)
{
if(readmemory(#xp[0], 4, adress, prc)!=0)
{
perevernut_masiv();
pers_kordX=codhexd(#xpp[0]);
return 1;
}
return -1;
}
3. AdryV - 18 Октября, 2018 - 09:58:34 - перейти к сообщению
в вашем примере функция не универсальна
у меня много переменных вызывает ее и нужо получить более менее приемлемый ответ...
4. Kibor - 18 Октября, 2018 - 10:22:39 - перейти к сообщению
исходя из задачи и был разумный код.
более универсально?
CODE:
double pers_kordX;
double pers_kordX1;
double pers_kordX2;

if (r_mem_kord(pers_ykaz+8508, #pers_kordX)==-1)messagebox ("error -1");
if (r_mem_kord(pers_ykaz+8508, #pers_kordX1)==-1)messagebox ("error -1");
if (r_mem_kord(pers_ykaz+8508, #pers_kordX2)==-1)messagebox ("error -1");


function r_mem_kord(int adress, double #A)
{
if(readmemory(#xp[0], 4, adress, prc)!=0)
{
perevernut_masiv();
A=codhexd(#xpp[0]);
return 1;
}
return -1;
}
5. AdryV - 18 Октября, 2018 - 11:23:58 - перейти к сообщению
спс за примерПодмигивание
не могли бы объяснить в чем разница между моим примером и вашим
что в вашем примере в итоге вызывается цикл if что в моем....
также функция что у меня что у вас принимает 2 параметра
так же что у вас что у меня при не удаче остается старое...
но
в общем оригинал
CODE:
if(readmemory(#xp[0], 4, pers_ykaz+8508, prc)!=0)
{
perevernut_masiv();
pers_kordX=codhexd(#xpp[0]);
}

работает более исправно... (в моем не маленьком скрипте куда стабильней работает)
тоисть
при неудаче он просто проходит дальше и оставляет старое значение и не получаются багнутые значения из-за которых перс бежит в стены или на месте буксует....
6. Kibor - 18 Октября, 2018 - 11:57:56 - перейти к сообщению
А что сейчас толкового ваша функция первая возвращает?

Или вычисленную величину координаты, или то что ей передали (если величина < 1 или неудача)
И как это использовать?

В моем варианте если -1 - ошибка. Иначе все ок и в
double pers_kordX;
double pers_kordX1;
double pers_kordX2;
координаты.

Для нормальной логики это удобнее. Четко и ясно.

Если вам зачем то надо возвращать белеберду типа вашей первой функции, то вы о мотивах умолчали. Я лично не вижу смысла возврата переданного значения, если можно вернуть -1 и сразу ясно что это ошибка.
(Добавление)
А вот мотивы вы только сейчас раскрыли
 AdryV пишет:
при неудаче он просто проходит дальше и оставляет старое значение и не получаются багнутые значения из-за которых перс бежит в стены или на месте буксует....

Powered by ExBB FM 1.0 Final