Не могу понять что это

Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Что это?
Код:

#define CheckFlag(%1,%2) (%1 & (1 << (%2 & 31)))
#define SetFlag(%1,%2) (%1 |= (1 << (%2 & 31)))
#define ClearFlag(%1,%2) (%1 &= ~(1 << (%2 & 31)))

// ####################################################
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define clr_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))
 
Последнее редактирование:
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
BalbuR, А много там объяснили ..
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Та ну его на фиг лучше трогать не буду оставлю как есть, а то пока соображу уже ничего не захочется..
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Код:
new globalVar = 0; // 00000000

#define SetFlag(%1,%2) (%1 |= (1 << (%2 & 31)))
// ->
SetFlag(var, id) {
var |= (1 << (id & 31))
}
// ->
SetFlag(var, id) {
var = var | (1 << (id & 31))
}
// ->
SetFlag(var, id) {
new a = (id & 31)
var = var | (1 << a)
}
// ->
SetFlag(var, id) {
new a = id & 31
new b = 1 << a
var = var | b
}
// ->
SetFrag(var, id = 1) {
new a = 1 & 31 // 00000001 & 00011111 = 00000001 = 1
new b = 1 << 1 // 00000001 << 1 = 00000010 = 2
var = globalVar | 2 // 00000000 | 00000010 = 00000010 = 2
globalVar = 2
}
SetFrag(var, id = 6) {

new a = 6 & 31 // 00000110 & 00011111 = 00000110 = 6
new b = 1 << 6 // 00000001 << 6 = 01000000 = 64
var = globalVar | 64 // 00000010 | 01000000 = 01000010 = 66
globalVar = 66
}
SetFrag(var, id = 32) {
new a = 32 & 31 // 00100000 & 00011111 = 00000000 = 0
new b = 1 << 0 // 00000001 << 0 = 00000001 = 1
var = 66 | 1 // 01000010 | 00000001 = 01000011 = 67
globalVar = 67
}
 
Последнее редактирование:
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Та ну его на фиг лучше трогать не буду оставлю как есть
их стали зачастую "без повода" использовать, под знамем "ОПТИМИЗАЦИЯ", которая по факту, деоптимизирует в большинстве. :crazy:
Так что, если необходимо хранить bool на каждого игрока - юзай массив на игроков, и не парься.
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
wopox1337, я не шарю я трогать эти строки вообще не буду оставлю как есть
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Код:
new globalVar = 67; // 01000011

#define ClearFlag(%1,%2) (%1 &= ~(1 << (%2 & 31)))
// ->
ClearFlag(var, id) {
var &= ~(1 << (id & 31))
}
// ->
ClearFlag(var, id) {
var = var & ~(1 << (id & 31))
}
// ->
ClearFlag(var, id) {
new a = id & 31
var = var & ~(1 << a)
}
// ->
ClearFlag(var, id) {
new a = id & 31
new b = 1 << a
var = var & ~b
}
// ->
ClearFlag(var, id) {
new a = id & 31
new b = 1 << a
new c = ~b
var = var & c
}
// ->
ClearFlag(var, id = 32) {
new a = 32 & 31 // 00100000 & 00011111 = 00000000 = 0
new b = 1 << 0 // 00000001 << 0 = 00000001 = 1
new c = ~1 // ~00000001 = 11111110 = 254
var = 67 & 254 // 01000011 & 11111110 = 01000010 = 66
globalVar = 66
}
ClearFlag(var, id = 6) {
new a = 6 & 31 // 00000110 & 00011111 = 00000110 = 6
new b = 1 << 6 // 00000001 << 6 = 01000000 = 64
new c = ~64 // ~01000000 = 10111111 = 191
var = 66 & 191 // 01000010 & 10111111 = 00000010 = 2
globalVar = 2
}
ClearFlag(var, id = 6) {
new a = id & 31 // 00000001 & 00011111 = 00000001 = 1
new b = 1 << 1 // 00000001 << 1 = 00000010 = 2
new c = ~1 // ~00000010 = 11111101 = 253
var = 2 & 253 // 00000010 & 11111101 = 00000000 = 0
globalVar = 0
}
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Что тут выставлять ?
Код:

public client_putinserver(id)
set_bit(g_iCheckBit, id);

public client_disconnect(id)
clr_bit(g_iBit, id);

или
public client_putinserver(id)
SetFlag(g_iBit, id);

public client_disconnect(id)
ClearFlag(g_iBit, id);
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу