PDA

Просмотр полной версии : [Вопрос] Правильно ли построил условия



m1n1vv
08.10.2016, 20:20
Привет. Хочу убедиться в правильности условия. А если если есть возможность, то и упростить.

Цель:

Если kill_detected больше нуля, то иконка игрока красного цвета, а если еще BagWithMoneyPlayer равно 1, то чередуются красного и желтого цвета. В противном случае прозрачная иконка.

Работает в секундном таймере.


if (kill_detected[playerid] != 0) // if (kill_detected[playerid])
{
kill_detected[playerid]--;

if (BagWithMoneyPlayer{playerid} == 1)
{
if (kill_detected[playerid] % 2 == 0)
{
SetPlayerColor(playerid, COLOR_RED1); // красный
}
else
{
SetPlayerColor(playerid, COLOR_BIGMONEY); // желтый
}
}
else
{
SetPlayerColor(playerid, COLOR_RED1); // красный
}
}
else
{
SetPlayerColor(playerid, COLOR_WHITE_A); // прозрачный
}


if (kill_detected[playerid])
{
kill_detected[playerid]--;

if (BagWithMoneyPlayer{playerid})
{
if (kill_detected[playerid] % 2 == 0)
{
SetPlayerColor(playerid, COLOR_RED1);
}
else
{
SetPlayerColor(playerid, COLOR_BIGMONEY);
}
}
else
{
SetPlayerColor(playerid, COLOR_RED1);
}
}
else
{
SetPlayerColor(playerid, COLOR_WHITE_A);
}

Geebrox
08.10.2016, 22:16
if(kill_detected[playerid])
{
kill_detected[playerid]--;

if(BagWithMoneyPlayer{playerid})
SetPlayerColor(playerid,
(kill_detected[playerid] % 2) ? COLOR_BIGMONEY : COLOR_RED1);
else
SetPlayerColor(playerid, COLOR_RED1);
}
else
SetPlayerColor(playerid, COLOR_WHITE_A);


Могу предложить такой вариант, если конечно до этого твой код нормально функционировал

m1n1vv
10.10.2016, 01:51
Все же есть ошибка в построении. Если kill_detected равно 0, а BagWithMoneyPlayer нет. Нет вероятности исключительно для желтой иконки.


if (kill_detected[playerid] && BagWithMoneyPlayer{playerid})
{
kill_detected[playerid]--;
SetPlayerColor(playerid, (kill_detected[playerid] % 2) ? COLOR_RED1 : COLOR_BIGMONEY);
}
else if (kill_detected[playerid])
{
kill_detected[playerid]--;
SetPlayerColor(playerid, COLOR_RED1);
}
else if (BagWithMoneyPlayer{playerid})
{
SetPlayerColor(playerid, COLOR_BIGMONEY);
}
else
{
SetPlayerColor(playerid, COLOR_WHITE_A);
}

Saibot
10.10.2016, 03:21
if(-- kill_detected[playerid] != 0)
{
SetPlayerColor(playerid,
(
!BagWithMoneyPlayer{playerid} ? COLOR_RED1 : COLOR_BIGMONEY)
);
}
else
SetPlayerColor(playerid,
(
!BagWithMoneyPlayer{playerid} ? COLOR_WHITE_A : COLOR_BIGMONEY)
);

m1n1vv
10.10.2016, 06:10
if(-- kill_detected[playerid] != 0)
{
SetPlayerColor(playerid,
(
!BagWithMoneyPlayer{playerid} ? COLOR_RED1 : COLOR_BIGMONEY)
);
}
else
SetPlayerColor(playerid,
(
!BagWithMoneyPlayer{playerid} ? COLOR_WHITE_A : COLOR_BIGMONEY)
);

Спасибо. Но тогда kill_detected[playerid] станет меньше нуля, и упустил кратность. Получается такое:


if(kill_detected[playerid])
{
kill_detected[playerid]--;
SetPlayerColor(playerid,
(
(!BagWithMoneyPlayer{playerid}) ?
COLOR_RED1 : ((kill_detected[playerid] % 2) ? COLOR_RED1 : COLOR_BIGMONEY))
);
}
else
{
SetPlayerColor(playerid, (!BagWithMoneyPlayer{playerid}) ? COLOR_WHITE_A : COLOR_BIGMONEY);
}
)