mugen吧 关注:79,108贴子:1,494,322
  • 38回复贴,共1

有没有方法让1p所受伤害值转移到3p身上?

只看楼主收藏回复

而且是在1p生命值为1(noko所以不会死)的情况下。。
本来如果不是1的话就可以用两个变量记录受击前跟受击后的生命值然后把差用lifeadd移到parner,可是现在不行噜
各位有木有神马好idea?


IP属地:广东1楼2016-11-07 17:42回复
    凶恶没涉及。但还是有点想法的。隐藏本体,使用player型helper覆盖自己的位置。血量基本参数依旧1000,但用life set


    IP属地:上海来自Android客户端3楼2016-11-07 19:24
    收起回复
      [state -2, ];计算damage
      type = varset
      trigger1 = time%2 = 0
      var(36) = helper(9742),life
      [state -2, ];计算damage
      type = varset
      trigger1 = time%2 = 1
      var(37) = helper(9742),life
      [state -2, ];计算damage
      type = varset
      trigger1 = 1
      var(38) = var(36)-Var(37)
      [state -2, ];debug
      type = DisplayToClipboard
      trigger1 = 1
      text="The value of var(36) is %d,%i,%f"
      params = var(36),var(37),var(38)
      @simon99514 根据你的想法,“隐藏本体、使用player型helper覆盖自己的位置” 的代码已编写完成;剩下的是把helper的生命值差(damage)传递至p3,以上代码为计算过程,var36与37一直相等,var(38)一直为0,求解(也用gametime试过,一样)。另外就是在本体的剪贴板三项均为0,数值是在helper的剪贴板看到的。


      IP属地:广东4楼2016-12-29 23:18
      收起回复
        是像螺丝老伊那样和队友生命共享?还是做个共享生命值的分身?


        5楼2016-12-29 23:23
        收起回复
          本体常时lifeset用变量控制血量会比较方便,然后队友掉血两个做法一个是永续target一个是亲捏造,前者写法简单但是不能应对所有的人物后者准备工作麻烦一点但是适用面广,看需求吧


          IP属地:浙江来自Android客户端10楼2016-12-30 10:42
          收起回复
            [State 0, Null]
            type = Null
            trigger1 = var(36):=helper(9742),life ||1
            trigger1 = var(38):=var(37)-var(36)
            trigger1 = var(37):=helper(9742),life ||1
            ignorehitpause = 1
            首先如果使用time参数的话,容易在转换state的时候出现错误,然后是,用%2来计算的话你没法分辨这个差是伤害还是回复,所以这里最好用上面的那个简单的差分代码。
            如果按照你说的38参数没变的话,很可能是因为HELPER本身的生命没有变化,如果的HELPER使用的是全程覆盖的话,必须覆盖到一个MOVETYPE =H的状态,否则需要自己减去gethitvar(damage)。
            另外如果你只是把自己濒死的时候的伤害转移给队友,那么这样检测是可以的,但是如果是想要把队友的濒死伤害转移给自己基本上是很困难的。
            生命共享在MUGEN里并不好实现,都或多或少会有些BUG在。我建议使用类似ADELHELL那种模式,濒死之后锁定为1血不死,然后gethitvar(damage)转移给队友,队友也变为1血时解除不死状态。
            我个人并不是很推荐使用HELPER代替受击这种写法,因为会影响对方的AI,如果要用的话,建议本体写上stateno = helper(XXX),stateno 和HELPER受击时,本体MOVETYPE = H,非受击时 =I,攻击时 =A
            当然如果是“我就是要坑AI管你P事”,或者”对方AI检测不出来管我P事”的人可以无视这一点。


            IP属地:广东11楼2016-12-30 12:31
            收起回复
              2.36与37参数都有变化,且一直一致,用剪贴板看过;
              A:因为代码写的位置的问题,你用我给你那个代码就不会有问题了。38是可以确切读出生命损失的(加血会是负的,可以按需求自己取舍)
              3.如果用gethitvar(damage)的话lifeadd的伤害就检测不出来了吧?
              A:是的,LIFE ADD必须用HELPER代替或者使用其他代替方案,比如进入濒死状态之后自身血量变成50%,然后队友死的时候自己也死,缺点是如果队友也用这个代码,就会无限循环,2个人都不死。
              4.用helper是因为p1生命值恒为1,无法用差的方式算出伤害才用的,迫不得已惹;
              A:如果要实现你说的效果,HELPER绝对是最理想,的除了会对AI造成影响。
              5.对AI的调整受教了,虽然我也是”对方AI检测不出来管我P事”派的人哈哈。
              A:一般来说如果对方的AI是简易AI的话,只要绑定就可以了,但是越高的AI,检测的东西越多越会被这样的AI杀手坑掉。
              6,mugen的程序是1gametime运行1次吗?如果是的话按道理来说应该可以用gametime%2的,但还是木有用惹。。
              是一帧运行一次,按照道理来说你那个写法是可以的,但是为什么会出问题我也不清楚,可以想到的是如果你的代码写在了-3或者-1下,被带入P2就无法运行。或者受到了某些暂停效果,或者你把这些代码写在了selfstate后面。或者ETC.
              可以想到的可能性太多,不清楚你实际是哪一种,一般来说用上面的差分写法大部分情况可以正常运行。


              IP属地:广东12楼2016-12-30 13:58
              收起回复
                [State 0, Null]
                type = Null
                trigger1 = var(36):=helper(9742),life ||1
                trigger1 = var(38):=var(37)-var(36) ||1
                trigger1 = var(37):=helper(9742),life ||1
                ignorehitpause = 1
                上面的代码复制的时候少了一段。


                IP属地:广东14楼2017-01-01 15:07
                回复
                  愚昧,用加减法和变量计算自己少了的血,就得出收到伤害的真实数字了,然后再依靠永续给到对方身上就行...


                  IP属地:河北15楼2017-01-01 21:47
                  回复