PDA

Просмотр полной версии : [Вопрос] Подсчет ячеек в stcat.



DmitriyVasilev
17.03.2019, 10:14
Каким образом расчитать здесь кол-во ячеек для sctring
CMD:wanted(playerid)
{
new sctring[500];
if(!IsACop(playerid)) return SCM(playerid, -1, !"Вы не законник!");
foreach(new i : Player)
{
if(User[i][pWantedLevel] >= 1)
{
new fmt_str[25 + ( -2 + MAX_PLAYER_NAME + 1 ) + ( -2 + 6 ) + 1];
format(fmt_str,sizeof(fmt_str), "%s\t|\tУровень розыска: %i\n",Name(i),User[i][pWantedLevel]);
strcat(sctring,fmt_str);
}
}
if (strlen(sctring) > 1) ShowPlayerDialog(playerid, 11349,DIALOG_STYLE_MSGBOX, !"|- Розыскиваются -|", sctring, !"Закрыть", "");
else SCM(playerid,-1,"Нет розыскиваемых!");
return 1;
}

DeimoS
17.03.2019, 10:53
Во-первых, вынеси создание массива fmt_str из цикла.
Во-вторых, сначала высчитываешь размер для строки в format, а потом умножаешь получившуюся формулу на то число строк, которое может быть максимально отображено в твоём диалоге

DmitriyVasilev
17.03.2019, 10:55
а зачем убирать переменную из цикла, норм же работает у меня
UPD везде объявлять переменную перед циклом а не в нем? ( просто у меня много таких мест )

DeimoS
17.03.2019, 14:00
Потому что если объявление переменной будет в цикле, то она будет каждую итерацию создаваться и удаляться из памяти.
Да, везде.