PDA

Просмотр полной версии : [Вопрос] Не правильно возвращает значение



Killer
26.09.2017, 18:21
Здравствуйте. Есть диалог,


case 815:
{
if(!response) return true;
new targetid;
if(sscanf(inputtext, "u",targetid)) return ShowPlayerDialog(playerid, 815, DIALOG_STYLE_INPUT, " ", "{CED0BD}Введите ниже ID игрока, которого желаете сделать"Выбрать", "Закрыть");
InvalidTest(playerid, targetid);
strmid(test,GetName(targetid), 0, strlen(GetName(targetid)), MAX_PLAYER_NAME);
SendClientMessage(playerid,-1.!"test");
}



stock InvalidTest(playerid, id)
{
if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY,"вы указали свой id");
return false;
}

Вопрос таков, почему после проверки InvalidTest(playerid, id), мне пишется в чате " Test " ? Хотя проверка остановлена уже.

qwezert
26.09.2017, 18:55
Потому что твоя функция InvalidTest - возвращает значение false вникуда. Хотя бы в условие бы ее запихал
И даже больше скажу - у тебя даже после сообщения о том что игрок ввел свой id - все равно дальше выполнятся все ниженаписанные действия.

Killer
26.09.2017, 19:04
Кодом как исправить?

Competent
26.09.2017, 19:13
Кодом как исправить?

Мне интересно, почему у вас

SendClientMessage(playerid,-1.!"test");

-1.


case 815:
{
if(!response) return true;
new targetid;
if(sscanf(inputtext, "u",targetid)) return ShowPlayerDialog(playerid, 815, DIALOG_STYLE_INPUT, " ", "{CED0BD}Введите ниже ID игрока, которого желаете сделать", "Выбрать", "Закрыть");
InvalidTest(playerid, targetid);
strmid(test,GetName(targetid), 0, strlen(GetName(targetid)), MAX_PLAYER_NAME);
SendClientMessage(playerid,-1,!"test");
}

Замените, как это дело вообще у вас ещё и компилируется :mosking:

Killer
26.09.2017, 19:14
Это я поторопился, когда исправлял, все отлично у меня компилируется.
Вопрос совсем в другом

vasyok28
26.09.2017, 19:31
if(InvalidTest(playerid, targetid)) return 1;

Killer
26.09.2017, 19:40
Не работает данный вариант.

DeimoS
26.09.2017, 20:10
case 815:
{
if(!response)
return 1;

new targetid;
if(sscanf(inputtext, "u",targetid))
return ShowPlayerDialog(playerid, 815, DIALOG_STYLE_INPUT, " ", "{CED0BD}Введите ниже ID игрока, которого желаете сделать", "Выбрать", "Закрыть");
if(!InvalidTest(playerid, targetid))
return 1;
strmid(test, GetName(targetid), 0, MAX_PLAYER_NAME, MAX_PLAYER_NAME);
SendClientMessage(playerid, -1, !"test");
return 1;
}


stock InvalidTest(playerid, id)
{
if(id == INVALID_PLAYER_ID)
return SendClientMessage(playerid, COLOR_GREY,"Указанный игрок не найден на сервере"), 0;
else if(playerid == id)
return SendClientMessage(playerid, COLOR_GREY,"Вы указали свой ID"), 0;
return 1;
}