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 влево, так будет удобнее работать с битами:
PHP код:
new
player_flag[MAX_PLAYERS]; // массив для записи значений флагов
enum(<<= 1)
{
PLAYER_FLAG_SPAWNED = 1,
PLAYER_FLAG_LOGGED,
PLAYER_FLAG_CONNECTED
};
Допустим, зашёл игрок на сервер, мы должны его обработать. У нас есть 3 значения ( спавн, логин, подключение ). Так как игрок только подключился, следовательно мы должны сразу же присвоить ему значение подклчения, а вот остальные пока не нужны, в итоге им просто присвоим значение false:
PHP код:
CreateBitMask
(
player_flag[playerid], // первый аргумент должен всегда являться переменной, хранящей данные о флагах
false, // второй аргумент, это аргумент который будет принимать на себя значение - заспавнен ли игрок ( по порядку, см. энумератор )
false, // третий аргумент, это аргумент который будет принимать на себя значение - вошёл ли игрок в аккаунт ( по порядку, см. энумератор )
true, // четвёртый аргумент, это аргумент, который будет принимать на себя значение - подключен ли игрок ( по порядку, см. энумератор )
);
Код без комментариев:
PHP код:
CreateBitMask(player_flag[playerid], false, false, true);
Можно заметить, что второй и третий аргумент принимают значение 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
Копирование данной статьи без разрешения автора запрещено!