Приведи несколько примеров работы с Char массивом
Вид для печати
Приведи несколько примеров работы с Char массивом
При использовании char мы устанавливаем границы каждой ячейки массива: от 0 и до 255.
Каждая ячейка может принимать 256 значений.
А также с помощью char можно уменьшить размер размера ( в 4 раза ).
Например создали массива из MAX_PLAYERS ячеек ( по умолчанию 500 игроков ), то при использовании мы используем не 2000 байт ( 500 * 4 ( каждая ячейка 4 байта ) ), а уже 500 ( 2000 / 4 = 500 ).
Создадим например команду для выдачи админки, также сделаем проверку, чтобы нельзя было поставить меньше 0 и больше 255.PHP код:
new
player_admin_level[MAX_PLAYERS char];
// здесь будет храниться уровень админа
Очень полезно использовать такие массивы, когда значение не достигает предела для char-массивов.PHP код:
CMD:setadmin(playerid, params[])
{
if(player_admin_level{playerid} < 5)
// для проверки значения из ячейки char-массива,
// используются не квадратные скобки ( [ и ] ) а ( { и } )
return SendClientMessage(playerid, -1, "У вас нет прав на выполнение данной команды.");
new
targetid,
level;
if(sscanf(params, "ii", targetid, level))
return SendClientMessage(playerid, -1, "Используйте: /setadmin [targetid] [level]");
if(!(0 <= level <= 255))
// если указанный игроком уровень меньше 0 или больше 255,
// то не даём ему выдать админку
return SendClientMessage(playerid, -1, "Уровень только от 0 и до 255.");
player_admin_level{targetid} = level;
// выдали игроку уровень админки,
// не забываем указывать фигурные скобки,
// иначе будут проблемы
return SendClientMessage(playerid, -1, "Уровень администратирования выдан.");
}
Например для массива с деньгами уже данный способ не пригодится. Денег может быть очень много, явно больше чем 255.
Учитывается не размер массива, а значение ячейки массива, например:
Установили игроку с ID 405 12 уровень администратирования.PHP код:
player_admin_level{405} = 12;
А например так:
уже нельзя делать, мы указали 500, а максимально: 255.PHP код:
player_admin_level{405} = 500;