找回密码
 开放注册
搜索
查看: 2775|回复: 14

關於NPC怎麼選擇最佳武器

[复制链接]
发表于 2018-8-29 12:45:15 | 显示全部楼层 |阅读模式
一些較細部的判斷我還沒搞懂,但在NPC可以使用(人物有相對應的攻擊動作)而且命中率也OK的情況下,一般武器選擇是計算出一個優先值再看哪個較高。
優先值 = (武器最大傷害 - 武器最小傷害) / 2,簡單來說就是AI認為武器傷害值的範圍愈大愈好,一把傷害1~50和一把傷害30~60的槍相比他們會選擇前者。

如果武器是手雷類的,優先值會乘上(持有數量+1),而如果武器有任何perk,優先值會再乘5,但檢查武器perk這部份有bug,所以其實不會有加乘,例如給Cassidy一把AK-112(傷害8~16,有perk)和FAL(傷害9~18,無perk),他只會選FAL。
要是兩件武器優先度差距在5以內就會看價格,如果還是一樣那就看哪件武器在物品欄內排序較下面。像Sulik一開始會用身上的大鐵鎚而不會用你給他的長矛的原因就是兩者優先度差距太小(原本沒算武器perk加成),所以他就會選比較貴的大鐵鎚。
另外如果其中一個武器旗標有設定“隱藏”(搜屍會看不到,甚至無法被物品相關的腳本函式辨認出來)就會直接選它,這旗標基本上只有用在一些NPC專用武器上。

修好檢查武器perk的部份會發生些有趣的狀況,最明顯的是在鑽油平台最後和Frank Horrigan對上時,他會變成優先拿刀(傷害15~30,有貫穿perk)而不是電漿槍(傷害30~70,無perk),因為計算出出來刀的優先度是35、電漿槍只有20,整場戰鬥可能會變得相對簡單許多。
簡單點的解法就是給電漿槍隨便塞個不重要的武器perk如夜視(在當下狀況根本沒用處)一類的,讓它也有乘5的加成好贏過刀子。也可以藉由調低遊戲引擎內部武器perk的優先值加成來解決,像改成乘3的話他就會拿槍。

发表于 2026-1-26 22:49:56 | 显示全部楼层
不给手雷不给连发
发表于 2018-8-29 21:48:21 | 显示全部楼层
``````最简单不是只给一把武器吗
发表于 2018-8-30 09:51:09 | 显示全部楼层
先用顺手的.........这算是加强npc的个性吧
发表于 2018-8-30 10:04:32 | 显示全部楼层
实际游戏中npc有时会“犹豫”,两把武器换来换去,不知是什么bug导致的。既然脚本选定了一把武器,按说一直用才对。
发表于 2018-8-30 10:09:53 | 显示全部楼层
wrhunter 发表于 2018-8-30 10:04
实际游戏中npc有时会“犹豫”,两把武器换来换去,不知是什么bug导致的。既然脚本选定了一把武器,按说一直 ...

那就是两把武器的优先级一致啊。。。
发表于 2018-8-30 10:53:49 | 显示全部楼层
老钱 发表于 2018-8-30 10:09
那就是两把武器的优先级一致啊。。。

同时装备近战和远程武器,其实根本跑不到敌人面前,但还是要换一下近战。
发表于 2018-8-31 09:09:03 来自手机 | 显示全部楼层
wrhunter 发表于 2018-8-30 10:04
实际游戏中npc有时会“犹豫”,两把武器换来换去,不知是什么bug导致的。既然脚本选定了一把武器,按说一直 ...

大多数情况是
明明重火器还有弹药
切换了近战武器后就一直捅捅捅捶捶捶
发表于 2018-8-31 11:52:40 | 显示全部楼层
貌似比较多遇到的是,设定优先使用远程武器,且有弹药的情况,战斗中队友NPC突然收起枪拔出长矛铁锤冲上去砍……

我遇到这种情况一般理解是:队友NPC看这个敌人极度不顺眼,感觉用枪不爽,要刀刀到肉、锤锤打飞才解恨……
 楼主| 发表于 2018-9-1 10:35:02 | 显示全部楼层
稍微多測試了一下,如果武器優先度差距在5以內就會看價格,如果還是一樣那就看哪件武器在物品欄內排序較下面。
另外要是其中一個武器旗標有設定“隱藏”(搜屍會看不到,甚至無法被物品相關的腳本函式辨認出來,幾種機器人用的武器有這旗標)就會直接選它。

首篇提到的Horrigan問題也可以由調低引擎內部武器perk的優先值加成來解決,像改成乘3的話他就會拿槍。
不過那已經超出bug修正的範圍所以就只是試試而已,不會加進sfall內,我現在是留個設定選項在INI檔內(默認為關)讓想啟用修正的人自己去開。
发表于 2018-9-2 11:32:38 | 显示全部楼层
優先值 = (武器最大傷害 - 武器最小傷害) / 2


其实本来是想算平均值吧 写程序的加减法傻傻分不清
 楼主| 发表于 2018-9-2 15:15:33 | 显示全部楼层
或許吧,不過程序代碼本身沒啥錯誤,背後的設計邏輯我就不特別去理了。如果是用平均值做為優先度基值,那我前一篇調低武器perk加成值就得調更低。
當然要大幅修改的話除了改成平均值之外,武器perk也只需要對特定一兩個(例如貫穿或擊退強化)進行加成,畢竟前面檢查命中率的部份早就過了。

一代這部份就簡單到只比武器價格,畢竟一代武器也沒多少把,而且基本上的確愈好的愈貴。
发表于 2026-1-22 15:31:57 | 显示全部楼层
給同伴一把武器即可,萬一不放心就給一把遠程,一把近戰武器
发表于 2026-1-28 12:26:14 | 显示全部楼层
其实队友武器还得考虑行动值,比如某武器伤害30,但是行动值要5点,一次只能打一发,另一把武器伤害20,行动值4点,一次可以打两发,实际伤害能有40点这样。。。
发表于 2026-4-29 11:09:53 | 显示全部楼层
LIYIFENG 发表于 2026-1-28 12:26
其实队友武器还得考虑行动值,比如某武器伤害30,但是行动值要5点,一次只能打一发,另一把武器伤害20,行 ...

如果考慮行動點數的話,還要考慮吃藥的問題,瘋狂藥,壯大靈,傑特
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

Archiver|手机版|小黑屋|13号避难所-旧人类论坛

GMT+8, 2026-6-4 06:15 , Processed in 0.939651 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表