綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

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

   關閉 [複製連結] 查看: 6024|回覆: 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)
回覆

使用道具 舉報

沙發
蔡承洋洋 | 收聽TA | 只看該作者
發表於 2016-2-13 23:44
爆氣被鎖就全部抖出來了欸大大
拿來參考看看
謝謝大大的爆氣XDDD

評分

參與人數 3碎鑽 +2 幫助 +3 收起 理由
asdfgqwert20 + 1 + 1 非常讃
wattdj + 1 好內容,老衲來為這篇文章開開光.
000qweasdzxc + 1 + 1 非常讃

查看全部評分

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

使用道具 舉報

板凳
garynice | 收聽TA | 只看該作者
發表於 2016-2-14 01:21
看了也不會懂....
但很感謝大大分享

評分

參與人數 3碎鑽 +2 幫助 +3 收起 理由
asdfgqwert20 + 1 + 1 非常讃
wattdj + 1 好內容,老衲來為這篇文章開開光.
000qweasdzxc + 1 + 1 非常讃

查看全部評分

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

使用道具 舉報

地板
andywai1124 | 收聽TA | 只看該作者
發表於 2016-2-14 02:06
看了也不會懂....很感謝大大分享
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
alextat911 | 收聽TA | 只看該作者
發表於 2016-2-14 14:00
嗯~這些都是在IL檔,我反而是不會改SKIP過場動畫,和顯示一隻怪而已,到了BOSS房還是會卡死

另外我懷疑是協力的時間太快會被鎖,有人指導一下神速協的時間在那邊修改嗎?

點評

QuestCompleteSendParam > .ctor 最底下RestTime  發表於 2016-2-14 20:33

評分

參與人數 2碎鑽 +1 幫助 +2 收起 理由
asdfgqwert20 + 1 + 1 QuestCompleteSendParam &gt; .ctor 最底下Res
wattdj + 1 好內容,老衲來為這篇文章開開光.

查看全部評分

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

使用道具 舉報

6
karro81290 | 收聽TA | 只看該作者
發表於 2016-2-14 23:07
在CharacterController

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

0.1 改做 6.1 即可


///穿牆

這段改了之後 人物會消失耶

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
asdfgqwert20 + 1 + 1 只改數字就好 不然你試試其他數值? 我是沒.

查看全部評分

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

使用道具 舉報

7
veayfat1979 | 收聽TA | 只看該作者
發表於 2016-2-15 00:48
由 手機網頁 發佈
感謝大大的教學希望以後版上多些這類教學文,別再有發改好的,有教學文想改的自己改後果自負,也不用擔心盜連去哪,又下載一堆不低調,相信自己動手改的也會用起來小心點

評分

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

查看全部評分

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

使用道具 舉報

8
dreadfire | 收聽TA | 只看該作者
發表於 2016-2-15 09:11
感謝大大的無私分享,作為初學者很感激大大的教學,自己動手豐衣足食

評分

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

查看全部評分

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

使用道具 舉報

9
veayfat1979 | 收聽TA | 只看該作者
發表於 2016-2-15 11:36
版大基本有用的都很詳細真心感謝,期待有人分享秒關,秒關+倍率刷素材必備,小弟會的也沒版大多只能期待有人分享或提示了

評分

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

查看全部評分

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

使用道具 舉報

10
dreadfire | 收聽TA | 只看該作者
發表於 2016-2-15 18:07
為什麼我找到的穿墻代碼沒辦法修改。。。

點評

找CharacterController  發表於 2016-2-15 20:03

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則