PDA

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



Flime
26.06.2014, 19:38
Видел вот такую систему в РЛС модах. Возник вопрос: как ее оптимизировать?



new const Commands[6][] =
{
{"Команда - описание\n"},
{"Команда - описание\n"},
{"Команда - описание\n"},
{"Команда - описание\n"},
{"Команда - описание\n"},
{"Команда - описание\n"}
};

И далее где-нибудь


new string[500];
format(string,sizeof(string), "%s%s%s%s%s%s",Commands[0],Commands[1],Commands[2],Commands[3],Commands[4],Commands[5]);
SPD(playerid,121,DIALOG_STYLE_MSGBOX, "{FFFFFF}Команды сервера", string, "Закрыть", "");
return 1;

bredvix
26.06.2014, 19:46
Так думаю проще:


case 121:
{
if(response)
{
switch(listitem)
{
case 0:
{
// Можешь запихнуть сам функционал сюда своей команды.
OnPlayerCommandText(playerid, "/CMD1");
}
case 1:
{
// Можешь запихнуть сам функционал сюда своей команды.
OnPlayerCommandText(playerid, "/CMD2");
}
}
}
else return ShowPlayerDialog(playerid, 121, DIALOG_STYLE_LIST, "LOL", "CMD1\nCMD2", "Выбрать", "Отмена");
}

Flime
26.06.2014, 19:55
Так думаю проще:


case 121:
{
if(response)
{
switch(listitem)
{
case 0:
{
// Можешь запихнуть сам функционал сюда своей команды.
OnPlayerCommandText(playerid, "/CMD1");
}
case 1:
{
// Можешь запихнуть сам функционал сюда своей команды.
OnPlayerCommandText(playerid, "/CMD2");
}
}
}
else return ShowPlayerDialog(playerid, 121, DIALOG_STYLE_LIST, "LOL", "CMD1\nCMD2", "Выбрать", "Отмена");
}

Прошу прощения.. Не точно передал суть своего вопроса. Отредактировал первый пост.

underwoker
26.06.2014, 20:02
Видел вот такую систему в РЛС модах. Возник вопрос: как ее оптимизировать?



new const Commands[6][] =
{
{"Команда - описание\n"},
{"Команда - описание\n"},
{"Команда - описание\n"},
{"Команда - описание\n"},
{"Команда - описание\n"},
{"Команда - описание\n"}
};

И далее где-нибудь


new string[500];
format(string,sizeof(string), "%s%s%s%s%s%s",Commands[0],Commands[1],Commands[2],Commands[3],Commands[4],Commands[5]);
SPD(playerid,121,DIALOG_STYLE_MSGBOX, "{FFFFFF}Команды сервера", string, "Закрыть", "");
return 1;

Опять погоня за милисекундами. Не советую.

Nurick
26.06.2014, 20:54
ShowPlayerDialog(playerid, 121, DIALOG_STYLE_MSGBOX, "Описание команд","Команда - описание\nКоманда - описание\nКоманда - описание\nКоманда - описание ....... потом делаем переход - \", "Меню", "Закрыть");

Flime
28.06.2014, 23:03
ShowPlayerDialog(playerid, 121, DIALOG_STYLE_MSGBOX, "Описание команд","Команда - описание\nКоманда - описание\nКоманда - описание\nКоманда - описание ....... потом делаем переход - \", "Меню", "Закрыть");
А когда очень много команд будет? + неудобно..
Есть еще у кого-нибудь идеи?

Tracker1
28.06.2014, 23:05
Циклом по массиву пробежаться - присоединить куски к стрингу.
И все.

codeo
28.06.2014, 23:54
stock openDWEAP(playerid)
{
new string[50];
for(new j; j < 3;j++ ) format(string, sizeof(string),"%s%s\n", string, weapD[j]);
ShowPlayerDialog(playerid, DIALOG_1, DIALOG_STYLE_LIST, "Диалог", string, "Выбрать", "Отмена");
}



new weapD[3][50]=
{
"1 ",
"2 ",
"3 "
};

DeimoS
29.06.2014, 13:28
Вряд ли прикрутка цикла к коду может считаться оптимизацией...
Чем вас обычный format не устраивает?

Flime
29.06.2014, 19:05
Вряд ли прикрутка цикла к коду может считаться оптимизацией...
Чем вас обычный format не устраивает?
Не знаю причину, но когда много "\n" или чего-то еще, у меня просто из pawno выкидывает. "Windows ищет причину ошибки" и далее только остается закрыть программу. Вот я и ищу способ как-то это обойти :)

DeimoS
29.06.2014, 19:23
Не знаю причину, но когда много "\n" или чего-то еще, у меня просто из pawno выкидывает. "Windows ищет причину ошибки" и далее только остается закрыть программу. Вот я и ищу способ как-то это обойти :)
О_о покажите код, при котором ошибка появляется

Spectrum
29.06.2014, 19:27
криво пишешь, она просто так не может возникать

Seregamil
29.06.2014, 19:36
Не знаю причину, но когда много "\n" или чего-то еще, у меня просто из pawno выкидывает. "Windows ищет причину ошибки" и далее только остается закрыть программу. Вот я и ищу способ как-то это обойти :)

Лишний символ '\' где-то ставите. Вся проблема.

DeimoS
29.06.2014, 19:39
Лишний символ '\' где-то ставите. Вся проблема.

Лишний символ "\" просто бы экранировал последующий "\". Вылетать из-за этого явно не должно