OpenMir2 icon indicating copy to clipboard operation
OpenMir2 copied to clipboard

[SelGate] Bug清单和收集

Open mirbeta opened this issue 3 years ago • 2 comments

待补充

mirbeta avatar Oct 11 '22 15:10 mirbeta

你好类 src/GameSrv/Npc/Merchant.cs中第704行的代码 n10 = HUtil32._MIN(85, (n90 << 3 - n90) + 10 + upgradeInfo.UserItem.Desc[3] - upgradeInfo.UserItem.Desc[4] + user.BodyLuckLevel); 这行代码中的 (n90 << 3 - n90) 带入公式是计算是不是错误了?我运行看前面的结果是负数,我查了原版的delphi代码是这样的 n10 := _MIN(85, n90 shl 3 - n90 + 10 + UpgradeInfo.UserItem.btValue[3] - UpgradeInfo.UserItem.btValue[4] + User.m_nBodyLuckLevel); 这段代码在delphi中 shl是左位移,它的优先级高于+-法,但是在c#中 << 左位移的优先级是低于 +-法的,所以代码是不是这样才是对的: n10 = HUtil32._MIN(85, (n90 << 3) - n90 + 10 + upgradeInfo.UserItem.Desc[3] - upgradeInfo.UserItem.Desc[4] + user.BodyLuckLevel);

zh383603842 avatar Sep 20 '23 07:09 zh383603842

你好类 src/GameSrv/Npc/Merchant.cs中第704行的代码 n10 = HUtil32._MIN(85, (n90 << 3 - n90) + 10 + upgradeInfo.UserItem.Desc[3] - upgradeInfo.UserItem.Desc[4] + user.BodyLuckLevel); 这行代码中的 (n90 << 3 - n90) 带入公式是计算是不是错误了?我运行看前面的结果是负数,我查了原版的delphi代码是这样的 n10 := _MIN(85, n90 shl 3 - n90 + 10 + UpgradeInfo.UserItem.btValue[3] - UpgradeInfo.UserItem.btValue[4] + User.m_nBodyLuckLevel); 这段代码在delphi中 shl是左位移,它的优先级高于+-法,但是在c#中 << 左位移的优先级是低于 +-法的,所以代码是不是这样才是对的: n10 = HUtil32._MIN(85, (n90 << 3) - n90 + 10 + upgradeInfo.UserItem.Desc[3] - upgradeInfo.UserItem.Desc[4] + user.BodyLuckLevel);

这个我没太注意,后续有时间我可以看看,或者你可以尝试运行一下Delphi代码,然后在看看C#代码,比较一下两者的值,以Delphi的值为准

mirbeta avatar Sep 30 '23 00:09 mirbeta