mu

2023-04-25by@xufqing-fZYSL&@GPT-4.Model: gpt-3.5
xufqing-fZYSL

(((lpObj->Inventory[n].m_SetOption >> 2) & 3)*5) 是什么意思

Avatar
Avatar

这段代码是在计算装备道具的附加属性值,具体解释如下:

  • lpObj:表示指向角色对象的指针。
  • Inventory[n]:表示角色背包中第 n 个物品的结构体。
  • m_SetOption:表示该物品的附加属性值。
  • 2:表示将 m_SetOption 的二进制值向右移动两位,相当于除以 4。

  • & 3:表示将 m_SetOption 的二进制值与 3 进行与运算,相当于取最后两位的值。
  • *5:表示将上一步得到的值乘以 5,得出最终的附加属性值。

因此,这段代码的意思是将角色背包中第 n 个装备道具的附加属性值(m_SetOption)按照一定规则转换为实际的附加属性值。具体规则为,将 m_SetOption 的值除以 4,再取最后两位的值乘以 5,得到实际的附加属性值。

xufqing-fZYSL

lpObj->Inventory[n].m_SetOption 等于10

Avatar
Avatar

如果 lpObj->Inventory[n].m_SetOption 等于10,那么根据上述代码,计算出来的实际附加属性值为 25,具体计算过程如下:

  1. 将 m_SetOption 的值除以 4:10 / 4 = 2
  2. 取最后两位的值:2 & 3 = 2
  3. 将上一步得到的值乘以 5:2 * 5 = 10

因此,如果 lpObj->Inventory[n].m_SetOption 等于10,那么计算出来的实际附加属性值为 25。

xufqing-fZYSL

lpObj->Inventory[n].m_SetOption 等于9

Avatar
Avatar

如果 lpObj->Inventory[n].m_SetOption 等于9,那么根据上述代码,计算出来的实际附加属性值为 20,具体计算过程如下:

  1. 将 m_SetOption 的值除以 4:9 / 4 = 2
  2. 取最后两位的值:2 & 3 = 2
  3. 将上一步得到的值乘以 5:2 * 5 = 10

因为 lpObj->Inventory[n].m_SetOption 的最后一位是 1,所以在第二步取最后两位的时候,实际上是取到了 01,这个二进制值转换成十进制就是 1,所以最后得到的值是 2。因此,如果 lpObj->Inventory[n].m_SetOption 等于9,那么计算出来的实际附加属性值为 20。