Уроки плохо читал, blocksize это первый параметр, а не второй, второй - это начальный размер массива.
ArrayList hList = new ArrayList(ByteCountToCells(64), 2);
// @param1 - The number of cells each member of the array can hold. For example, 32 cells is equivalent to: new Array[X][32]
// @param2 - Initial size of the array. Note that data will NOT be auto-initialized.
SetArrayString(hList, 0, "rank_me");
// Все не влезет и обрежет 64 символа
SetArrayString(hList, 1, "asdfghjkloasdfghjkloasdfghjkloasdfghjkloasdfghjkloasdfghjklo12345678");
char szBuffer[235];
for(int i = 0; i < GetArraySize(hList); i++)
{
GetArrayString(hList, i, szBuffer, sizeof(szBuffer));
PrintToServer(szBuffer);
}
iArraySize у тебя никогда нулем не будет из-за проверки
if(iArraySize < 1) iArraySize = 1;
, если бы и захардкодил 0, была бы ошибка:
Exception reported: Invalid block size (must be > 0)
Этот код не отработает, там он по индексу устанавливает элемент, но размера массива нет, поэтому по индексу не получится установить элемент, в данном случае надо использовать
PushString