Android 台灣中文網

打印 上一主題 下一主題

[修改] 反正都會封了 大家就來學術交流吧哈哈 (IL中階教學)

   關閉 [複製連結] 查看: 6380|回覆: 39|好評: 0
跳轉到指定樓層
樓主
asdfgqwert20 | 收聽TA | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
發表於 2016-2-13 22:43

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
本帖最後由 asdfgqwert20 於 2016-3-3 16:28 編輯

我也被鎖沒心情玩了
把這半年來在這偷學到的東西PO出來給大家知道吧
但也不是全部都會改
秒過關我就一直不會

人物六圍和跑速基本那篇有教了
工具也是用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
自己小心用




        IL_01d1: ldarg.0
        IL_01d2: ldc.i4.0
        IL_01d3: stfld int32 QuestCompleteSendParam::totalDamageCount   ///受傷害次數0
        IL_01d8: ldarg.0
        IL_01d9: ldc.i4.0
        IL_01da: stfld int32 QuestCompleteSendParam::totalDamageAmount   ///也是受傷害次數0?
        IL_01df: ldarg.0
        IL_01e0: ldc.i4.0
        IL_01e1: stfld int32 QuestCompleteSendParam::totalDamageCountFromPlacementObject   ///受陷阱攻擊次數0
        IL_01e6: ldarg.0
        IL_01e7: ldc.i4.0
        IL_01e8: stfld int32 QuestCompleteSendParam::totalDeadCount   ///自己操控人物死亡次數0
        IL_01ed: ldarg.0
        IL_01ee: ldc.i4.0
        IL_01ef: stfld int32 QuestCompleteSendParam::totalHelperDeadCount   ///助人死亡次數0
        IL_01f4: ldarg.0
        IL_01f5: ldc.i4.0
        IL_01f6: stfld int32 QuestCompleteSendParam::totalBadStatusCount   ///受異常狀態次數0


///QuestCompleteSendParam > .ctor部分王冠條件簡單化








攻速


        IL_0000: nop
        IL_0001: ldc.r4 10
        IL_0006: stloc.0
        IL_0007: br.s IL_0009

        IL_0009: ldloc.0
        IL_000a: ret

///InGameLeaderSkill>GetAttackSpeedUpRate攻速10




IL 修改可穿牆:
在CharacterController

ldc.r4     0.1
UnityEngine.CharacterController::set_stepOffset(float32)

0.1 改做 6.1 即可


///穿牆





ProcessInGameRoomStatusResponsePacket 中
讓指定accessId實行下面這條代碼
CreateLoopBackRoomLeavePacket
就能讓該ID掉線

27 70 brtrue ->(36)Idloc.2 改成 ->(28)
IL_0046: brtrue IL_0066 改成 IL_0046: brtrue IL_004b


//協力斷線





其實也只是複製貼上我的筆記而已
太外行了沒辦法
學會改這一點點東西也只是拿原版和修改版對照不同之處而已
感謝以前日版或台版的大神們
我玩得很開心
 

稍微改得像了點教學
覺得自己講得好複雜
在程式高手眼中應該只是個渣
我會改的全給了沒什麼好教的了
謝謝捧場
 
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 25碎鑽 +27 經驗 +1 幫助 +26 技術 +2 收起 理由
kofdoaaa + 1 + 1 非常讃
Leung-Jacky + 5 + 1 + 3 + 2 很給力!
Kao145 + 1 + 1 非常讃
jeff37956 + 1 + 1 讚一個!
frantdr + 1 + 1 讚一個!
chennaimer + 1 + 1 非常讃
78513221s + 1 + 1 非常讃
aa41104 + 1 + 1 非常讃
ching4241 + 1 + 1 非常讃
唯楓希 + 1 非常讃

查看全部評分

收藏收藏10 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

34
大道寺稔 | 收聽TA | 只看該作者
發表於 2016-2-23 22:18
感谢楼主的分享,很详细,谢谢~

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
asdfgqwert20 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

33
黃盈錦 | 收聽TA | 只看該作者
發表於 2016-2-20 07:05
由 手機網頁 發佈
大哥這應該要很懂電腦的才看的懂但是還是謝謝你

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
asdfgqwert20 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

32
cj6ejo3w94 | 收聽TA | 只看該作者
發表於 2016-2-20 06:30
大家這是在討論哪個遊戲啊?

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
asdfgqwert20 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

31
AYAYA | 收聽TA | 只看該作者
發表於 2016-2-20 02:11
看完試下自己改不改到

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
asdfgqwert20 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

30
veayfat1979 | 收聽TA | 只看該作者
發表於 2016-2-19 23:43
有會秒關的大神發個題示嗎?跪求感恩
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

29
FIRST777 | 收聽TA | 只看該作者
發表於 2016-2-19 20:04
大大有咒拳弓仗的材料ID么
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

28
alextat911 | 收聽TA | 只看該作者
發表於 2016-2-19 16:33
改好了1051的基本版+怪自死,寶箱,怪物50倍,但還想請教樓主,寶物數和怪物數怎變成出現1隻,因為改太大,超級卡。。。。。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

27
dreadfire | 收聽TA | 只看該作者
發表於 2016-2-19 11:20
看來是我想太多啦再次謝謝大大~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

26
dreadfire | 收聽TA | 只看該作者
發表於 2016-2-18 17:32
大大。我還想厚著臉皮問問,有辦法改非寶箱里掉落符石的倍率嗎?

點評

Y大都改不出來了 我怎麼行= ="  發表於 2016-2-18 20:15
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則