Просмотр полной версии : [Вопрос] Char
Приведи несколько примеров работы с Char массивом
При использовании char мы устанавливаем границы каждой ячейки массива: от 0 и до 255.
Каждая ячейка может принимать 256 значений.
А также с помощью char можно уменьшить размер размера ( в 4 раза ).
Например создали массива из MAX_PLAYERS ячеек ( по умолчанию 500 игроков ), то при использовании мы используем не 2000 байт ( 500 * 4 ( каждая ячейка 4 байта ) ), а уже 500 ( 2000 / 4 = 500 ).
new
player_admin_level[MAX_PLAYERS char];
// здесь будет храниться уровень админа
Создадим например команду для выдачи админки, также сделаем проверку, чтобы нельзя было поставить меньше 0 и больше 255.
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, "Уровень администратирования выдан.");
}
Очень полезно использовать такие массивы, когда значение не достигает предела для char-массивов.
Например для массива с деньгами уже данный способ не пригодится. Денег может быть очень много, явно больше чем 255.
Вот спасибо,большое спасибо! :good2:
- - - Добавлено - - -
При использовании char мы устанавливаем границы каждой ячейки массива: от 0 и до 255.
А также с помощью char можно уменьшить размер размера ( в 4 раза ).
Например создали массива из MAX_PLAYERS ячеек ( по умолчанию 500 игроков ), то при использовании мы используем не 2000 байт ( 500 * 4 ( каждая ячейка 4 байта ) ), а уже 500 ( 2000 / 4 = 500 ).
Немного не понял на счет MAX_PLAYERS,500 игроков как по умолчанию допустим,но char допускает значения от 0 до 255,можно немного подробнее.. :pardon:
;55206']Вот спасибо,большое спасибо! :good2:
- - - Добавлено - - -
Немного не понял на счет MAX_PLAYERS,500 игроков как по умолчанию допустим,но char допускает значения от 0 до 255,можно немного подробнее.. :pardon:
Учитывается не размер массива, а значение ячейки массива, например:
player_admin_level{405} = 12;
Установили игроку с ID 405 12 уровень администратирования.
А например так:
player_admin_level{405} = 500;
уже нельзя делать, мы указали 500, а максимально: 255.
Учитывается не размер массива, а значение ячейки массива, например:
player_admin_level{405} = 12;
Установили игроку с ID 405 12 уровень администратирования.
А например так:
player_admin_level{405} = 500;
уже нельзя делать, мы указали 500, а максимально: 255.
Спасибо,будем разбираться.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot