【开发经验分享】如何设置Agent的face_key及type
潘德的预言吧
全部回复
仅看楼主
level 10
ShiGure_T 楼主
大家好,我是之前的士兵花名册模组的作者。这个模组会让普通士兵拥有名字,以及固定它们的面容,让它们像一个持久不变的人,增强代入感。
在1.7版本之前,本模组采用了以下方法:
1.将原生Agent藏到地下。
2.设置troop_face_key、troop_type。
3.此时克隆一个Agent。
4.复原troop。
以此来实现Agent的面部、性别保存及变更的效果。
原因很简单——原版没有agent_get/set_face_key、agent_get/set_type等操作码。
之前的方式是可以做到,但副作用不言而喻:兼容性差、克隆出来的agent不属于任何party会导致红字、占用战场上场人数(克隆体算友军,相当于双倍人数)、性能差等等等等...
在一次偶然的测试中,我发现agent脱下头盔/戴上头盔会导致面部甚至性别更换。
于是我就这样找到了一个破局点:
agent脱下/戴上装备,mesh绝对会随之刷新一次。
但为什么原版的agent通常情况下不会出现脱了装备就变脸变性的情况呢?
这是因为每个agent都有一个”dna“,也就是随机数种子。这个种子会决定它们落在face_key范围里的某个固定点上。
所以我们就可以反其道而行之:
1.首先,在脚本层面自己生成一串face_key,作为士兵的面容。
2.将Troop face_key的上界和下界均设置为上述face_key。以及或者将type设置成我们想要的type。
3.让原生Agent摘下头盔 ,再戴上头盔。
4.此时Agent就会变成我们需要的面容。即使它有dna作为种子也无济于事,因为Troop的facekey的上下界均被设死,它只能落在那个点上。
5.还原Troop的face_key以及Type。
这样,我们仅仅是简单地操作了一下原生的Agent,就实现了设置Agent面容/性别的方法!
这样性能极好,兼容性问题也不会太多。
欢迎使用2.0版本。
2026年05月23日 12点05分 1
level 6
厉害了
2026年05月23日 12点05分 2
level 8
膜拜大佬
2026年05月23日 12点05分 3
level 12
哇好厉害
2026年05月23日 12点05分 4
level 12
感谢大佬分享
2026年05月23日 14点05分 5
level 11
哇,好厉害,我看不懂[滑稽]
2026年05月23日 15点05分 6
level 12
流弊
2026年05月24日 20点05分 7
level 7
没看懂,但似乎很厉害
2026年05月25日 00点05分 8
1