2016.03.0721:12

AI连段-1 当对手在地面的民工连

Episode 6-1 连段(当对手在地面的民工连)

要说AI最好写的地方,就是连段了,特别是平地民工连,也是写AI里面最简单的一个环节,这里就粗略的举几个例子再提一下该注意的地方吧,想必看我的教程的同学们之前也应该写过或者看过其他作者的AI或者AI教程了,但是要注意一点,连段和连携不同,连段是确认了的,俗称连招,连续技,连携是对面处于防御的状态,属于压制,其他没什么好谈的,唯一要注意的就是看你人物等级的定位写出不同的连段强度,十割,无限之类的连续技最好设置一个开关,免得被喷,尽量自重一点比较好

自己在写之前可以先了解一下这个人物的基本连招,也可以自己手操去摸索一下

PS:除非你是写狂级人物,不然最好限制下能无限的角色的连段,无限打起来其实很难看的,比如98艹的EX模式下无限奈落落,01八神的无限葵花,99BOSS经理的无限搬运,96,97八神的无限屑风之类的

举个例子,我们先看到CMD部分

;強百式・鬼焼き
[State -1, S ONIYAKI]
type = ChangeState
value = 1150
triggerall = var(59) = 0
triggerall = command = "強百式・鬼焼き"
triggerall = statetype != A
trigger1 = ctrl || stateno = 100
trigger2 = stateno = 205 && movecontact
trigger3 = stateno = 215 && movecontact
trigger4 = stateno = 235 && movecontact
trigger5 = stateno = 240 && movecontact
trigger6 = stateno = 245 && movecontact
trigger7 = stateno = 315 && movecontact
trigger8 = stateno = 400 && movecontact
trigger9 = stateno = 410 && movecontact
trigger10 = stateno = 430 && movecontact
trigger11 = stateno = 440 && movecontact
trigger12 = stateno = 300 && Time = [15,29]
trigger13 = stateno = 731

我们能看到一大串trigger,第一个是ctrl也就是可控制的意思,在可控状态下可以输入指令出这一招,后面的stateno = 100也就是说跑步状态下也可以出(100是跑步状态)
trigger2-11是各个stateno触摸(包括防御,击中)后可以输入指令出这一招
trigger12大家注意到了,没有movecontact这个东西,但是有个time = [15,29],也就是说stateno在300这个状态时可以空振(未触摸对手)时输入指令出这一招,也可以触摸到对手输入指令出这招
trigger13后面就什么都没有了,但可以看成stateno - 731 && 1,也就是说,自己在731这个状态号时任意时刻可以输入指令出这招,比前面的要求就更低了

虽然说这么多trigger都可以实现连段,但不是每个都得用的,比如2D确认后你不会出招(除非这招万能追打)是一样的道理

因为是写连段,所以在AI里面,要改为movehit,还可以用movehit = A或者区间[b,c]的形式来指定这招击中后的时间,比如一个多段技,你可以用time >= A来确定打满时间,也可以用movehit >= A来写,但一般都用time >= A来写吧,因为保险点(笑)

所以现在我们给这个技能来写一个连段,举例:

;強百式・鬼焼き
[State -1, S ONIYAKI]
Type = ChangeState
Value = 1150
TriggerAll = var(59) = 1
TriggerAll = RoundState = 2
TriggerAll = Random <= 450
TriggerAll = StateType != A
TriggerAll = EnemyNear,StateType != A
TriggerAll = EnemyNear,StateType != L
TriggerAll = EnemyNear,MoveType = H
TriggerAll = P2BodyDist X = [B,C] ;距离要自己算好XDDD
Trigger1 = StateNo = 205 && MoveHit = [1,6] :由于hittime是硬直结束以后随时间减少的,要赶在hittime结束前触发这招的判定,比如这招发生是6F,205的打击硬直是12F,那么保险的time就是6或者6以下,后面同理
Trigger2 = StateNo = 215 && MoveHit = [1,6]
Trigger3 = StateNo = 235 && MoveHit = [1,6]
Trigger4 = StateNo = 245 && MoveHit = [1,6]
Trigger5 = StateNo = 315 && MoveHit = [1,6]
Trigger6 = StateNo = 400 && MoveHit = [1,6]
Trigger7 = StateNo = 410 && MoveHit = [1,6]

当然也可以加一个条件TriggerAll = EnemyNear,GetHitVar(Hittime) >= 5(虽然这招是6帧,但因为刚还原到0那1帧是不可控的,也可以算进去)

然后再提一点原则,就是带连击补正的连段,尽量用已经有的变量来控制连段,比如修正,hit数这些的,如果有限制就一定要按照限制来写,没有的话,但有连击补正那种的,自己又可以一直连的这种,用TriggerAll = EnemyNear,GetHitVar(HitCount) <= A这样的来写,实在不行自己加一个变量,但不要和原有的冲突,可以用变量或者是概率来控制让连段多样化

新手的话,最好写一点比较简单的系统或者人物的连招,像KOF02UM,KOFXIII,北斗系统这样的,建议不要直接上手,因为连段比较复杂,可以试试简单的,比如KOF98ADV系统这种连段不多的系统,多看看其他人是怎么写的,多领悟一下为什么要这么写,平常看的时候也能学到一些

好了,今天的课就先到这,如果您有什么问题的话可以私信我,我会第一时间给您答复,或者把问题发到我的邮箱

mizore@kotori.moe, 谢谢大家!

发表留言

秘密留言

等待许可的留言

此留言需要管理员的许可

アクセス

オンライン