有没有方法让1p所受伤害值转移到3p身上?
mugen吧
全部回复
仅看楼主
level 5
而且是在1p生命值为1(noko所以不会死)的情况下。。
本来如果不是1的话就可以用两个变量记录受击前跟受击后的生命值然后把差用lifeadd移到parner,可是现在不行噜[阴险]
各位有木有神马好idea?[乖]
2016年11月07日 09点11分 1
level 15
凶恶没涉及。但还是有点想法的。隐藏本体,使用player型helper覆盖自己的位置。血量基本参数依旧1000,但用life set
2016年11月07日 11点11分 3
你好,请看4楼。
2016年12月29日 15点12分
level 5
[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的剪贴板看到的。
2016年12月29日 15点12分 4
把time改成gametime
2016年12月30日 02点12分
@VoIcrz_R 试过了,也是木有反应额。。
2016年12月30日 05点12分
除了改成gametime外,这写法有可能是负数值,需要用绝对值啊。
2016年12月30日 07点12分
哦,发现问题了。38的赋值条件不应该是1,而要用helper(xx), movetpye=H
2016年12月30日 07点12分
level 11
是像螺丝老伊那样和队友生命共享?还是做个共享生命值的分身?
2016年12月29日 15点12分 5
啊那篇我也有看过,不过不是很懂,好像有点不一样。我想要做成的是p1血为0时不死并与p3共享p3的生命值。不死的代码已经完成了,helper也已做好,只剩生命值共享的问题。
2016年12月29日 16点12分
@犬夜叉he犬夜叉 我有办法把自己的血量绑定在队友上,但没办法反过来,分个变量出来varset为队友的血量就行,之后就是自己做了
2016年12月29日 23点12分
@AnkESar·ScOeR 这种方法貌似也行,只是关键是如何在P1生命值为1的状态下获得damage跟lifeadd伤害的数呢?
2016年12月30日 05点12分
@犬夜叉he犬夜叉 记得DAMAGE也会照常获得的,DAMAGE是另外一个数值,并不与血量直接挂钩,LIFEADD就没什么好办法了,只能说和螺丝老伊那样把自己的血量按百分比绑定在队友上面,但这样做相当于自身无敌,只能打死队友
2016年12月30日 05点12分
level 13
本体常时lifeset用变量控制血量会比较方便,然后队友掉血两个做法一个是永续target一个是亲

造,前者写法简单但是不能应对所有的人物后者准备工作麻烦一点但是适用面广,看需求吧
2016年12月30日 02点12分 10
看那篇文章分析的永续target貌似有很多副作用,例如hit数什么的;另外亲捏造貌似以我的水平弄不出来额,不过好像如果可以知道damage和lifeadd的地址直接给P3去减也不错
2016年12月30日 05点12分
@犬夜叉he犬夜叉 []前者比较人性化,队友不让你永续的时候你就不能共享生命,后者就比较强硬,管你给不给我共享,我就是要用。看你做人物是什么思路。以及targetlifeadd的值推荐不要用上面的公式计算,直接检测helper,gethitvar(damage),这样更准确
2016年12月30日 22点12分
@幽鬼の刀刃 gethitvar(damage)检测不出lifeadd型的伤害额,所以才想用这种方式惹。。
2016年12月31日 06点12分
@犬夜叉he犬夜叉 我知道这样会忽略掉带入p2时候的伤害。不过本身要检测血量的变动其实就是比较繁琐的工作。 我没法给出更精准的办法
2017年01月01日 08点01分
level 8
[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事”的人可以无视这一点。
2016年12月30日 04点12分 11
1.差分代码受教了;2.36与37参数都有变化,且一直一致,用剪贴板看过;3.如果用gethitvar(damage)的话lifeadd的伤害就检测不出来了吧?4.用helper是因为p1生命值恒为1,无法用差的方式算出伤害才用的,迫不得已惹;5.对AI的调整受教了,虽然我也是”对方AI检测不出来管我P事”派的人哈哈。
2016年12月30日 05点12分
mugen的程序是1gametime运行1次吗?如果是的话按道理来说应该可以用gametime%2的,但还是木有用惹。。
2016年12月30日 05点12分
@犬夜叉he犬夜叉 GAMTIME是每帧都有运行,可能是你写法有误?
2016年12月30日 05点12分
helper常时changestate到5150,死亡伪装就不会坑到对面AI。
2016年12月30日 22点12分
level 8
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.
可以想到的可能性太多,不清楚你实际是哪一种,一般来说用上面的差分写法大部分情况可以正常运行。
2016年12月30日 05点12分 12
你说的没有问题,实际上没有必要特意照顾对方的AI。但是我认为类似本体不让你打,放个HELPER逗你玩儿之类的写法如果不考虑这些问题,很容易造成对方的AI发傻。我认为MUGEN的战斗时考双方配合的,如果对方在发傻,至少我觉得这一场就没什么好看的直接拖进度条了(当然某些特殊的鬼畜BUG还是很有趣的)。
2016年12月30日 06点12分
用你的代码试了下,还是不行惹。。(你的代码就是这个null,不用我写的gametime的那些了吧?)是写在-2下的惹。。
2016年12月30日 06点12分
2016年12月30日 08点12分
@hikariebun 这个写在-2下是肯定有用的。除非你的人物被暂停了。
2016年12月30日 08点12分
level 8
[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
上面的代码复制的时候少了一段。
2017年01月01日 07点01分 14
level 10
愚昧,用加减法和变量计算自己少了的血,就得出收到伤害的真实数字了,然后再依靠永续给到对方身上就行...
2017年01月01日 13点01分 15
1