四、打击目标标记在第四章中,我们手动使用KillForce函数和DoHarmToMajor函数对敌方士兵和主将进行杀伤。事实上,在群2武将技中这是比较少见的做法;更多情况下是,我们将物件指定杀伤的目标,当物件碰到(刮到)敌方士兵或主将时,由EXE来判定进行杀伤。
回顾上一章中我们提到的标记(Flags)。我们特意提到了这样一类标记,即打击目标标记。打击目标标记的作用是:告诉EXE,当物件坐标与战场上哪一类单位重合时(即,刮到哪一类单位时),对该单位造成杀伤——
OF_ENEMYGENERAL = 0x01000000 ;對敵方的武將有效
OF_ENEMYFORCE = 0x02000000 ;對敵方的小兵有效
OF_MYGENERAL =0x04000000 ;對我方的武將有效
OF_MYFORCE = 0x08000000 ;對我方的小兵有效
OF_ATTACKENEMY = 0x03000000 ;只對敵方有效
OF_ATTACKMY = 0x0c000000 ;只對我方有效
OF_ATTACKALL =0x0F000000 ;對敵我雙方都有效
实际上,打击目标标记只有4个:OF_ENEMYGENERAL、OF_ENEMYFORCE、OF_MYGENERAL、OF_MYFORCE。其它的标记只是这4个标记的叠加(相加)。例如,OF_ATTACKENEMY实际上是OF_ENEMYGENERAL和OF_ENEMYFORCE的叠加, OF_ATTACKMY则是OF_MYGENERAL和OF_MYFORCE的叠加;OF_ATTACKALL则是所有4个标记的叠加。
在这些标记中,主将标记和士兵标记又有所不同。如果打上了杀伤士兵的标记,意味着该物件只要擦到敌方(或我方、敌我)士兵,就会直接导致士兵死亡;但是如果打上了杀伤主将的标记,并不会自动对武将造成伤害。对主将造成伤害需要经过
回调函数进行。
设置标记的方法和第五章中一样:要么,我们在Things点ini中直接设置指定的武将技物件的标记,要么,我们使用代码进行设置。由于我们射出的箭支物件是和落月弓共用的,因此,我们采取代码设置的办法,避免影响落月弓武将技的逻辑。出于演示的目的,我们暂时将打击目标标记设置为OF_ATTACKENEMY,以展示“擦到即死”的效果。我们将以下代码放在主函数中,asynccall所在行的后面一行:

不过,仅仅是这样还不够——因为箭支太高了,会从士兵的头上飞过去,这样是打不到士兵的。因此我们临时稍作调整,把之前调整箭支位置时的z轴偏移从80改为0:
