CreateBitMask
Создаёт битовую маску, устанавливая значение флага, одного или нескольких аргументов.
Параметры:
PHP код:
(&bitmask, const bool: ...)
- bitmask - переменная, предназначенная для хранения значений флагов
- ... - аргументы для установки значения флага, которые могут принимать значения: true, если истинное, либо false, если ложное.
Возвращаемые значения: Значение переменной bitmask, после обработки в цикле.
Примечание: Если переменная bitmask ранее содержала в себе истинные значения, они будут перезаписаны на те значения, которые были указаны в аргументах.
Код:
Пример использования.PHP код:
stock CreateBitMask(&bitmask, const bool: ...)
{
new
arg_len = numargs() > 33 ? 33 : numargs(),
arg_count = 1;
do
bitmask |= (getarg(arg_count) << (arg_count) - 1);
while(++arg_count < arg_len);
return bitmask;
}
Создадим энумератор, в котором будет содержаться информация о игроке, допустим: подключен ли игрок, заспавнился ли игрок, вошёл ли в аккаунт игрок. Сразу же сместим все значения в энумераторе побитово на 1 влево, так будет удобнее работать с битами:
Допустим, зашёл игрок на сервер, мы должны его обработать. У нас есть 3 значения ( спавн, логин, подключение ). Так как игрок только подключился, следовательно мы должны сразу же присвоить ему значение подклчения, а вот остальные пока не нужны, в итоге им просто присвоим значение false:PHP код:
new
player_flag[MAX_PLAYERS]; // массив для записи значений флагов
enum(<<= 1)
{
PLAYER_FLAG_SPAWNED = 1,
PLAYER_FLAG_LOGGED,
PLAYER_FLAG_CONNECTED
};
Код без комментариев:PHP код:
CreateBitMask
(
player_flag[playerid], // первый аргумент должен всегда являться переменной, хранящей данные о флагах
false, // второй аргумент, это аргумент который будет принимать на себя значение - заспавнен ли игрок ( по порядку, см. энумератор )
false, // третий аргумент, это аргумент который будет принимать на себя значение - вошёл ли игрок в аккаунт ( по порядку, см. энумератор )
true, // четвёртый аргумент, это аргумент, который будет принимать на себя значение - подключен ли игрок ( по порядку, см. энумератор )
);
Можно заметить, что второй и третий аргумент принимают значение false, так как они пока не нужны на данный момент, а вот насчёт четвёртого аргумента: он как раз таки принимает отрицательное значение от false, то есть true. Мы его сделали истинным, так как игрок подключился.PHP код:
CreateBitMask(player_flag[playerid], false, false, true);
Проверить на наличие истинности или ложности одного или другого аргумента, можно так:
Если всё нормально получилось, в консоли должно вывести вот такой интересный текст:PHP код:
printf("Игрок заспавнился: %i\nИгрок вошёл в аккаунт: %i\nИгрок подключен: %i", !!(player_flag[playerid] & PLAYER_FLAG_SPAWNED), !!(player_flag[playerid] & PLAYER_FLAG_LOGGED), !!(player_flag[playerid] & PLAYER_FLAG_CONNECTED));
Код:Игрок заспавнился: 0
Игрок вошёл в аккаунт: 0
Игрок подключен: 1
Автор: Londlem
Специально для: Pro-Pawn.Ru
Копирование данной статьи без разрешения автора запрещено!