PDA

Просмотр полной версии : [Вопрос] Тернарный оператор



SQL_
25.02.2018, 11:01
new stringoff[100],enginestr[50];
if(zavodis[vehicle] == false) enginestr = "~r~E";
else enginestr = "~g~E";
format(stringoff,sizeof(stringoff),"%s",enginestr);
PlayerTextDrawSetString(playerid,TDengine[playerid],stringoff);

Помогите сделать данный код через тернарный оператор

DeimoS
25.02.2018, 11:14
new stringoff[100];
format(stringoff, sizeof(stringoff), "~%s~E", (zavodis[vehicle] == false ? ("r") : ("g")));
PlayerTextDrawSetString(playerid,TDengine[playerid],stringoff);

Либо так, если форматирование будет ломать цвет

new stringoff[100];
format(stringoff, sizeof(stringoff), "%sE", (zavodis[vehicle] == false ? ("~r~") : ("~g~")));
PlayerTextDrawSetString(playerid,TDengine[playerid],stringoff);

Daniel_Cortez
25.02.2018, 11:46
new stringoff[100];
format(stringoff, sizeof(stringoff), "~%s~E", (zavodis[vehicle] == false ? ("r") : ("g")));
PlayerTextDrawSetString(playerid,TDengine[playerid],stringoff);
Небольшое напоминание: в format есть спецификатор "%c" для одиночных символов.


new stringoff[100];
format(stringoff, sizeof(stringoff), "~%c~E", (zavodis[vehicle] == false ? ('r') : ('g')));
PlayerTextDrawSetString(playerid,TDengine[playerid],stringoff);

SQL_
25.02.2018, 13:11
new stringoff[100];
format(stringoff, sizeof(stringoff), "~%c~E", (zavodis[vehicle] == false ? ('r') : ('_')));
PlayerTextDrawSetString(playerid,TDengine[playerid],stringoff);

А если у меня используется только красный цвет (~r~) а при выкл. двиг. остаётся цвет самого TDengine[playerid], то просто оставляем поле пустым? ('_')

DeimoS
25.02.2018, 13:45
Небольшое напоминание: в format есть спецификатор "%c" для одиночных символов.


new stringoff[100];
format(stringoff, sizeof(stringoff), "~%c~E", (zavodis[vehicle] == false ? ('r') : ('g')));
PlayerTextDrawSetString(playerid,TDengine[playerid],stringoff);


Я думал насчёт такого варианта, но где-то в душе была надежда на то, что компилятор за меня оптимизирует всё и не станет лепить нуль-символ в конце, а просто запишет код символа.
И я тут понял, что в данном случае можно вообще от форматирования отказаться ведь :)





А если у меня используется только красный цвет (~r~) а при выкл. двиг. остаётся цвет самого TDengine[playerid], то просто оставляем поле пустым? ('_')


PlayerTextDrawSetString(playerid, TDengine[playerid], (zavodis[vehicle] == false ? ("~r~E") : ("E")));

SQL_
25.02.2018, 14:19
Спасибо за ответы