綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

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

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

使用道具 舉報

沙發
星幻。 | 收聽TA | 只看該作者
發表於 2016-1-4 11:12
手邊沒有國服版.. 但應該大同小異..

已私訊你.. 你試試看..
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

板凳
yifeixuer | 收聽TA | 只看該作者
發表於 2016-1-4 15:19
if (this._nNowWave < (BattleDataManager.GetEnemyList().Length – 1))
{
this._mode = eMode.Battle;
}
else
{
this._mode = eMode.Empty;

eMode.Battle 修改成 eMode.Empty 所有版本都可以這麼修改。比較簡單
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

地板
 樓主| ziyuaner2 | 收聽TA | 只看該作者
發表於 2016-1-4 19:40
yifeixuer 發表於 2016-1-4 15:19
if (this._nNowWave < (BattleDataManager.GetEnemyList().Length – 1))
{
this._mode = eMode.Battle;

已經有大佬這樣教過我了……但是沒有效果啊   還是我修的不對?
我是這麼修的   用reflector打开dll,找到FixedUpdate() : Void,里面eMode.Battle;,點擊Battle左邊有它的子目錄一樣的東西,右鍵reflexil用rename修改成Empty,然后再总DLL上右鍵save as就成了。是不是這麼修是錯誤的?。。。麻煩大佬們了

點評

在FixedUpdate() : Void中修改啊 不是修改名稱  發表於 2016-1-4 19:51
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

5
 樓主| ziyuaner2 | 收聽TA | 只看該作者
發表於 2016-1-4 21:56
ziyuaner2 發表於 2016-1-4 19:40
已經有大佬這樣教過我了……但是沒有效果啊   還是我修的不對?
我是這麼修的   用reflector打开dll,找到 ...

那請問怎麼修改啊?。。。能稍微詳細一點教一下么?。。。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

6
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)
回覆

使用道具 舉報

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

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

使用道具 舉報

8
 樓主| 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)
回覆

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

本版積分規則