冰楓論壇

標題: 【轉貼】白貓修改交流 完整討論筆記 [打印本頁]

作者: yoyodiy    時間: 2016-2-15 17:20
標題: 【轉貼】白貓修改交流 完整討論筆記

人物六圍和跑速基本那篇有教了
工具也是用AdvancedApkTool_v4.1.0_i-mobi_CHT_v1.1解包和打包
ILSpy_Master_2.3.1.1855_Binaries配Reflexil修改
Reflexil改完按左側項目右鍵 > updateXXX...
看C#能不能呈現
能呈現就是半成功
實際如何我還是會去遊戲裡測試才能曉得
基本操作
在一行指令上方加入新的一行指令
右鍵 > create new > 輸入完成後insert before selection
想在最底行新增就按append
編輯一行指令按右鍵 > edit
刪除特定複數指令可按ctrl選取再行delete
拖曳一行指令至另一行指令可將指令移至該指令上方或下方
修改位置可用Ctrl+F搜尋
例搜尋catchitem
search for改成Member可搜到
部分type說明
int32 = 整數如10
single = 有小數點的數字如7.5
instruction reference = 指令位置
type reference = 變數,想成數學的算數前假設x
落物100倍
在InGameManage>catchitem
variables新增變數1
variables標籤頁右鍵create new
name隨便打
type scope選type reference
type選mscorlib > commenXXX... > system > 選int32按ok > Append
        IL_0000: ldc.i4.0
        IL_0001: stloc.s 1   ///放在最上方或以下的ldarg.0上方都行,這行記得type選type reference
        IL_019b: call instance void InGameManager::AddItemGetLog(string)
        // 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
                IL_01bd: ldc.i4.1
                IL_01be: add
                IL_01bf: stloc.s 1
                IL_01c1: ldloc.s 1
                IL_01c3: ldc.i4 100
                IL_01c8: blt.s IL_01a0   ///這種抓指令位置的type選instruction reference, 這行記得抓到ldfld class InGameManager/Result InGameManager::result上方的ldarg.0
        // end loop
        IL_01ca: call !0 class Singleton`1<class SoundManager>::get_I()
////InGameManage>catchitem_do while循環,落物100倍
總之重點在
callvirt instance void class [mscorlib]System.Collections.Generic.List`1<class XorInt>::Add(!0)
call !0 class Singleton`1<class SoundManager>::get_I()
的中間插入
ldloc.s 1
ldc.i4.1
add
stloc.s 1
ldloc.s 1
ldc.i4 100 ///依需求更改數量
blt.s IL_01a0
金魂修改
在QuestCompleteSendParam > .ctor
        IL_00a3: ldarg.0
        IL_00a4: call instance void [mscorlib]System.Object::.ctor()
        IL_00a9: ldarg.0
        IL_00aa: ldc.i4 329
        IL_00af: ldc.i4 14752
        IL_00b4: call int32 [UnityEngine]UnityEngine.Random::Range(int32, int32)
        IL_00b9: stfld int32 QuestCompleteSendParam::gold
        IL_00be: ldarg.0
        IL_00bf: ldc.i4 97
        IL_00c4: ldc.i4 1248
        IL_00c9: call int32 [UnityEngine]UnityEngine.Random::Range(int32, int32)
        IL_00ce: stfld int32 QuestCompleteSendParam::soul
////QuestCompleteSendParam > .ctor 金魂固定區間,金329~14752,魂97~1248
ldarg.1
ldfld class XorInt InGameManager/Result::gold
call int32 XorInt::op_Implicit(class XorInt)
stfld int32 QuestCompleteSendParam::gold
刪除call和ldfld兩行
ldarg.1編輯
要固定就改成
ldc.i4 14752
QuestCompleteSendParam > .ctor其他修改
例最下方的
ldarg.1
callvirt instance class XorInt InGameManager/Result::get_RestTime()
call int32 XorInt::op_Implicit(class XorInt)
stfld int32 QuestCompleteSendParam::restTime
callvirt call兩行刪除
ldarg.1改成ldc.i4.0
可讓restTime=0
即是剩餘時間0
改成idc.i4、type int32、數字100000
可讓restTime=100000微秒=100秒鐘=1:40
神速破關成績會固定1:40
自己小心用

作者: aaaaaaaaaa    時間: 2016-2-16 23:11
謝謝大神
這是最新的修改版本嗎




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓