#Gromov
Мастер
Include содержит функции для манипулирования битами.
PHP:
stock GetValueBit(value,bit){
return (value >>> bit & 0x01);
}
stock SetValueBit(value,bit,power){
new nv = 0;
power = (power & 0x01);
for(new i = 31; i >= 0; i--){
if(i == bit){
if(power){
nv += floatround(floatpower(2, i));
}
} else {
if(GetValueBit(value,i)){
nv += floatround(floatpower(2, i));
}
}
}
return nv;
}
stock InvertValue(value){
new nv = 0;
for(new i = 31; i >= 0; i--){
if(!GetValueBit(value,i)){
nv += floatround(floatpower(2, i));
}
}
return nv;
}
#define AND(%1,%2) (%1 && %2)
#define OR(%1,%2) (%1 || %2)
#define NOT(%1) (!%1)
#define NOR(%1,%2) (!(%1 || %2))
#define NAND(%1,%2) (!(%1 && %2))
#define XOR(%1,%2) (!(%1 && %2) && (%1 || %2))
#define NXOR(%1,%2) ((%1 && %2) || !(%1 || %2))
PHP:
new PlayerConfig[MAX_PLAYERS][32];
stock ExtractPlayerConfig(playerid,value){
for(new i=31; i >= 0; i--){
PlayerConfig[playerid][i] = GetValueBit(value,i);
}
}
stock PackPlayerConfig(playerid,&value){
for(new i=31; i >= 0; i--){
SetValueBit(value,i,PlayerConfig[playerid][i]);
}
}
Последнее редактирование:
