欢迎光临散文网 会员登陆 & 注册

【只狼mod】如何利用ai法强制调取敌人动作

2023-01-09 00:05 作者:Last孤影众丶  | 我要投稿

相信看到这篇文章的各位,多多少少都是有一些只狼mod制作基础了,就算没有,也一定是对mod制作比较感兴趣。今天的内容涉及到只狼的事件编辑和非常简单的ai编辑,主要是和大家介绍原理和方法,感兴趣的可以收藏一下。

菜鸟的只狼事件编辑入门教程

首先看过我三个事件教程视频的朋友,一定熟知事件中的一个代码:强制调取动作

ForceAnimationPlayback(xxxxxxx, xxxx, false, false, false, 0, 1);

这个代码允许我们强制调取敌人的动作,但其实它还是有缺陷的,就我研究的来说,他只能调取ax00_0400开头,ax00_20000开头和ax00_21000的敌人的空闲动作(非战斗动作),当然ax00_20100开头的动作就不能调用,一般这个动作是敌人被灰烬团致盲或者女性中毒硬直的动作。

除此之外,ax00_003000开头的所有战斗动作,这个代码都能强制调取,而ax00_003100往后虽然是3开头的动作,依旧无法调取。

所以说,这个句代码虽然效果强大,但是依旧存在不少限制,除了上面提到的动作无法全部调取,还有一个比较重要的点:
通过ForceAnimationPlayback调取的动作会做到整个动作结束为止,只适合调用单一动作,一旦调用连贯的多个动作,我们只能自己看动作编辑器数,然后设置一个计时器,时间一到转到下一个动作,过程很是繁琐;如果是再通用事件中,我们甚至需要将浮点值转换为十六进制,然后再转化成十进制。

这两个点一直困扰着我,我一直在想办法解决无法调取所有动作这件事,结果没想到答案在ai里。

我们应该都记得,当我们被内府第一次入侵时,我们会从水路进到主城,此时我么很大概率会被梯子上的一位孤影众发现,而在正常情况下,他的出招必定是先峰脚。

原因就在于事件配合ai,强制他出3220,也就是先峰脚招式攻击我们。

事件代码

我们可以看到,事件判断我们进入某个区域,通过代码:

RequestCharacterAICommand(X0_4, 10, 0);

给孤影众了一个编号为10的AICommand,然后孤影众的logic ai中判定,如果孤影众接受到GetEventRequest()==10,那么就优先级最高的执行动作3220,也就是先峰脚。

然后事件检测到孤影众先峰脚结尾的特效3147010,再次将AICommand设置为-1,也就是清除了,让孤影众的ai恢复正常,用这种办法达成了类似的强制调取动作。

于是我将代码提取出来:

local f1_local0 = arg1:GetEventRequest()

if f1_local0 == 10 then

        arg1:AddTopGoal(GOAL_COMMON_AttackTunableSpin, 10, 201040, TARGET_ENE_0, 9999, 0, 0, 0, 0)

        return true

    end

我们将这段代码加在


if COMMON_HiPrioritySetup(arg1) then

        return true

    end

后面,填上动作编号,搭配事件编辑,即可轻松调取我们想要的动作。
需要注意的是,我们在将敌人的AICommand设置成10时,我们可以利用ai的优秀性能,做出一套连贯的动作(只要动作编辑器里把combo条设置好),但是请务必在动作的末尾设置一些动作,从而让他被检测到,使得AICommand再次被设置回-1,让敌人的ai恢复正常,不然敌人会一直重复这套动作(除非你有这方面的需要)

经过我的测试,所有动作,只要在动作编辑器里面的,都可以用这种办法调用,可以说他一连解决了事件编辑器的两大缺点:不全和不连贯。

需要注意的是,这个办法并不是万能的,我们应当尽量在非战斗人员身上使用这个技巧,因为不同于事件编辑,他不能中断敌人的动作来强制动作,而是遵循着ai的逻辑,在到达ai词条的时候才能做出我们想要的动作,具有延时性,所以不推荐大家用在战斗敌人身上。

同时还有一个比较麻烦的事情,那就是ai修改是不方便的,需要我们修改ai文件后,重新封包,然后重新打开游戏,这一点远远比不上事件编辑器的热更新便捷,所以我们在修改时一定要慎重注意,如果事件编辑器可以轻松调用,就不要用ai法调取动作了。

总的来说,两个办法有利有弊,大家根据需求自己选用就行了,今天就说这么点,没想到一个小东西能写这么多。


【只狼mod】如何利用ai法强制调取敌人动作的评论 (共 条)

分享到微博请遵守国家法律