馬上加入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
//協力斷線
其實也只是複製貼上我的筆記而已
太外行了沒辦法
學會改這一點點東西也只是拿原版和修改版對照不同之處而已
感謝以前日版或台版的大神們
我玩得很開心
稍微改得像了點教學
覺得自己講得好複雜
在程式高手眼中應該只是個渣
我會改的全給了沒什麼好教的了
謝謝捧場
|
評分
-
查看全部評分
|