三国群英2吧 关注:45,935贴子:1,015,583

求证:原版有见过生死门吸将吗?

只看楼主收藏回复

如题。
之前试图“修复”过一次。这次反汇编完成后,重新看生死门武将技的代码,发现原版就有对目标是否为敌方主将的明确判断,似乎不可能有问题。修改版使用EXE组合武将技/触发武将技式必杀技,可能导致吸将,因为在武将技施放过程中突然触发必杀技有可能导致预设变量被重置,而原版生死门没有对目标是否为我方主将的判断。但原版似乎不可能出现这种情况。
因此向各位求证一下。


IP属地:美国1楼2020-04-07 13:21回复
    听说有没见过。。还有巨石打将一样有人说能造成伤害但是我没遇到过


    IP属地:广东来自Android客户端2楼2020-04-07 13:51
    回复
      2026-01-19 19:35:43
      广告
      不感兴趣
      开通SVIP免广告
      一直玩无任何修改的原版,五岳华斩,会死循环,
      生死门没碰到过。


      IP属地:江苏来自Android客户端3楼2020-04-07 14:24
      收起回复
        我也没遇到过,听说是早期版本才有的


        4楼2020-04-07 15:12
        回复
          原版百年难遇也会吸将


          IP属地:江苏来自iPhone客户端9楼2020-04-07 22:31
          回复
            小学五年级的时候见过,当时用了技能秘籍


            IP属地:山东来自Android客户端10楼2020-04-07 22:32
            回复
              原版是单线程的,没做线程安全处理导致。某些版本意外产生多线程效果(未判断主将overwhelming状态)


              IP属地:广东来自Android客户端11楼2020-04-08 09:12
              收起回复
                大神出现,围观一下。


                IP属地:江苏来自Android客户端12楼2020-04-08 09:26
                回复
                  2026-01-19 19:29:43
                  广告
                  不感兴趣
                  开通SVIP免广告
                  原版玩了很多次没有遇见过


                  IP属地:日本来自iPhone客户端13楼2020-04-08 13:51
                  回复
                    请遇到过, 生死门吸将的同学,共享下你的版本,学习下怎么多线程的。


                    IP属地:江苏来自Android客户端14楼2020-04-08 18:34
                    回复
                      我见过落石砸死敌将的,还真没见过生死门吸死的,感觉生死门性价比实在太低


                      IP属地:浙江15楼2020-04-09 10:59
                      回复
                        忘了补这个贴了。
                        剑心的视频里面,触发吸将的机制其实很明显了,他在放出地狱之门后,又用LXXX让电脑放武将技。
                        (1) 地狱之门在寻找目标时,以intvIsLeft的敌方为目标,Engulf函数会将所有潜在目标放在一个局部数组v1里面:
                        v233 = 0;
                        while ((v233 < v232)) {
                        v1[v233] = GetNthSoldierInRect((intvIsLeft ^ 1), v236, v237, v241, v242, v233);
                        v233++;
                        }
                        (2) 上面这步结束后,生死门杀伤触发之前,玩家手动触发LXXX。此时,intvIsLeft, intvAttackerMajor, intvDefenderMajor三个预设变量分别被重置为电脑方、电脑主将和玩家主将;
                        (3) Engulf函数继续执行,触发生死门杀伤,对每一个潜在目标逐个判断是否与敌方主将intvDefenderMajor相等,如果不相等则吸入生死门:
                        if ((GetObjectContext(v1[v233], 0) != 123) && (v1[v233] != intvDefenderMajor)) {
                        asynccall KillMan(v1[v233], a0);
                        }
                        此时,电脑方主将在v1数组里,但intvDefenderMajor已被重设为我方主将,因此这条判断就无法生效,继续执行KillMan函数,导致电脑方主将被吸走。
                        解决方法也很简单:只需要求目标和双方主将都不等即可。
                        if ((GetObjectContext(v1[v233], 0) != 123) && (v1[v233] != intvDefenderMajor && v1[v233] != intvAttackerMajor)) {
                        asynccall KillMan(v1[v233], a0);
                        }


                        IP属地:美国本楼含有高级字体16楼2020-04-10 13:22
                        回复
                          结论:原版不使用秘籍时是无法触发生死门吸将的


                          IP属地:美国本楼含有高级字体17楼2020-04-10 13:23
                          回复
                            大佬有心了,解释也很详细


                            IP属地:山东来自Android客户端18楼2020-04-10 13:28
                            回复