Здравствуйте!
Не редко я был свидетелем вот таких кодов:
PHP код:
static const _n[][] =
{
"1\n",//0
"2\n",//1
"3\n",//2
"4\n",//3
"5"//4
}
format(string, sizeof(string),"%s%s%s%s%s%s", _n[0],_n[1],_n[2],_n[3],_n[5]);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Текст", string, "Закрыть", "");
Данный код является не читабельным (по крайне мере, для меня.)
Приходится постоянно считать количество "%s".
Обращаться с данным кодом тяжело, когда большое количество строк.
Как это исправить?
1) Данный метод подходит, когда есть некоторые переменные, которые нужно внедрить в текст.
PHP код:
new string[62];
format(string, sizeof(string), "1. %d",kills);
format(string, sizeof(string), "%s\n2. %d",string,kills);
format(string, sizeof(string), "%s\n3. %d",string,kills);
format(string, sizeof(string), "%s\n4. %d",string,kills);
format(string, sizeof(string), "%s\n5. %d",string,kills);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Текст", string, "Закрыть", "");
2) Можно воспользоваться циклом.
Данный метод подходит для вывода большого текста, где нету переменных, которые нужно вставлять в текст. (Пример: Привила сервера.)
PHP код:
static const _n[5][] =
{
"1",//0
"2",//1
"3",//2
"4",//3
"5"//4
}
new string[5];
for(new j; j < 5; j++) format(string, sizeof(string),"%s%s\n", string, n[j]);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Текст", string, "Закрыть", "");
3) В этом методе при выводе диалога игроку будет показано содержимое всех строк. В секции данных эти строки располагаются непосредственно друг за другом и можно "сцепить" их, заменив символ конца строки в long_string на любой другой символ (в даном случае - перенос строки).
При этом не нужно будет перед каждым использованием выделять место в стеке и соединять их - всё уже сделано.
Пример:
Ко всем new добавляем:
PHP код:
new
long_string[] =
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n"\
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
long_string_1[] =
"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n"\
"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
В OnGameModeInit добавляем:
PHP код:
long_string[sizeof(long_string)-1] = '\n';
long_string_1[sizeof(long_string_1)-1] = '\0';
В место, куда нужно:
PHP код:
ShowPlayerDialog(playerid, 0, DIALOG_TYPE_MSGBOX, "Текст", long_string, "Закрыть", "");
Тем самым мы сделали код более понятным. С ним проще обращаться.
Помощь: Tracker1, Daniel_Cortez
Копирование данной статьи без разрешения автора запрещено!