Гайд Оптимизируем Стринги

Статус
В этой теме нельзя размещать новые ответы.

Batka1337

Новичок
Автор темы
21
9
Всем привет
Сегодня я вам расскажу как оптимизировать стринги, это намного проще чем кажется
Возьмём к примеру какой нибудь неоптимизированный стринг и опробуем его оптимизировать
Код:
new string[250];
format(string,sizeof(string),"[R] %s[%d] взял %i патронов со склада. На складе: %i",playername,playerid,pt,SkladArmy);
SendFractionMessage(PlayerInfo[playerid][pMember],COLOR_LIGHTRED,string);
Думаю тут всё понятно, текст в рацию при взятии патроновПробуем оптимизировать​
Код:
static const fmt_string[] = "[R] %s[%d] взял %i патронов со склада. На складе: %i";
new string[sizeof(fmt_string)+MAX_PLAYER_NAME+4+3+10-2-2-2-2];
format(string,sizeof(string), fmt_string,playername,playerid,pt,SkladArmy);
SendFractionMessage(PlayerInfo[playerid][pMember],COLOR_LIGHTRED,string);

Вот я оптимизировал, теперь объясню какая строчка что делает
В первой строчке мы создаём переменную равную кол-ву символов в тексте(без переменных)
Во второй строчке мы создаём новую переменную, сам стринг
В ней мы складываем то что считали в первой строке и кол-во символов которые задаются в переменных и отнимаем символы для переменных то есть "%s", "%i" и т.д.
Разберём:
 

Darge

Новичок
5
0
Согласен с постомвыше.

Плохой пример:
PHP:
new string[250];
format(string,sizeof(string),"[R] %s[%d] взял %i патронов со склада. На складе: %i",playername,playerid,pt,SkladArmy);
SendFractionMessage(PlayerInfo[playerid][pMember],COLOR_LIGHTRED,string);

Хороший пример:
PHP:
new string[86+MAX_PLAYER_NAME+4+4+1];
А остальной код вообще лишний. По сути тут у тебя ничего не сказано, а ведь важно, чтобы бы +1 на обнуление(\0)!

 

0pc0d3R

Потрачен
550
270
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Лучше уж тогда strpack использовать.
 

clicore

Известный
170
125
А не проще создать одну глобальную строку для каждого игрока?

Пример:

Код:
new stringer[128][MAX_PLAYERS];//Переменная для каждого игрока

//Использование
format(stringer[playerid], 5, "text");
SendClientMessage(playerid, stringer[playerid]);
 

Dark_Knight

Me, me and me.
Друг
4,078
2,096
То чуство кода павн не может std::string
 
Последнее редактирование:

Untonyst

Новичок
2
1
А не проще создать одну глобальную строку для каждого игрока?

Пример:

Код:
new stringer[128][MAX_PLAYERS];//Переменная для каждого игрока

//Использование
format(stringer[playerid], 5, "text");
SendClientMessage(playerid, stringer[playerid]);
И в чем "оптимизация"? Стэка сэкономите? >_<
 
Статус
В этой теме нельзя размещать новые ответы.