PDA

Просмотр полной версии : [Вопрос] Char



[ForD]
15.12.2014, 11:42
Приведи несколько примеров работы с Char массивом

L0ndl3m
15.12.2014, 16:44
При использовании 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.

[ForD]
15.12.2014, 18:39
Вот спасибо,большое спасибо! :good2:

- - - Добавлено - - -




При использовании char мы устанавливаем границы каждой ячейки массива: от 0 и до 255.

А также с помощью char можно уменьшить размер размера ( в 4 раза ).
Например создали массива из MAX_PLAYERS ячеек ( по умолчанию 500 игроков ), то при использовании мы используем не 2000 байт ( 500 * 4 ( каждая ячейка 4 байта ) ), а уже 500 ( 2000 / 4 = 500 ).


Немного не понял на счет MAX_PLAYERS,500 игроков как по умолчанию допустим,но char допускает значения от 0 до 255,можно немного подробнее.. :pardon:

L0ndl3m
16.12.2014, 00:45
;55206']Вот спасибо,большое спасибо! :good2:

- - - Добавлено - - -



Немного не понял на счет MAX_PLAYERS,500 игроков как по умолчанию допустим,но char допускает значения от 0 до 255,можно немного подробнее.. :pardon:
Учитывается не размер массива, а значение ячейки массива, например:

player_admin_level{405} = 12;
Установили игроку с ID 405 12 уровень администратирования.
А например так:

player_admin_level{405} = 500;
уже нельзя делать, мы указали 500, а максимально: 255.

[ForD]
16.12.2014, 00:53
Учитывается не размер массива, а значение ячейки массива, например:

player_admin_level{405} = 12;
Установили игроку с ID 405 12 уровень администратирования.
А например так:

player_admin_level{405} = 500;
уже нельзя делать, мы указали 500, а максимально: 255.

Спасибо,будем разбираться.