Так а какие значения они могут принимать и при каких условиях должен выдаваться тот или иной цвет?
Вид для печати
Игрок может бегать с одним цветом, но если мне нужно показать 2 или 3, то они по очереди должны показываться. protocols[playerid][1] и protocols[playerid][2] при какой-то задаче получают значения, в таймере убывают.
Пока у protocols[playerid][1] есть значение, color1 - красный.
При protocols[playerid][2], color2 должен принимать два цвета. bPlayer{playerid} - оранжевый, Cargo[playerid] - фиолетовый.
Один цвет может быть любой из трех, а при 2-3 меняться.
Вроде ничего не упустил.
Ну вот я и пытаюсь понять какие именно значения они могут получить и при каких значениях должен даваться конкретный цвет, дабы понять как правильно составить твоё условие.
В общем, пока protocols[playerid][1] не равен нулю - показываем один цвет, та?
А как только он равен нулю, начинаем смотреть значение protocols[playerid][2]. Но вот при каких значениях protocols[playerid][2] должен выпадать один цвет, а при каких - другой?
Опиши всё не в каких-то дополнительных переменных, а в конкретных числах
protocols[playerid][1] имеет любое значение. Цвет записывается в color1.
Если только у protocols[playerid][1] есть значение, то цвет красный. Если и у protocols[playerid][2] есть значение, то уже может быть всего 2 или 3 цвета.
Допустим у bPlayer{playerid} и Cargo[playerid] есть значение, то color2 сможет получить 2 цвета по очереди, а если только у одной, то только один, соответствующий переменной (bPlayer{playerid} - оранжевый, Cargo[playerid] - фиолетовый).
По очереди демонстрируются color1 (красный) и color2 (оба по очереди или один из цветов).
Все условия проверяются на наличие любого положительного значения.
Работаю над этим
Так?
Только не могу понять зачем ты записываешь значение в переменную color, если значение возвращается в качестве результата. Не проще сразу цвет вернуть?PHP код:
if(protocols[playerid][2] != 0)
{
if((protocols[playerid][2] % 2) == 0)// Если значение чётное
return color = color2;
else// Если нечётное
return color = color3;
}
else //Как я понял, возвращать красный нужно всегда, когда в protocols[playerid][2] записан нуль, так что дополнительная проверка не нужна
return color = color1;
У color1 может быть несколько значений...
Я вот такое накуролесил. В 2 этапа. Работает, только оптимизировать (если возможно). Хотя. Работает — не трогай.
PHP код:
color1 = COLOR_RED1;
if (bPlayer{playerid} && Cargo[playerid])
{
if (protocols[playerid][1])
{
if (protocols[playerid][2] % 2 == 0)
color2 = COLOR_BIGM1Y;
if (protocols[playerid][2] % 4 == 0)
color2 = COLOR_CARGO;
}
else
{
color2 = (protocols[playerid][2] % 2 == 0) ? (COLOR_BIGM1Y) : (COLOR_CARGO);
}
}
else
{
color2 = (bPlayer{playerid}) ? (COLOR_BIGM1Y) : (COLOR_CARGO);
}
PHP код:
if (protocols[playerid][1])
{
if (protocols[playerid][2] % 2 == 0 && protocols[playerid][2])
return color = color2;
else
return color = color1;
}
else
{
color = (protocols[playerid][2]) ? (color2) : (color1);
}
Как аннулировать текстуру на объекте? Чтобы стандартная вернулась.
SetDynamicObjectMaterial(objectid, 0, 0, "none", "none");
и
SetDynamicObjectMaterial(objectid, 0, 0, "", "");
Не срабатывают, а первая делает просто объект прозрачным.