LCKB
How to know what previous flags compose a final flag? - Printable Version

+- LCKB (https://lckb.dev/forum)
+-- Forum: ** OLD LCKB DATABASE ** (https://lckb.dev/forum/forumdisplay.php?fid=109)
+--- Forum: Programmers Gateway (https://lckb.dev/forum/forumdisplay.php?fid=196)
+---- Forum: Coders Talk (https://lckb.dev/forum/forumdisplay.php?fid=192)
+---- Thread: How to know what previous flags compose a final flag? (/showthread.php?tid=5020)



- nicolasg - 02-23-2023


Hi. I'm working with item flags for first time, I know this flag (134217758) was made with this previous flags sum:

1 << 1;    // 2

1 << 2;    // 4

1 << 3;    // 8

1 << 4;    // 16

1 << 27; // 134217728

Sum of all results = 134217758

Now, how i can revert the final flag (134217758) to get 27, 4, 3, 2 and 1?




- nicolasg - 02-23-2023


2



I know that in C# it can be done with the following code

for (int index = 0; index < 64; ++index)
ClbItemFlag.SetItemChecked(index, (flag & 1L << index) > 0L);

But I want to do it in lua and I don't understand exactly how this code works... Obviously This: "(flag & 1L << index) >" 0L Is returning a boolean, but I don't understand why it returns a bool...

P.S: And yes, if anyone asks, I don't know exactly what I'm doing...




- nicolasg - 02-24-2023


#Solved




- Nikolee - 02-27-2023


Post your solution so other people can look it up if needed.




- nicolasg - 02-27-2023

tblFlags = {
"Count",
"Drop",
"Upgrade",
"Exchange",
"Sell(NPC)",
"Not Delete",
"Made",
"Mix",
"Cash",
"Lord",
"No Stash",
"Change",
"Composite",
"Duplication",
"lent",
"Rare",
"ABS",
"Not Reform",
"ZoneMove Del",
"Purple Seals",
"Trigger",
"Raid Special",
"Quest",
"LuckyDraw Box",
"Not TradeAgent",
"Durability",
"Costume2",
"Socket",
"Seller",
"Castillan",
"LetsParty",
"Non-RVR",
"Quest Give",
"Toggle",
"Compose",
"NotSingle",
"Invisible Custom",
"37",
"38",
"39",
"40",
"41",
"42",
"43",
"44",
"45",
"46",
"47",
"48",
"49",
"50",
"51",
"52",
"53",
"54",
"55",
"56",
"57",
"58",
"59",
"60",
"61",
"62",
"63"
};

local FlagPicker = 60; -- Your flag

for i = 0, #tblFlags do
local Flag = 1*2^i; -- Left shift iteration num by 1

if(FlagPicker % (Flag + Flag) >= Flag)then
-- true
else
-- false
end
end