在官方声明中,M.U.G.E.N的主程序不得用于商业用途,但未限制人物等民间制作的资源的使用

凶恶向辞典

凶恶向mugen辞典    by.aceBluest

(附带简易教程)


此文旨在发展同好,因为涉及mugen的凶恶向人物,所以不喜欢那类人物的就把文章删了吧

还有这不是起步教程,要有一定的基础才能看懂,打基础请移步贴吧置顶教程

当然有些东西还是要自己探索的,比如说anim探查,stateno探查,id调查之类的东西

虽然是比较基础,但是不同的人用法也不同,还有例如己方helper的潜入型调查,对方helper的利用型调查等

这些我就不在这里一一论述了,还是那句话,每个人都有自己不同的方法,自己探索出适合自己的才是最好的

状态控制器我只在有必要的项目做注释,一般的角色名为kfm

hitdef以及projectile如果只需要示范damege,fall.damage,p2stateno等会单独写


认为自己没问题的话,现在开始


---------------------------------------------------------------

---------------------------------------------------------------

大众基础向

---------------------------------------------------------------

---------------------------------------------------------------

大伤害·溢出伤害

如同字面所述,就是hitdef和projectile的伤害值很大让人当场死亡

不过在一定的范围内还是会受到别的因素影响,比如对手的defence值

比如自身的attack为100的时候damage为1000,对手是一般的功夫男

那样就能达到即死的效果,但是如果对方的defence值或者life值变大,将会无法即死

不过在更多情况下会使用极大值来表示,这里的是mugen处理溢出的状况

通常所说的大伤害是高于普通角色的life,并没有达到溢出的情况

而溢出伤害和极大值就是另一种情况的表现了


例子:

通常大伤害:damage=enemy,lifemax

溢出伤害:damage=2147483648


---------------------------------------------------------------

反向溢出伤害

hitdef和projectile的伤害值为负数的情况,通常会让对手回复life

达到负伤害的极大值的话,life的值会大到mugen无法处理,造成life=0的bug

当然和大伤害一样会受到defence值的影响就是一个弊端

不过这个在lifeadd为极大值的时候也会发生


例子:

反向溢出伤害:damage=-2147483648


---------------------------------------------------------------

即死投·即死当身

投,即hitdef和projectile中使用p2stateno来取得对手目标让其进入别的状态

然后使用lifeset和lifeadd进行操作使得life值为0,targetstate的操作也是这个分类的

但是hitdef和projectile的p2stateno在对手有hitoverride的情况下无法将对方的状态改变

使用reversaldef以及p2stateno的定义进行状态夺取的则被称为即死当身

当对手使用hitdef时候可以将对方进入别的状态,即使对方使用有hitoverride也可以起效

可以说是凶恶人物的基本手段呢,而狂级人物一旦加入了这个也有一下子提升实力的效果

备注:直接通过当身让有hitpausetime的对手进入超即死状态即为超即死当身


例子:

即死投:

p2stateno=xxx;(xxx为自己设定的即死状态号,下同)

或者

[state ]

type=targetstate

trigger1=x;(x为条件,自己考虑该怎么写,下同)

value=xxx;(同上)

ignorehitpause=1;(可选参数,默认为0,为1时系统会不受影响读取这个状态控制器,以后不作说明)


即死当身:

[state ]

type=reversaldef

trigger1=x;(同上)

reversal.attr=sca,aa,at,ap;(所有定义的攻击)

pausetime=

numhits=

sparkno=

hitsound=

p2stateno=xxx;(同上)

ignorehitpause=1;


---------------------------------------------------------------

落下即死

如同字面的意思,hitdef和projectile,reversaldef的fall.damage使用极大值

对方进入落下的状态(5100,5110),在那些状态下有hitfalldamage的定义,进入的话会立即死亡

进入自己的状态下定义hitfalldamage将会是强力的攻击手段,而且fall.damage不受defence的影响也是好处

大抵就是攻击定义的p2stateno=5100or5110,p2getp1state=0让对方读取自己的状态让对方立即死亡


例子:

即死当身:

fall=1;(保证落下)

fall.recover=0

fall.damage=2147483648

p2getp1state=0;(读取p1的state)


---------------------------------------------------------------

targetlifeadd·毒·回复阻止

利用targetlifeadd使得对方的life为0,达到即死的效果

加入absolute=1指定为绝对值则是保险的作用

顺便说一下当对方的life为0时系统作判定,如果有抗性并不一定会立即死亡

本身非常的简单,但是由此派生出来的东西很广泛,比如毒,回复阻止等等

毒,字面意思,小小的伤害持续进行,通常和永续target合用,较大伤害的毒也被称为猛毒呢

通常用来对付那些不受直接大伤害或者lifeadd型即死的人物

回复阻止,通过永续target和targetlifeadd配合对手life的记忆进行消减,通常神上位不怎么会使用

如果用来提高游戏性还是不错的选择呢


例子:

targetlifeadd即死:

[state ]

type=targetlifeadd

trigger1=x;(同上)

value=-2147483648

absolute=1;(绝对值)

ignorehitpause=1


毒:

[state ]

type=targetlifeadd

trigger1=x;(同上)

value=-random%5

absolute=1;(绝对值)

ignorehitpause=1


回复阻止:

[state ]

type=targetlifeadd

trigger1=x;(同上)

value=-(var(1)-var(2));(var(1)和var(2)为对方受击前后的life记忆变量)

absolute=1;(绝对值)

ignorehitpause=1

---------------------------------------------------------------

---------------------------------------------------------------

进阶1-初阶

---------------------------------------------------------------

---------------------------------------------------------------

永续target bug

目标取得的场合,将目标取得后的reversaldef在1F内不断实行防止脱离

可以维持这个target从而在合适的情况下进行targetstate和targetlifeadd

如果对方没有对应耐性就是很好用的即死手段

但因为是执行reversaldef的情况下无法同时执行hitdef,因此常用helper来进行

这个也是混线bug的利用基础


例子:

永续target取得:

[state ];(target取得用reversaldef)

type=reversaldef

trigger1=1

reversal.attr=sca,aa,at,ap

pausetime=1,2

sparkno=-1

numhits=0

ignorehitpause=1

[state ]

type=targetstate

trigger1=x;(同上)

value=xxx;(同上)

ignorehitpause=1

[state ]

type=targetlifeadd

trigger1=x;(同上)

value=-2147483648

absolute=1;(绝对值)

ignorehitpause=1

[state ]

type=targetlifeadd

trigger1=x;(同上)

value=-random%5

absolute=1;(绝对值)

ignorehitpause=1

[state ]

type=targetlifeadd

trigger1=x;(同上)

value=-(var(1)-var(2))

absolute=1;(绝对值)

ignorehitpause=1

---------------------------------------------------------------

512超越使用(以后简称512法)

利用hitpausetime达到单个状态号里超越512个状态控制器,依然能够正常的读取的情况

不会出现「state xxxxx can only have max of 512 controllers」

从而能够影响人物的内存的bug,利用非常的广泛,

超即死,苏生,冻结解除,palno变更,helper normal化,亲变更,亲捏造,直死等都会利用到

将目标拖入状态,取得target后,通过type=null进行排列,在合适的位置通过ignorehitpause=1进行无视hitpausetime的读取

从而影响在该位置的内存,嘛,描述的不是很形象没有办法呢


例子:

hitpausetime=7,7


[state ]

type=changestate

trigger1=hitpausetime>1

value=xxxx;(512个状态控制器超越的状态号)

ignorehitpause=1


---------------------------------------------------------------

超即死

512超越使用的一种,利用上述办法将对方读入553-556的状态让alive地址为0,使对方当场死亡

就算是lifeset的锁血和noko也不能阻止这一的alive归0,是优点呢

若是对方的alive是1以外的值就用多次的changestate判定使得对方的alive最终归0的手段也成为超即死改


例子:

超即死改:

[statedef 511]

[state ]

type=hitdef

trigger1=x

...

hitpausetime=7,7

ignorehitpause=1

[state ]

type=changestate

trigger1=hitpausetime>1

value=512;(512个状态控制器超越的状态号)

ignorehitpause=1

[statedef 512]

[state 1]

type=selfstate

trigger1=name="kfm";(自身保护)

value=0;(自己设定的保护状态号,不一定是0)

ctrl=(!ishelper)

ignorehitpause=1

[state 2]

type=lifeset

trigger1=1

value=0

ignorehitpause=1

[state 3]

type=null

trigger1=1

...

[state 553]

type=null

trigger1=1

ignorehitpause=1

[state 554]

type=null

trigger1=1

ignorehitpause=1

[state 555]

type=null

trigger1=1

ignorehitpause=1

[state 556]

type=null

trigger1=1

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1


---------------------------------------------------------------

冻结·冻结解除·冻结当身

冻结就是pausetime,hitpausetime发生的场合,无论是哪种攻击手段都可以那么称呼的呢

冻结解除就是不需要等待pausetime,hitpausetime的时间流逝,直接使得这两个的值为0的情况

一般有三种方法,一个是自己的攻击使用hitpausetime使得自己不会停止

一个是针对对方的冻结攻击使用pausetime为0的hitdef覆盖,还有一个就是利用512超越来进行的

冻结当身就是使用非常大的hitpausetime的reversaldef来封住对方的行动或者使用死之宣告

不过也因此会影响通常的攻击,所以上位神以及以上的人物通常作为最终的手段使用


例子:

冻结当身:

[state ]

type=reversaldef

trigger1=x

reversal.attr=sca,aa,at,ap

pausetime=2147483647,2147483647

sparkno=

numhits=

ignorehitpause=1


冻结解除(512法):

[state 541]

type=null

trigger1=1

ignorehitpause=1

[state 542]

type=null

trigger1=1

ignorehitpause=1

[state 543]

type=null

trigger1=1

ignorehitpause=1

[state 544]

type=null

trigger1=1

ignorehitpause=1


---------------------------------------------------------------

---------------------------------------------------------------

进阶2-中阶

---------------------------------------------------------------

---------------------------------------------------------------

死之宣告·强制死之宣告

回合后(roundstate=3的时候)由于mugen是根据时机的规格来进行判断

因此这时候对life进行targetlifeadd的攻击,可以使得对手的life为0不能回复达到即死的效果

还有,配合冻结当身能够提高死之宣告的成功率,因此这种手段又被称为冻结死之宣告

通过自杀使得roundstate强制进入3而进行死之宣告的攻击,则被称为强制死之宣告

强制死之宣告通过自杀而不等时间到达就能强制到达r3,同时自身执行苏生并对方的life归0的手段

再利用时止的手段让对方的life无法回复由于KO的判断在r2,但是胜负的判断在r3

这就可以使得对方进入lose,自己进入win的状态

但由于必须自杀的关系,如果失败了自己就输了,所以是把双刃剑

很多作者都在强制死之宣告发动上花了很多心思进行演出,欣赏人物的最后一刻也很有意思呢


例子:

死之宣告:

[state ]

type=targetlifeadd

trigger1=roundstate=3&&numtarget

value=-2147483647

absolute=1;(绝对值)

ignorehitpause=1


强制死之宣告:

[statedef 1]

[state ]

type=changestate

trigger1=x

value=2(本体自杀状态号)

ignorehitpause=1

[satetdef 2]

[state ]

type=hitdef

trigger1=x

...

hitpausetime=7

ignorehitpause=1

[state ]

type=changestate

trigger1=hitpausetime>1

value=3(苏生状态号)

ignorehitpause=1

[statedef 3]

[state 1]

type=lifeset

trigger1=!life

value=lifemax

ignorehitpause=1

[state 2]

type=null

trigger1=1

....

[state 553]

type=selfstate

trigger1=!alive

value=ifelse(!ishelper,xxx,130);(helper处理号xxx和自身保护状态号130)

ctrl=1

ignorehitpause=1

[state 554]

type=null

trigger1=1

ignorehitpause=1

[state 555]

type=null

trigger1=1

ignorehitpause=1

[state 556]

type=null

trigger1=1

ignorehitpause=1

[state ]

type=selfstate

trigger1=1

value=stateno

persistent=256;行动复位

ignorehitpause=1

[state ]

type=selfstate

trigger1=1

value=stateno

persistent=256

ignorehitpause=1

[state ]

type=selfstate

trigger1=1

value=stateno

persistent=256

ignorehitpause=1

[statedef 4];(永续target维持用helper)

[state ]

type=targetlifeadd

trigger1=roundstate=3&&numtarget

value=-2147483647

absolute=1;(绝对值)

ignorehitpause=1


---------------------------------------------------------------

Omega Tom Hanks Killer(OTHK)

先在前面说明一下,helper发出的projectile是和本体一样对待

也就是说,p1stateno指定的projectile无论是谁发出的到最后进行移动的都是本体

那么,用reversaldef捕获了hitdef的helper,然后在状态里让他发射projectile让本体进入helper的hitdef状态

通过强制本体使用helper的hitdef进行当身使得本体立即死亡,夺取对方的helper就是最重要的事情

要注意当helper使用了hitoverride就无法夺取目标来使用了

说白了其实就是让原本不使用hitdef的本体强制使用hitdef,由于技术的发现和一个人物有关,所以叫这个名字

被发现后很长一段时间都在使用,可以理解为凶恶人物制作的基础之一了


例子:

OTHK:

[state ]

type=projectile

trigger1=xxx

projanim=anim;(重要)

......

p1stateno=prevstateno;(重要)

ignorehitpause=1

备注:(配合混线通过调查anim和p1stateno到lifeset为0的状态号为即死返)

---------------------------------------------------------------

超即死投

夺取对手的state到自己的有hitpausetime的状态里,赋予hitpausetime后进入超即死状态号让对方当场死亡

一般通过p2stateno或者targetstate进入hitpausetime赋予的状态号

赋予hitpausetime不一定是hitdef,reversaldef也可以


例子:

超即死投

[satetdef 510]

[state ]

type=hitdef;reversaldef;projectile

....

p2stateno=511

ignorehitpause=1

;or

[state ]

type=targetstate

trigger1=x

value=511

ignorehitpause=1

[statedef 511]

[state ]

type=hitdef

trigger1=x

...

hitpausetime=7,7

ignorehitpause=1

[state ]

type=changestate

trigger1=hitpausetime>1

value=512;(512个状态控制器超越的状态号)

ignorehitpause=1

[statedef 512]

[state 1]

type=selfstate

trigger1=name="kfm";(自身保护)

value=0;(自己设定的保护状态号,不一定是0)

ctrl=(!ishelper)

ignorehitpause=1

[state 2]

type=lifeset

trigger1=1

value=0

ignorehitpause=1

[state 3]

type=null

trigger1=1

...

[state 553]

type=null

trigger1=1

ignorehitpause=1

[state 554]

type=null

trigger1=1

ignorehitpause=1

[state 555]

type=null

trigger1=1

ignorehitpause=1

[state 556]

type=null

trigger1=1

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1

[state ]

type=changestate

triggerall=!ishelper&&name!="kfm"

trigger1=1

value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))

ignorehitpause=1


---------------------------------------------------------------

混线bug

先取得自己召唤helper的target,取得后消除被击中的helper,同时用reversaldef维持这个target

这时候如果对方召唤出的新helper进入了原先我们取得target的位置,就能通过targetstate进行控制

用来配合OThK,可以杀掉很多的角色。不同构造的混线bug造成的杀伤力也不同,一般就是精度的差别

当然现在大部分神都是使用开幕混线的,所以更多的是探查上的差距,由混线衍生出的不同招式名称也很多


例子:

混线(整个比较长,我主要写重点,这个是最简单的多重混线)

[satetdef -2]

[state ];混线用helper

type=selfstate

trigger1=ishelper(1)

value=1

ignorehitpause=1

[state ];混线target

type=selfstate

trigger1=ishelper(2)

value=2

ignorehitpause=1

[state ]

type=helper

triggerall=!ishelper&&name="kfm"

trigger1=numhelper(1)=0

name="Konsen"

stateno=1

Id=1

helpertype=player;(重要定义)

pos=0,0

postype=p1

facing=1

keyctrl=0

ownpal=1

supermove=1

pausemovetime=2147483647

supermovetime=2147483647

ignorehitpause=1

[state ]

type=helper

triggerall=!ishelper&&name="kfm"

trigger1=numhelper(1)>0

trigger1=numhelper(2)<8

trigger1=helper(1),numtarget<8

name="Konsen-hit"

stateno=2

Id=2

helpertype=player;(重要定义)

pos=0,0

postype=p1

facing=1

keyctrl=0

ownpal=1

supermove=1

pausemovetime=2147483647

supermovetime=2147483647

ignorehitpause=1

[statedef 1]

type=a

movetype=i

physics=n

anim=1;(攻击判定anim)

[state ];维持

type=reversaldef

trigger1=ishelper(1)

trigger1=numtarget>0

reversal.attr=sca,aa,at,ap

priority=2147483647

pausetime=0,0

sparkno=-1

hitsound=-1

ignorehitpause=1

[state ];不受影响

type=nothitby

trigger1=ishelper(1)

value=sca,aa,at,ap

time=-1

ignorehitpause=1

[state ];保险

type=helper

triggerall=numhelper(2)<8

trigger1=helper(1),numtarget<8

name="Konsen-hit"

stateno=2

Id=2

helpertype=player;(重要定义)

pos=0,0

postype=p1

facing=1

keyctrl=0

ownpal=1

supermove=1

pausemovetime=2147483647

supermovetime=2147483647

ignorehitpause=1

[state ];攻击判定anim切换,hitdef攻击

type=changeanim

trigger1=ishelper(1)

trigger1=numtarget=0

trigger1=numhelper(2)>0

value=1

ignorehitpause=1

[state ];状态转换,hitdef生效

type=statetypeset

trigger1=ishelper(1)

trigger1=numtarget=0

trigger1=numhelper(2)>0

type=a

movetype=a

physics=n

ignorehitpause=1

[State ];目标取得用hitdef

type=hitdef

trigger1=ishelper(1)

trigger1=numtarget=0

trigger1=numhelper(2)>0

attr=,na

damage=0,0

numhits=0

guardflag=

hitflag=mafdp

priority=7,hit

pausetime=0,10

affectteam=f;(重要)

ignorehitpause=1

[state ];判定无anim,保护

type=changeanim

trigger1=ishelper(1)

trigger1=numtarget=8;维持

value=3

ignorehitpause=1

[State ];状态转换,保护

type=statetypeset

trigger1=ishelper(1)

trigger1=numtarget=8

type=a

movetype=i

physics=n

ignorehitpause=1

[State ];混线处理state转入

type=targetstate

triggerall=ishelper(1)

triggerall=numtarget>0

triggerall=target,ishelper

trigger1=x

value=xx

ignorehitpause=1

[state ];败北消除

type=destroyself

trigger1=ishelper(1)

trigger1=root,life=0

ignorehitpause=1

[statedef 2]

type=s

movetype=h

physics=n

anim=2;受击判断anim

[state ];数目未满8个时候无敌

type=nothitby

trigger1=ishelper(2)

trigger1=numhelper(2)<8

value=sca

ignorehitpause=1

[state ]

type=hitby

trigger1=ishelper(2)

trigger1=numhelper(2)=8

value=sca,na;对应混线hitdef的attr

ignorehitpause=1

[State ];取得target后消除,以及混线helper不在的时候消除

type=destroyself

trigger1=numhelper(1)>0

trigger1=helper(1),numtarget=8

trigger2=numhelper(1)=0

;这里只是简单的说明混线的产生,混线技以后会说


---------------------------------------------------------------

---------------------------------------------------------------

进阶3-高阶

---------------------------------------------------------------

---------------------------------------------------------------

装甲贯通炮

混线bug的派生技之一,预先给对方积蓄落下伤害,在取得对方的helper后

使用projectile的p1stateno让对方进入落下的状态(5100,5110)从而即死

看起来是比较奇怪的名称,但是如果对方存在装甲(hitoverride)的情况下

hitdef和projectile的通常落下即死无法发挥作用,由于这个能杀死所以这么认为的吧


例子:

装甲贯通炮:

[satetdef 6];攻击招式状态号

[state ]

type=projectile

trigger1=!ishelper

projId=1

projanim=1;攻击anim号

.....

fall.damage=2147483648

ignorehitpause=1

[statedef 7];混线处理状态号

[state ]

type=projectile

trigger1=ishelper&&root,name!="kfm"

projId=2

projanim=anim;enemy,var(x);调查的anim号

.....

p1stateno=ifelse(root,gethitvar(fall.damage)>root,lifemax,5110,5100)

ignorehitpause=1


---------------------------------------------------------------

OROCHI杀手·即死返

混线派生技之一,通过混线夺取对方的helper然后p1stateno=169995或者lifeset=0的p1stateno=49000,即死对方

本来是应对众多G OROCHI改的招式,而后加入了anim探查和stateno探查使得这个方法泛用化

泛用化的OROCHI杀手就是混线即死返


例子:

OROCHI杀手:

[state ]

type=projectile

trigger1=ishelper&&root,name!="kfm"

projId=3

projanim=anim;enemy,var(x);调查的anim号

.....

p1stateno=ifelse(random<499,169995,49000)

ignorehitpause=1


即死返:

[state ]

type=projectile

trigger1=ishelper&&root,name!="kfm"

projId=3

projanim=anim;enemy,var(x);调查的anim号

.....

p1stateno=enemy,var(y);调查的即死stateno

ignorehitpause=1


---------------------------------------------------------------

变数弄

混线派生技之一,有些对手在lifeset的value里使用了var(x)来进行血量锁定的操作,这样的方法可以防止F1按死人物

同时通过varset可以让人物按照作者所希望的方式进行血量削减,通过混线取得helper的目标

取得对方的helper之后使用parentvarset来对对方的var(x)进行改变,从而即死这一类的人物

由于有些人物会因为变数弄而论外化,因此变数修复对于神上位及以上的人物来说也是很必要的

补足:sysvar不能使用parentvarset


例子:

变数弄:

[state ]

type=parentvarset

trigger1=x

var(0)=(gametime%11=[3,4])*1+(gametime%11=[6,7])*(root,lifemax)+(gametime%11=[9,10])*-9999999999999

ignorehitpause=1


变数修复:

[state ]

type=parentvarset

trigger1=!x

var(0)=helper(0),var(0)

ignorehitpause=1


---------------------------------------------------------------

潘多拉杀手

混线bug的派生技之一,默认的mugen状态号110和115有hitby,从而让对方当场死亡

由于是杀死潘多拉魔盒0.2b的手段,因此被叫做在这个名字

另外潘多拉杀手改和这个完全不同,需要注意


例子:

潘多拉杀手:

[state ]

type=projectile

trigger1=ishelper&&root,name!="kfm"

projId=3

projanim=anim;enemy,var(x);调查的anim号

.....

p1stateno=ifelse(random<499,110,115)

ignorehitpause=1


---------------------------------------------------------------

邪眼杀手

也就是即死状态多重化,需要番号一致才可以,达成的手段就是targetstate到一系列的状态号

由于对方helper的selfstate会不断跳转,最终到达即死状态,使得对方当场死亡


例子:

邪眼杀手:

[statedef 1];混线

[state ]

type=targetstate

trigger1=x

value=[2,10000]

ignorehitpause=1

[statedef 2]

type=U

movetype=U

physics=N

ctrl=0

[state ]

type=changestate

trigger1=1

value=5150;即死处理状态号

persistent=256

ignorehitpause=1

.....

[statedef 10000]

type=U

movetype=U

physics=N

ctrl=0

[state ]

type=changestate

trigger1=1

value=5150

persistent=256

ignorehitpause=1


---------------------------------------------------------------

潘多拉杀手改

混线派生技之一,对于使用selfstate或者lifeset,lifeadd或者noko的对手,对他们的死亡条件或者锁定条件进行逆满足,

或满足脱离条件能使得对方无法有效对自身的helper进行脱离由此获得对方helper的target,将对方即死

或满足死亡条件就能让对方自杀,或者让对方的noko无效,这个方法用在即死潘多拉魔盒0.3上


例子:

潘多拉杀手改:

[state ]

type=parentvarset

trigger1=x

var(4)=prevstateno

ignorehitpause=1


---------------------------------------------------------------

Anomalocaris杀手

Anomalocaris这个人物,12P使用attr省略前段的本体hitdef,所有helper无条件锁定,本身的life未锁定,通常的当身无法起效

在当身的同时使用pause和superpause,就能对其进行当身,从而即死这类型的人物


例子:

Anomalocaris杀手


[state ]

type=reversaldef

trigger1=1

reversal.attr=sca,aa,at,ap;(所有定义的攻击)

damage=999999999999

pausetime=2

numhits=0

sparkno=-1

fall.damage=999999999999

p2stateno=1000044

ignorehitpause=1

[state ]

type=pause

triggerall=gametime%10=[1,5]

trigger1=enemynear,movetype=a

trigger1=enemynear(numenemy>1),movetype=a

time=2

movetime=2

ignorehitpause=1

[state ]

type=superpause

triggerall=gametime%10=[1,5]

trigger1=enemynear,movetype=a

trigger1=enemynear(numenemy>1),movetype=a

anim=-1

time=2

movetime=2

darken=0

p2defmul=1

ignorehitpause=1


---------------------------------------------------------------

间者helper·bug helper

混线夺取的helper瞬间召唤normal helper用来维持永续target,而自己的helper则能够自由的行动

优点是即使被夺走了也能够继续维持,而且不会伤害到自身


例子:

间者helper:

[state ];间者helper召唤

type=helper

triggerall=playeridexist(id)

trigger1=!numhelper(12212121212)

id=12212121212

name="\@v@/bug helpor"

postype=p1

pos=999999,999999

stateno=random*random

helpertype=normal;重要

size.xscale=0

size.yscale=0

keyctrl=0

supermovetime=9999999999999

pausemovetime=9999999999999

ignorehitpause=1


---------------------------------------------------------------

Marking

字面意思为标记,实际上就是对方的本体的永续target确保,用来配合死之宣告等

原理比较简单,通过hitoverride来实现


例子:

Marking:

[statedef 1];混线处理

[state ]

type=hitby

trigger1=name!="kfm"

value=SCA,AA,AT,AP

ignorehitpause=1

[state ]

type=hitby

trigger1=name!="kfm"

value2=SCA,AA,AT,AP

ignorehitpause=1

[state ]

type=hitoverride

trigger1=name!="kfm"

time=0

attr=

slot=0

stateno=1

ignorehitpause=1

[state ]

type=hitoverride

trigger1=name!="kfm"

time=0

attr=

slot=1

stateno=1

ignorehitpause=1

[state ]

type=hitoverride

trigger1=name!="kfm"

time=0

attr=

slot=2

stateno=1

ignorehitpause=1

[state ]

type=hitoverride

trigger1=name!="kfm"

time=0

attr=

slot=3

stateno=1

ignorehitpause=1

[state ]

type=hitoverride

trigger1=name!="kfm"

time=0

attr=

slot=4

stateno=1

ignorehitpause=1

[state ]

type=hitoverride

trigger1=name!="kfm"

time=0

attr=

slot=5

stateno=1

ignorehitpause=1

[state ]

type=hitoverride

trigger1=name!="kfm"

time=0

attr=

slot=6

stateno=1

ignorehitpause=1

[state ]

type=hitoverride

trigger1=name!="kfm"

time=0

attr=

slot=7

stateno=1

ignorehitpause=1


---------------------------------------------------------------

---------------------------------------------------------------

进阶4-高阶2(主要是初心者比较难理解的,基本都建立在混线以及亲变更的基础上)

---------------------------------------------------------------

---------------------------------------------------------------

亲变更·gametime式脱离贯通

512法的运用之一,位置在6689,6690前后,通过改变内存达到,具体的情况如下

helper(1)召唤了helper(2),这个时候helper(2)的亲就是helper(1),helper(1)如果使用了destroyself消除自身

那么helper(2)的亲就是空出来的了,这个时候helper(1)空出来的地址可以给helper(3)进入

通过重新定向后,进入那个地址的helper(3)可以认定为helper(2)的亲,因为本身的记忆,所以parentvarset无法对helper(1)起效

但是通过制定helper的id可以对helper(3)实现变量的改写,如果对方使用变量进行生存管理便会被即死

对于神人物的杀伤力是非常大的

另外,用来配合gametime式脱离贯通,使得对方的selfstate无法生效,由此夺取对方的helper即死对方的事情也是可以的

因为不少人物的helper所使用的selfstate有个条件是使用gametime来控制的,比如trigger1=var(0)!=gametime+512

然后在-3下用var(0)来记忆一个value=gametime+512的值,若是对方使用变数弄,便会自动让helper脱离


例子:

亲变更:

[statedef 1]

[state ]

type=hitdef

trigger1=x

...

hitpausetime=7,7

ignorehitpause=1

[state ]

type=changestate

trigger1=id判定

trigger1=hitpausetime>1

value=2;(亲变更状态号)

ignorehitpause=1

[statedef 2]

[state 1]

type=null

trigger1=1

[state 2]

type=null

trigger1=1

....

[state ]

type=null

trigger1=1

[state 6690]

type=null

trigger1=1

persistent=128;(重要)

ignorehitpause=1

[state ]

type=null

trigger1=1

[state ]

type=null

trigger1=1

[state ]

type=null

trigger1=1

[state ]

type=null

trigger1=1

[state ]

type=null

trigger1=1

[state ]

type=null

trigger1=1

[state ]

type=null

trigger1=1

[state ]

type=null

trigger1=1

[state ]

type=changestate

trigger1=1

value=130;(helper储存状态号)

ignorehitpause=1


gametime式脱离贯通(整数变量记忆)

先要做的是对方的gametime记忆感知:

[statedef 1];探查用helper处理

[state ];调查开始,gametime变量保存

type=null

triggerall=var(4):=var(4)*(var(4)=[0,59])||1

triggerall=!var(0)

trigger1=var(0):=gametime

trigger1=var(1):=enemy(0),var(var(4))

ignorehitpause=1

[state ];调查2F内变量保存

type=varset

triggerall=var(0)

trigger1=gametime=var(0)+1

var(2)=enemy(0),var(var(4))

ignorehitpause=1

[state ];1-2F循环调查,保存

type=changestate

triggerall=var(0)

triggerall=gametime=var(0)+1

triggerall=var(1)=var(2)

trigger1=var(0):=0||1 ;调查用变量复位

trigger1=var(1):=0||1

trigger1=var(2):=0||1

trigger1=var(3):=0||1

trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定

value=stateno

ignorehitpause=1

[state ];3F开始变量保存

type=varset

triggerall=var(0)

trigger1=gametime=var(0)+2

var(3)=enemy(0),var(var(4))

ignorehitpause=1

[state ];1-3F循环调查

type=changestate

triggerall=var(0)

triggerall=gametime=var(0)+2

triggerall=var(1)=var(2)||var(2)=var(3)||var(3)=var(1)

trigger1=var(0):=0||1 ;调查用变量复位

trigger1=var(1):=0||1

trigger1=var(2):=0||1

trigger1=var(3):=0||1

trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定

value=stateno

ignorehitpause=1

[state ];取得变量处理计算

type=null

triggerall=var(0)

triggerall=gametime=var(0)+2

trigger1=var(5):=floor((var(1)-2*var(2)+var(3))/2 )||1

trigger1=var(6):=var(2)-var(1)-var(5)*(2*var(0)+1)||1

trigger1=var(7):=var(1)-var(5)*var(0)*var(0)-var(6)*var(0)

ignorehitpause=1


ax^2+bx+c=A

a(x+1)^2+b(x+1)+c=B

a(x+2)^2+b(x)c=C

这三个方程联立求解

2a=A-2B+C

a的解出来的话联立方程式就能解出来

a(x+1)+b=B-A解开b的值,而c的值明白

顺便3次函数解开也是可能的

只不过由于溢出的关系那样的gametime保存无法使用

不过在这里也写出来便于大家理解

4个变量保存,2次函数一样联立方程式引导

6a=-A+3B-3C+d               解出a

a(6x+6)+2b=C-2B+A           解出b

a(3x^2+3x+1)+b(2x+1)+c=B-A  解出c


[state ];导出结果调查验证

type=changestate

triggerall=var(0)

triggerall=var(5)||var(6)||var(7)

triggerall=gametime<=var(0)+10

triggerall=enemy(0),var(var(4))!=var(5)*gametime*gametime+var(6)*gametime+var(7)

trigger1=var(0):=0||1 ;调查用变量复位

trigger1=var(1):=0||1

trigger1=var(2):=0||1

trigger1=var(3):=0||1

trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定

trigger1=var(5):=0||1

trigger1=var(6):=0||1

trigger1=var(7):=0||1

value=stateno

ignorehitpause=1

[state ];计算正确记忆1

type=changestate

triggerall=var(0)

triggerall=var(5)||var(6)||var(7)

triggerall=gametime=var(0)+10

triggerall=!(var(30)||var(31)||var(32)||var(33));该组变量未记忆

trigger1=var(30):=var(4)||1;记忆开始

trigger1=var(31):=var(5)||1

trigger1=var(32):=var(6)||1

trigger1=var(33):=var(7)||1

trigger1=var(0):=0||1 ;调查用变量复位

trigger1=var(1):=0||1

trigger1=var(2):=0||1

trigger1=var(3):=0||1

trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定

trigger1=var(5):=0||1

trigger1=var(6):=0||1

trigger1=var(7):=0||1

value=stateno

ignorehitpause=1

[state ];计算正确记忆2

type=changestate

triggerall=var(0)

triggerall=var(5)||var(6)||var(7)

triggerall=gametime=var(0)+10

triggerall=var(30)||var(31)||var(32)||var(33);记忆1完成

triggerall=var(4)!=var(30);与记忆1不同

triggerall=!(var(35)||var(36)||var(37)||var(38));该组变量未记忆

trigger1=var(35):=var(4)||1;记忆开始

trigger1=var(36):=var(5)||1

trigger1=var(37):=var(6)||1

trigger1=var(38):=var(7)||1

trigger1=var(0):=0||1 ;调查用变量复位

trigger1=var(1):=0||1

trigger1=var(2):=0||1

trigger1=var(3):=0||1

trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定

trigger1=var(5):=0||1

trigger1=var(6):=0||1

trigger1=var(7):=0||1

value=stateno

ignorehitpause=1

[state ];计算正确记忆3

type=changestate

triggerall=var(0)

triggerall=var(5)||var(6)||var(7)

triggerall=gametime=var(0)+10

triggerall=var(30)||var(31)||var(32)||var(33);记忆1完成

triggerall=var(35)||var(36)||var(37)||var(38);记忆2完成

triggerall=var(4)!=var(30);与记忆1不同

triggerall=var(4)!=var(35);与记忆2不同

triggerall=!(var(40)||var(41)||var(42)||var(43));该组变量未记忆

trigger1=var(40):=var(4)||1;记忆开始

trigger1=var(41):=var(5)||1

trigger1=var(42):=var(6)||1

trigger1=var(43):=var(7)||1

trigger1=var(0):=0||1 ;调查用变量复位

trigger1=var(1):=0||1

trigger1=var(2):=0||1

trigger1=var(3):=0||1

trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定

trigger1=var(5):=0||1

trigger1=var(6):=0||1

trigger1=var(7):=0||1

value=stateno

ignorehitpause=1

[state ];计算正确记忆4

type=changestate

triggerall=var(0)

triggerall=var(5)||var(6)||var(7)

triggerall=gametime=var(0)+10

triggerall=var(30)||var(31)||var(32)||var(33);记忆1完成

triggerall=var(35)||var(36)||var(37)||var(38);记忆2完成

triggerall=var(40)||var(41)||var(42)||var(43);记忆3完成

triggerall=var(4)!=var(30);与记忆1不同

triggerall=var(4)!=var(35);与记忆2不同

triggerall=var(4)!=var(40);与记忆3不同

triggerall=!(var(45)||var(46)||var(47)||var(48));该组变量未记忆

trigger1=var(45):=var(4)||1;记忆开始

trigger1=var(46):=var(5)||1

trigger1=var(47):=var(6)||1

trigger1=var(48):=var(7)||1

trigger1=var(0):=0||1 ;调查用变量复位

trigger1=var(1):=0||1

trigger1=var(2):=0||1

trigger1=var(3):=0||1

trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定

trigger1=var(5):=0||1

trigger1=var(6):=0||1

trigger1=var(7):=0||1

value=stateno

ignorehitpause=1

[state ];计算正确记忆5

type=changestate

triggerall=var(0)

triggerall=var(5)||var(6)||var(7)

triggerall=gametime=var(0)+10

triggerall=var(30)||var(31)||var(32)||var(33);记忆1完成

triggerall=var(35)||var(36)||var(37)||var(38);记忆2完成

triggerall=var(40)||var(41)||var(42)||var(43);记忆3完成

triggerall=var(45)||var(46)||var(47)||var(48);记忆4完成

triggerall=var(4)!=var(30);与记忆1不同

triggerall=var(4)!=var(35);与记忆2不同

triggerall=var(4)!=var(40);与记忆3不同

triggerall=var(4)!=var(45);与记忆4不同

triggerall=!(var(50)||var(51)||var(52)||var(53));该组变量未记忆

trigger1=var(45):=var(4)||1;记忆开始

trigger1=var(46):=var(5)||1

trigger1=var(47):=var(6)||1

trigger1=var(48):=var(7)||1

trigger1=var(0):=0||1 ;调查用变量复位

trigger1=var(1):=0||1

trigger1=var(2):=0||1

trigger1=var(3):=0||1

trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定

trigger1=var(5):=0||1

trigger1=var(6):=0||1

trigger1=var(7):=0||1

value=stateno

ignorehitpause=1

[state ];调查循环

type=changestate

triggerall=var(0)

triggerall=gametime>var(0)+10

trigger1=var(0):=0||1 ;调查用变量复位

trigger1=var(1):=0||1

trigger1=var(2):=0||1

trigger1=var(3):=0||1

trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定

trigger1=var(5):=0||1

trigger1=var(6):=0||1

trigger1=var(7):=0||1

value=stateno

ignorehitpause=1

贯通部分:

[staetdef 2];gametime式贯通

[state ]

type=parentvarset

var(playerid(floor(root,fvar(5))),var(30))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(31) + var(58)*playerid(floor(root,fvar(5))),var(32)+playerid(floor(root,fvar(5))),var(33)

triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在

trigger1=playerid(floor(root,fvar(5))),var(30)

trigger2=playerid(floor(root,fvar(5))),var(31)

trigger3=playerid(floor(root,fvar(5))),var(32)

trigger4=playerid(floor(root,fvar(5))),var(33)

ignorehitpause=1

[state ]

type=parentvarset

var(playerid(floor(root,fvar(5))),var(35))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(36) + var(58)*playerid(floor(root,fvar(5))),var(37)+playerid(floor(root,fvar(5))),var(38)

triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在

trigger1=playerid(floor(root,fvar(5))),var(35)

trigger2=playerid(floor(root,fvar(5))),var(36)

trigger3=playerid(floor(root,fvar(5))),var(37)

trigger4=playerid(floor(root,fvar(5))),var(38)

ignorehitpause=1

[state ]

type=parentvarset

var(playerid(floor(root,fvar(5))),var(40))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(41) + var(58)*playerid(floor(root,fvar(5))),var(42) + playerid(floor(root,fvar(5))),var(43)

triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在

trigger1=playerid(floor(root,fvar(5))),var(40)

trigger2=playerid(floor(root,fvar(5))),var(41)

trigger3=playerid(floor(root,fvar(5))),var(42)

trigger4=playerid(floor(root,fvar(5))),var(43)

ignorehitpause=1

[state ]

type=parentvarset

var(playerid(floor(root,fvar(5))),var(45))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(46) + var(58)*playerid(floor(root,fvar(5))),var(47) + playerid(floor(root,fvar(5))),var(48)

triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在

trigger1=playerid(floor(root,fvar(5))),var(45)

trigger2=playerid(floor(root,fvar(5))),var(46)

trigger3=playerid(floor(root,fvar(5))),var(47)

trigger4=playerid(floor(root,fvar(5))),var(48)

ignorehitpause=1

[state ]

type=parentvarset

var(playerid(floor(root,fvar(5))),var(50))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(51) + var(58)*playerid(floor(root,fvar(5))),var(52) + playerid(floor(root,fvar(5))),var(53)

triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在

trigger1=playerid(floor(root,fvar(5))),var(50)

trigger2=playerid(floor(root,fvar(5))),var(51)

trigger3=playerid(floor(root,fvar(5))),var(52)

trigger4=playerid(floor(root,fvar(5))),var(53)

ignorehitpause=1


理解了上述的办法,浮点小数就可以举一反三了,这里就不一一列举


---------------------------------------------------------------

ayuayu杀手

混线bug派生技,也是mugen的bug之一,利用超大damage,让对方前往不存在的statedef,以及movetype的操作,从而即死对方

似乎是过大的damage让hitoverride处理,不存在的statedef就无法进行处理的样子


例子:

ayuayu杀手:

[statedef 1];攻击状态号

[state ]

type=projectile

trigger1=!ishelper

projId=1

projanim=1

damage=ifelse(random<500,9999999999,-9999999999),ifelse(random<500,9999999999,-9999999999)

.....

ignorehitpause=1


[state ]

type=projectile

trigger1=ishelper&&root,name!="kfm"

trigger1=root,gethitvar(damage)>999999999||root,gethitvar(damage)<-999999999||root,moveType=h

trigger1=root,stateno!=919191919

projId=1

projanim=anim;enemy,var(x);调查的anim号

.....

p1stateno=919191919;不存在的statedef

ignorehitpause=1


---------------------------------------------------------------

ukfm杀手

ukfm本身的判定全部为攻击框(clsn1),但是ukfm有某个helper和有clsn2的anim同步

夺走这个helper后可以让ukfm进入受击框(clsn2)的判定,从而即死ukfm


例子:

ukfm杀手:

[state ]

type=changeanim

trigger1=name="Ultimate Kung Fu Man"

trigger1=ishelper(9999)

value=7777

ignorehitpause=1


把这个对策泛用就行了

---------------------------------------------------------------

欠损杀手

对付欠损少女(E Youmu)的技能,先是通过当身,让对方进入对方自身召唤normal helper的状态

夺取这个normal helper,让其获得有hitby或者hitfalldamage的stateno,从而再通过p1stateno让对方本体进入,即死对方

用这个办法也能即死黑太阳(1stALSIEL),当然状态号要做一些改变


例子:

欠损杀手:

[statedef 1];helper当身

[state ]

type=reversaldef

trigger1=enmeynear,name="E Youmu"

reversal.attr=sca,aa,at,ap;(所有定义的攻击)

pausetime=

numhits=

sparkno=

hitsound=

p2stateno=4017;欠损少女召唤normal helper的状态号

ignorehitpause=1;


[statedef 2];混线处理

[state ]

type=projectile

triggerall=ishelper&&root,name!="kfm"

trigger1=root,name="E youmu"

trigger1=!numprojid(1)

projId=1

projanim=231;欠损少女的攻击anim号

.....

p1stateno=ifelse(root,gethitvar(fall.damage),5110,4026);即死状态号贯通

ignorehitpause=1


---------------------------------------------------------------

全文完


你,确定要这么做吗?
正在处理中...