作者:whitecafe0
來源:humankind吧
dnspy打開Amplitude.Mercury.firstpass.dll
找到Amplitude.Mercury.Simulation包下的DepartmentOfIndustry類
找這個方法private void ProcessOrderBuyoutConstructionAt(OrderBuyoutConstructionAt order)
其中有一行是this.majorEmpire.DepartmentOfTheTreasury.Pay(buyoutCost);
括弧裡給它改成this.majorEmpire.DepartmentOfTheTreasury.Pay(FixedPoint.Zero);
具體改法就是右鍵編輯IL指令(因為反編譯會因為引用外部dll無法再次編譯,為了省事直接幹IL)
找到調用Pay的這句:
26 004E callvirt instance void Amplitude.Mercury.Simulation.DepartmentOfTheTreasury::Pay(valuetype [Amplitude.Framework]Amplitude.FixedPoint)
然後找它前面一句,就是載入buyoutCost的那句,應該是ldloc.3,如果不是就看看前面的一個函數GetBuyoutCost之後存到第幾個位置了,應該有一句stloc.3和這個ldloc.3是對著的先存後讀的。
把ldloc.3給改成
25 0049 ldsfld valuetype [Amplitude.Framework]Amplitude.FixedPoint [Amplitude.Framework]Amplitude.FixedPoint::Zero
就是載入了一個FixedPoint.Zero這個靜態變數。如果怕寫錯就找一下這個變數,然後查它的引用,找一行讀取的IL指令複製過來,我就是這麼搞的。
保存進遊戲,造個建築,用金幣直接買,然後金幣不減少,修改成功。
其他修改應該也都不遠。有什麼好玩的修改希望大家多分享呀。小編我就不多廢話虐電腦去了。