(29.08.2019 14:44)Igor Wrote: XEPOMAHT, то есть !!BM:F записывает и проверяет каждый флаг отдельно, а не сумму флагов. То есть если у монстра флаг 2, и флаг 4, то при проверке я получу не общий флаг 6, а отдельно 2 и 4? А как снять флаг с монстра? Просто !!BM:Fdy1, где у1 это отрицательное значение флага?
Igor, в данном конкретном случае флаги монстров нужны, чтобы хранить в одном 4-х байтовом числе хранить информацию о 32 разных значениях, которые могут быть либо ВКЛ (1), либо ОТКЛ (0). Это нужно для экономии памяти и удобства и быстрой работы при получении или установке такого типа данных.
Если у монстра есть флаг 2 и флаг 4, то суммарный их флаг будет 6. Но нужно уметь понимать и разделять эти флаги на отдельные составляющие. Смысл каждого флага в 2^n.
Минимальный флаг (для данного случая) 2^0 = 1
Максимальный флаг (для данного случая) 2^31 = 2147483648
Например точно так же реализованы флаги заклинаний SS:F, потому что это быстро, компактно и удобно.