馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
本帖最後由 2153030 於 2015-8-15 20:47 編輯
有鑑於每個人需求不同,各個遊戲參數也會不同。也因為這版上似乎還沒有很完整的討論,希望各位先進可以一起補齊。
需要注意的是:官方伺服器都有紀錄,看他們要不要抓而已。出來混總是要還的。
工具篇:(個人僅列出我使用的工具檔名,GOOGLE不難找)
APK反編譯、重編譯工具:AdvancedApkTool_v4.1.0_i-mobi_CHT_v1.1
DLL decompile、recompile工具:reflexil.for.ILSpy.2.0-preview3
步驟篇:
1. 將欲修改APK丟到AdvancedApkTool/2-In裡面
2. 執行Advanced ApkTool.exe將其反編譯,檔案會到3-Out裡面
3. ILSpy讀取3-Out/欲修改的APK檔名.apk/assets/bin/Data/Managed/Assembly-CSharp.dll
4. 進行修改
5. 將修改過後的Assembly-CSharp.dll覆蓋回去
6. 執行Advanced ApkTool.exe將其重編譯並簽名,檔案會到4-Done裡面
修改篇:
從左邊選取欲瀏覽的項目,右邊視窗則會顯示該項目之CS程式碼(左上可切換成C#, VB, IL,看大家的截圖都是直接看IL語言,其實C#、VB算是比較高階的語言,建議不要切成IL喔!)
小弟目前只知道修改IL之方法,還請大大不吝指導從CS編寫之方法。
修改IL:
左上View -> Reflixil v2.0,右下會出現reflexil視窗
對照上下方CS及IL語言,更改IL指令
Create new...插入一條指令
Edit...編輯當前指令
Replace all with code...取代全部指令(小弟沒成功取代過orz)
修改完後,左邊視窗該項目 右鍵-> Update ILSpy object model,檢視修改過後的CS有沒有如你預期。
確認之後,Assembly-CSharp 右鍵-> Save as... ,儲存修改覆蓋回Assembly-CSharp.dll
參數篇:(個人僅列出我知道的,歡迎各位大大補齊)
六圍修改:Player.SetupParameterFromUnitModel
- int num = Util.Ftoi((float)(unit.Card.hp + unit.Card.addHp) * (1f + unit.TownAddHPRate * (1f + Singleton<InGameManager>.I.InGameLeaderSkill.BuildingEffectUpRate))); //HP倍率
複製代碼
主要是將1f + unit.TownAddHPRate的1改成你想要幾倍,2就是兩倍,依此類推
其餘五圍雷同,有幾個關鍵字分別是unit.TownAddSPRate、unit.TownAddAtkRate、unit.TownAddDefRate、unit.TownAddHitRate、unit.TownAddAgiRate
跑速修改:Player.GetRunSpeed
- return 3.5f * base.MoveSpeedCoefficient;
複製代碼
比較常見是改成6.5、7.5
結算修改:QuestCompleteSendParm.ctor
- this.gold = 30000; //金
- this.soul = 3000; //魂
- this.totalDamageCount = 0; //受到怪物的傷害次數
- this.totalDamageAmount = 0; //受到怪物的傷害
- this.totalDamageCountFromPlacementObject = 0; //受到陷阱的傷害
- this.totalDeadCount = 0; //全部死亡次數
- this.totalHelperDeadCount = 0; //協助者死亡次數
- this.totalBadStatusCount = 0; //負面狀況記數
- this.restTime = result.RestTime; //剩餘時間,用於神速SS,單位是毫秒
複製代碼
落物修改:InGameManager.CatchItem
- this.result.cardIds.Add(item.id); //我不太確定是什麼
- this.result.weaponIds.Add(item.id); //武器
- this.result.ornamentIds.Add(item.id); //裝飾物
- this.result.itemIds.Add(item.id); //石頭
複製代碼
這邊讓他loop 50圈,就是50倍
簡易do-while迴圈教學:
以CS為例,這邊就是讓this.result.itemIds.Add(item.id);跑5次
- int num = 0;
- do{
- this.result.itemIds.Add(item.id);
- num++;
- }
- while (num < 5);
複製代碼
IL語言:
- IL_0000: ldc.i4.0
- IL_0001: stloc.s 1 //儲存0到變數1
- // loop start (head: IL_01a0)
- IL_01a0: ldarg.0
- IL_01a1: ldfld class InGameManager/Result InGameManager::result
- IL_01a6: ldfld class [mscorlib]System.Collections.Generic.List`1<class XorInt> InGameManager/Result::itemIds
- IL_01ab: ldarg.1
- IL_01ac: ldfld int32 Item::id
- IL_01b1: call class XorInt XorInt::op_Implicit(int32)
- IL_01b6: callvirt instance void class [mscorlib]System.Collections.Generic.List`1<class XorInt>::Add(!0)
- IL_01bb: ldloc.s 1 //讀取變數1
- IL_01bd: ldc.i4.1
- IL_01be: add //變數1 + 整數1
- IL_01bf: stloc.s 1 //儲存變數1
- IL_01c1: ldloc.s 1 //讀取變數1
- IL_01c3: ldc.i4 5 //讀取整數5
- IL_01c8: blt.s IL_01a0 //若變數1小於整數5相等則跳至01a0位置
- // end loop
複製代碼
抱歉,文章打到一半有事,周末比較忙,我會找時間慢慢補齊我知道的資訊。 |
評分
-
查看全部評分
|