Вход

Просмотр полной версии : [Вопрос] Опьтимизация диологов



ALIT13
26.02.2018, 16:51
Как оптимизировать такой диалог


case dYazik:
{
if(!response)
{
switch(listitem)
{
case 0:
{
PlayerTextDrawSetString(playerid,register[playerid][14], TranslateText("Английскии"));
SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваш родной язык теперь:{FFFFFF} 'Английский'"), PlayerInfo[playerid][pyazik] = 2;
}
case 1:
{
PlayerTextDrawSetString(playerid,register[playerid][14], TranslateText("Китайскии"));
SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваш родной язык теперь:{FFFFFF} 'Китайский'"), PlayerInfo[playerid][pyazik] = 3;
}
case 2:
{
PlayerTextDrawSetString(playerid,register[playerid][14], TranslateText("Испанскии"));
SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваш родной язык теперь:{FFFFFF} 'Испанский'"), PlayerInfo[playerid][pyazik] = 4;
}
case 3:
{
PlayerTextDrawSetString(playerid,register[playerid][14], TranslateText("Русскии"));
SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваш родной язык теперь:{FFFFFF} 'Русский'"), PlayerInfo[playerid][pyazik] = 5;
}
}
}
}

pawnoholic
26.02.2018, 17:04
А что тут оптимизировать собственно?

Если только break добавить.

Или вы хотите код сократить?

Можно так, например



case dYazik:
{
if (!response)
{
new string[64];

static const languages[][] = {
"Английский", "Китайский", "Испанский", "Русский"
};

PlayerTextDrawSetString(playerid, register[playerid][14], TranslateText(languages[listitem]));

format(string, sizeof(string), "Хорошо, ваш родной язык теперь:{FFFFFF} '%s'", languages[listitem]);
SendClientMessage(playerid, COLOR_ORANGE, string);

PlayerInfo[playerid][pyazik] = listitem + 2;
}
}

Только это далеко не оптимизация, времени на это больше уйдет чем на ваш вариант

Можно и без static const languages обойтись, передав название в inputtext.



case dYazik:
{
if (!response)
{
new string[64];

PlayerTextDrawSetString(playerid, register[playerid][14], TranslateText(inputtext));

format(string, sizeof(string), "Хорошо, ваш родной язык теперь:{FFFFFF} '%s'", inputtext);
SendClientMessage(playerid, COLOR_ORANGE, string);

PlayerInfo[playerid][pyazik] = listitem + 2;
}
}


Только в этом случае, ShowPlayerDialog должен такой вид иметь


ShowPlayerDialog(playerid, dYazik, DIALOG_STYLE_LIST, "Язык", "Английский\nКитайский\nИспанский\nРусский", "Кнопка 1", "Кнопка 2");

DeimoS
26.02.2018, 18:17
К ответу выше добавлю, что если твой сервер страдает от лагов, то, в первую очередь, нужно переписывать алгоритмы систем, а не делать вот такие мелкие правки, которые, в лучшем случае, позволят выиграть пару тиков процессора. Подобным следует заниматься либо сразу при написании кода, либо уже когда прямо все системы написаны максимально хорошо, но из-за объёмов кода сервер всё равно подтормаживает в некоторые моменты. В остальных случаях это, чаще всего, просто потеря времени

ziggi
26.02.2018, 20:56
Ещё вместо TranslateText можно воспользоваться плагином rustext (http://pro-pawn.ru/showthread.php?14309)