Android 台灣中文網
標題: 白貓修改 簡易教學+位置彙整 [打印本頁]
作者: 2153030 時間: 2015-8-8 15:48
標題: 白貓修改 簡易教學+位置彙整
本帖最後由 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
複製代碼
抱歉,文章打到一半有事,周末比較忙,我會找時間慢慢補齊我知道的資訊。
作者: MariusCheng 時間: 2015-8-8 18:37
多謝分享
InGameManager.CatchItem終於知道了
作者: king959818 時間: 2015-8-8 18:59
感謝樓主無私分享
作者: MCC2007 時間: 2015-8-8 19:02
贊一個~
作者: 歹頑狼 時間: 2015-8-8 19:07
感謝大大分享
作者: andyt0621 時間: 2015-8-8 19:14
本帖最後由 andyt0621 於 2015-8-8 19:30 編輯
結算修改 跟 落物修改 有什麼分別嗎?
---
沒事了..打開發現一個修改金魂一個石頭 =.=
作者: king959818 時間: 2015-8-8 19:22
我猜落物修改大概是符石倍率,結算應該是金魂
作者: king750816 時間: 2015-8-8 19:23
請問我照棣1個步驟把APK放進 2-In
按執行Advanced ApkTool反編譯檔案跑不進去 3-Out裡面
是還要做甚麼設定嗎
作者: MariusCheng 時間: 2015-8-8 19:31
符石倍率哪個可以修改, 害怕改錯
作者: 脱掉小红帽 時間: 2015-8-8 20:41
不管做什么事都会出错,人就是在出错中成长的
作者: 2153030 時間: 2015-8-8 21:07
先安裝框架試試看
作者: appletext01 時間: 2015-8-8 22:16
本帖最後由 appletext01 於 2015-8-9 14:52 編輯
符石倍率tips: InGameManager::CatchItem 0x32(16進制) = 50(10進制) ; 0x64=100倍
作者: 雪白 時間: 2015-8-8 23:08
謝謝喔
作者: king959818 時間: 2015-8-9 00:29
嘗試了一晚.....光看一堆字串已經頭昏腦脹....別說修改了....(哭
作者: knsrjay0207 時間: 2015-8-9 00:45
大大感謝
作者: gey 時間: 2015-8-9 01:02
感謝樓主無私分享
作者: akko 時間: 2015-8-9 01:03
感謝大大無私分享
作者: apktwkc 時間: 2015-8-9 01:08
感謝一下~~~ 近日太忙有空去看看那些未看過的位置
作者: asjj 時間: 2015-8-9 02:01
本帖最後由 asjj 於 2015-8-9 12:54 編輯
請教一下,守護女神像的血量可以修改么
目前找到了PlacementObject但是沒法區分destorytarget和defencetarget
作者: doihansuke 時間: 2015-8-9 09:13
感謝大大分享
作者: ching4241 時間: 2015-8-9 09:36
謝謝分享!
作者: andyt0621 時間: 2015-8-9 10:03
本帖最後由 andyt0621 於 2015-8-9 10:09 編輯
一定要轉為IL再修改嗎..
我只對C有研究過 =.=
---
剛發現CalculateHealValue 應該是回復量/SP回收量吧
作者: 2153030 時間: 2015-8-9 20:00
程式碼沒錯
可能沒有正確覆蓋過去
直接按save as 後面會自動加.patched
正確應該要跳出"確定要儲存?"的警告視窗
作者: dream01931 時間: 2015-8-9 20:20
改6圍Assembly-CSharp.dll和UnityEngine.dll是不是都必須修改到呢?
因為用原檔改Assembly-CSharp.dll沒效果
後來加入大大的UnityEngine.dll版本才有效
作者: 2153030 時間: 2015-8-9 21:14
奇怪 不用啊 我修改Assembly-CSharp.dll就可以了
作者: 2153030 時間: 2015-8-9 21:22
當然要, 我們主要是修改、取代原本的Assembly-CSharp.dll
因為機器被設定讀取Assembly-CSharp.dll 而非Assembly-CSharp.patched.dll
Assembly-CSharp.patched.dll的內容就算你已經改到可以飛天遁地、怪物寶箱看到你就自爆也是不會被讀取
這樣了解嗎XD
作者: ternoy 時間: 2015-8-9 23:23
感謝大大分享,想請教大大免root要如何做?
作者: ternoy 時間: 2015-8-10 01:42
修改後APK只有十幾MB= ="
用不了簽名檔/_\
作者: wowerew 時間: 2015-8-10 02:13
請教~我使用原版檔案 改跑速 沒看到東西 可是改其他人修改好的卻有 ldc.R4 這個值
所以是要自行打上這行參數嗎
作者: dk54555 時間: 2015-8-10 02:58
大大。想請問我是用IL做修改。可是不知道固定金魂跟符石怎麼修改。能請大大提示嗎?
作者: ternoy 時間: 2015-8-10 04:39
落物修改:InGameManager.CatchItem
大大可以教一下怎修改倍率嗎??
找了其他大大的做了對比, 好似跟原版的都已經完全不同了=口=
作者: andyt0621 時間: 2015-8-10 13:32
本帖最後由 andyt0621 於 2015-8-10 13:36 編輯
對IL真的完全不會..
可能我SAVE CODE修改C#之後用VS compile成DLL比較好=]
作者: apktwkc 時間: 2015-8-10 23:04
大大你好,找到了 InGameManager::CatchItem
但內容看不懂,具體甚麼是要改的呢?
謝謝!