Просмотр полной версии : [Вопрос] Проблемы с условием..
Здравствуйте, возникла проблемка с условиями. Есть следующее условие (Если фракция не равняется 11 И субфракция не равняется 0, тогда возвращаем 1):
if(pData[playerid][pFraction] != 11 && pData[playerid][pSubfraction] != 0) return true;
Но, все равно.. Выдаю себе 11 фраку и 1 субфракцию (да и вообще любую фракцию, хоть нулевую), и условие проходит..
Код целиком покажи. Условие составлено верно
Диалог выводится в любом случае..
else if(areaid == gAreas[arBoard])
{
if(pData[playerid][pFraction] != 11 && pData[playerid][pSubfraction] != 0) return true;
ShowPlayerDialog(playerid, dBoard, 1, "{FFFF80}Доска", "{FFFFFF}Введите текст на доске\n\nДля переноса используйте знак \"{33AA33}|{FFFFFF}\"\nИспользуйте не более 26 символов на строку\n", "Ввести", "Закрыть");
}
vovandolg
27.03.2017, 14:43
printf юзай
printf юзай
Код:
else if(areaid == gAreas[arBoard])
{
printf("Fraction - %d, SubFraction - %d", pData[playerid][pFraction], pData[playerid][pSubfraction]);
if(pData[playerid][pFraction] != 11 && pData[playerid][pSubfraction] != 0) return true;
ShowPlayerDialog(playerid, dBoard, 1, "{FFFF80}Доска", "{FFFFFF}Введите текст на доске\n\nДля переноса используйте знак \"{33AA33}|{FFFFFF}\"\nИспользуйте не более 26 символов на строку\n", "Ввести", "Закрыть");
}
Вывелось в консоль:
Fraction - 1, SubFraction - 0
Диалог все равно был показан...
vovandolg
27.03.2017, 15:04
SubFraction - 0
pData[playerid][pSubfraction] != 0
Равен 0, а по условию ты просишь чтобы был не равен 0.
Ну всё верно вот и прошло условие, может ты хотел такое условие?
if(pData[playerid][pFraction] != 11 || pData[playerid][pSubfraction] != 0) return true;
|| - или
&& - и
SubFraction - 0
pData[playerid][pSubfraction] != 0
Равен 0, а по условию ты просишь чтобы был не равен 0.
Ну всё верно вот и прошло условие, может ты хотел такое условие?
if(pData[playerid][pFraction] != 11 || pData[playerid][pSubfraction] != 0) return true;
|| - или
&& - и
Работает, но не могу понять почему нужно || (ИЛИ)... Если нужно показать диалог какой то фракции, надо проверять его фракцию и субфракцию (т.е. если фракция игрока не равняется 11 && (И) субфракция не равняется 0, тогда возращаем 1, т.е. ничего не показываем).
Я думал если поставить знак || (ИЛИ), тогда другой человек из другой фракции, но с такой же субфракцией, сможет взять этот самый диалог..
С && твоё условие сработает только когда ОБА условия совпали (и фракция не равна 11, и субфракция не равна 0).
С && твоё условие сработает только когда ОБА условия совпали (и фракция не равна 11, и субфракция не равна 0).
Все, теперь вдуплил :blush2:
Тему можно закрыть...
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot