綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 有個問題需要大佬們幫助

 關閉 [複製連結] 查看: 1833|回覆: 15|好評: 0
跳轉到指定樓層
ziyuaner2 | 收聽TA | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
發表於 2016-1-4 11:12
100碎鑽
public void FixedUpdate()
{
if ((this._mode == eMode.Generate) && this.GenerateEnemy())
{
if (this._nNowWave < (BattleDataManager.GetEnemyList().Length – 1))
{
this._mode = eMode.Battle;
}
else
{
this._mode = eMode.Empty;
}
this._berserkTime = 30f;
}
this._FieldJobType = 0;
foreach (CharaBehavior behavior in this._battleManager.GetMemberList(eCharaType.ENEMY, true, false, true, false))
{
this._FieldJobType |= ((int) 1) << behavior._param.jobType;
}
}

這是國服FixedUpdate() : Void的函數……

和台服日服略有不同……請問一下到底怎麼才能做到1WAVE啊?求教各路大神了!!100碎鉆雙手奉上
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏2 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

14
 樓主| ziyuaner2 | 收聽TA | 只看該作者
發表於 2016-1-6 17:54
星幻。 發表於 2016-1-6 14:13
我看你本來就有準備學習才教你.. 我一直都不怎麼關心論壇的東西(碎鑽能吃的嗎?) 真心不知道有什麼用XD
我 ...

嗯嗯,多謝星大~~其實我也不知道碎鑽到底有什麼用……嘿嘿
閱讀權限是可以通過每週任務加一點經驗的。
perfare大是高手,他的博客上面的東西都相當高深~~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

13
星幻。 | 收聽TA | 只看該作者
發表於 2016-1-6 14:13
ziyuaner2 發表於 2016-1-6 12:40
多謝各位大大的不吝賜教……小弟我終於解決了多個月的困擾……也麻煩各位大大許久不勝惶恐……
各位大大說 ...

我看你本來就有準備學習才教你.. 我一直都不怎麼關心論壇的東西(碎鑽能吃的嗎?) 真心不知道有什麼用XD
我只知道我閱讀權限很低XD 不過能看到這區一般留討論已經學會了很多..

perfare大才是高手.. 他也很樂意教別人.. 所以你應該感謝他
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

12
 樓主| ziyuaner2 | 收聽TA | 只看該作者
發表於 2016-1-6 12:40
多謝各位大大的不吝賜教……小弟我終於解決了多個月的困擾……也麻煩各位大大許久不勝惶恐……
各位大大說的都是正確的,但是最佳答案只能給一個我就給第一個回覆我的星大了~
per大對不住啦~
這樁事了了,我深刻認識到自己就是個小白,準備好好學習一下IL了
謝謝~~~~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

11
 樓主| ziyuaner2 | 收聽TA | 只看該作者
發表於 2016-1-6 11:15
嗯嗯,兩位大佬指教的是……我這回弄完就準備好好學習一下IL這一塊……多謝~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

10
星幻。 | 收聽TA | 只看該作者
發表於 2016-1-6 09:22
本帖最後由 星幻。 於 2016-1-6 09:23 編輯

你手邊有C#碼.. 你再跟il碼相對觀察.. 不看perfare大的提示的話.. 請看一下有哪些地方你可以肯定的參數.. 比如:
L_003f: ldc.r4 30
L_0044: stfld float32 EnemyManager::_berserkTime

這個可以肯定 有30 這數字參數的地方... 而且 berserkTime 這變量很明顯就是要修改的地方之下..

那就再往上找一下就不難理解..

perfare大說的對.. 你應該去學習一下il
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

9
星幻。 | 收聽TA | 只看該作者
發表於 2016-1-6 09:15
perfare 發表於 2016-1-6 01:24
你應該去學下IL代碼

嘿.. 我一直沒有用這種直接提示去教他.. 因為自己找方法才可以真正學會.. XD
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

8
perfare | 收聽TA | 只看該作者
發表於 2016-1-6 01:24
本帖最後由 perfare 於 2016-1-6 01:29 編輯

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

使用道具 舉報

7
 樓主| ziyuaner2 | 收聽TA | 只看該作者
發表於 2016-1-5 23:22
本帖最後由 ziyuaner2 於 2016-1-5 23:47 編輯
perfare 發表於 2016-1-5 02:56
在我博客上留言的是你呀。。。
ldc.i4.2


public void FixedUpdate()
{
    if ((this._mode == eMode.Generate) && this.GenerateEnemy())
    {
        if (this._nNowWave < (BattleDataManager.GetEnemyList().Length - 1))
        {
            this._mode = eMode.Battle;
        }
        else
        {
            this._mode = eMode.Empty;
        }
        this._berserkTime = 30f;
    }
    this._FieldJobType = 0;
    foreach (CharaBehavior behavior in this._battleManager.GetMemberList(eCharaType.ENEMY, true, false, true, false))
    {
        this._FieldJobType |= ((int) 1) << behavior._param.jobType;
    }
}




  public void FixedUpdate()
{
    if ((this._mode == eMode.Generate) && this.GenerateEnemy())
    {
        if (this._nNowWave < (BattleDataManager.GetEnemyList().Length - 1))
        {
            this._mode = eMode.Battle;
        }
        else
        {
            this._mode = eMode.Empty;
        }
        this._berserkTime = 30f;
    }
    this._FieldJobType = 0;
    foreach (CharaBehavior behavior in this._battleManager.GetMemberList(eCharaType.ENEMY, true, false, true, false))
    {
        this._FieldJobType |= ((int) 1) << behavior._param.jobType;
    }
}
對應IL過來就是
.method public hidebysig instance void FixedUpdate() cil managed
{
    .maxstack 17
    .locals init (
        [0] class [mscorlib]System.Collections.Generic.List`1<class CharaBehavior> list,
        [1] class CharaBehavior behavior,
        [2] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator`0<class CharaBehavior> enumerator)
    L_0000: ldarg.0
    L_0001: ldfld valuetype EnemyManager/eMode EnemyManager::_mode
    L_0006: ldc.i4.1
    L_0007: bne.un L_0049
    L_000c: ldarg.0
    L_000d: call instance bool EnemyManager::GenerateEnemy()
    L_0012: brfalse L_0049
    L_0017: ldarg.0
    L_0018: ldfld int32 EnemyManager::_nNowWave
    L_001d: call class EnesetList[] BattleDataManager::GetEnemyList()
    L_0022: ldlen
    L_0023: conv.i4
    L_0024: ldc.i4.1
    L_0025: sub
    L_0026: bge L_0037
    L_002b: ldarg.0
    L_002c: ldc.i4.2
    L_002d: stfld valuetype EnemyManager/eMode EnemyManager::_mode
    L_0032: br L_003e
    L_0037: ldarg.0
    L_0038: ldc.i4.6
    L_0039: stfld valuetype EnemyManager/eMode EnemyManager::_mode
    L_003e: ldarg.0
    L_003f: ldc.r4 30
    L_0044: stfld float32 EnemyManager::_berserkTime
    L_0049: ldarg.0
    L_004a: ldc.i4.0
    L_004b: stfld int32 EnemyManager::_FieldJobType
    L_0050: ldarg.0
    L_0051: ldfld class BattleManager EnemyManager::_battleManager
    L_0056: ldc.i4.1
    L_0057: ldc.i4.1
    L_0058: ldc.i4.0
    L_0059: ldc.i4.1
    L_005a: ldc.i4.0
    L_005b: callvirt instance class [mscorlib]System.Collections.Generic.List`1<class CharaBehavior> BattleManager::GetMemberList(valuetype eCharaType, bool, bool, bool, bool)
    L_0060: stloc.0
    L_0061: ldloc.0
    L_0062: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator`0<!0> [mscorlib]System.Collections.Generic.List`1<class CharaBehavior>::GetEnumerator()
    L_0067: stloc.2
    L_0068: br L_0095
    L_006d: ldloca.s enumerator
    L_006f: call instance !0 [mscorlib]System.Collections.Generic.List`1/Enumerator`0<class CharaBehavior>::get_Current()
    L_0074: stloc.1
    L_0075: ldarg.0
    L_0076: dup
    L_0077: ldfld int32 EnemyManager::_FieldJobType
    L_007c: ldc.i4.1
    L_007d: ldloc.1
    L_007e: ldfld class BattleParam CharaBehavior::_param
    L_0083: callvirt instance valuetype JOB_TYPE BattleParam::get_jobType()
    L_0088: ldc.i4.s 0x1f
    L_008a: and
    L_008b: ldc.i4.s 0x1f
    L_008d: and
    L_008e: shl
    L_008f: or
    L_0090: stfld int32 EnemyManager::_FieldJobType
    L_0095: ldloca.s enumerator
    L_0097: call instance bool [mscorlib]System.Collections.Generic.List`1/Enumerator`0<class CharaBehavior>::MoveNext()
    L_009c: brtrue L_006d
    L_00a1: leave L_00b2
    L_00a6: ldloc.2
    L_00a7: box [mscorlib]System.Collections.Generic.List`1/Enumerator`0<class CharaBehavior>
    L_00ac: callvirt instance void [mscorlib]System.IDisposable::Dispose()
    L_00b1: endfinally
    L_00b2: ret
    .try L_0068 to L_00a6 finally handler L_00a6 to L_00b2
}
完全不知道該怎麼辦了?。。。。你說的這個看不太明白,而且也沒有找到你說的這個ldc.i4.s這個……這個紅色的Battle在下面的IL裏面對應的是哪個啊?怎麼才能改成Empty....
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

6
 樓主| ziyuaner2 | 收聽TA | 只看該作者
發表於 2016-1-5 16:32
perfare 發表於 2016-1-5 02:56
在我博客上留言的是你呀。。。
ldc.i4.2

哈哈,大神好~~~~~~~多謝你一如既往不吝賜教~~~~~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

5
perfare | 收聽TA | 只看該作者
發表於 2016-1-5 02:56
在我博客上留言的是你呀。。。
ldc.i4.2        <- 把這個改的跟下方的eMode.Empty一樣,比如日服是ldc.i4.s        10
call        System.Void EnemyManager::set_kEMode(EnemyManager/eMode)
這樣改有個明顯的問題就是回傳的wave數是2,雖然不管怎麼改都是五十步笑百步罷了。。。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

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

本版積分規則