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

Creation kit说明书04——NPC

2022-12-29 21:12 作者:甜味剂豆浆  | 我要投稿

越写越觉得无奈,唉。

10年前的老游戏了,玩的人不多了,更别说什么做什么MOD了。。。

我为什么还要坚持呢?我又在坚持什么呢?

这些东西真的会有人看吗?

还是做整合包算了,哈哈哈哈哈

话说我是不是忘了关于BS的视频了。。。

要不然跑路吧!

本期篇幅极长,包括

race(大概?)

NPC修改

随从制作

独特AI

商人和技能训练师的制作

并让他们能与你或其他NPC对话


我们将从一个种族开始,到让你创建的NPC活起来结束。

希望你和我都能继续坚持。

我们继续吧。



Race

首先,创建一个NPC至少确定他是什么东西。

人类,还是生物?

这些最开始由Race确定,并且设定好他们的初始属性和某些特性。

所以打开这一栏。


到这里,你可以看见一个有趣的事实,老人和小孩是单个的种族。。。每个种族的吸血鬼也是单独的种族。。。

所以。。。像某些将吸血鬼大君变为人的MOD其实就是将脚本里的种族转换弄了一些手段重新设置为人罢了。。。

好了,我们打开诺德人种族作为举例,逐一介绍每一个选项。

ID:CK里使用的名字

editing:男还是女?其实就是看看模型的变换,数据是通用的。

preview:预览模型,就是右边的那个白框,full就是全身,head就是头

keyword:关键词

第一部分

Skill Bonus: 1级为其提供的技能加成,最多七个,左边是哪一个,右边是值


Movement

Immobile: 无法移动。

Walks: 可以慢步移动。

Swims: 可以游泳,但movement中其他什么都不选就选这个项时无法在水外行动

Flies: 如果有手段,允许飞行,人类没翅膀嘛,怎么可能飞呢。。。

Avoids Roads:意义不明,没有种族选择这个项,所以当他不存在吧。。。

Not Pushable:防止任何事物在移动时阻拦其行动。

No Combat in Water: 无法在水中战斗。

No Rotating to Head-track:无旋转的头部跟踪动画

Uses Head Track Anims:使用头部跟踪动画


Specials:种族持有的ability,设定种族天赋技能,像战吼啊,天生抗性啊什么的,详情请见spell那一期


Stats

Starting Health: 1级生命值初始值。

Starting Magicka: 法力初始值。

Starting Stamina: 耐力初始值。

Base Carry Weight: 初始最大可携带重量值。

Health Regen: 每秒恢复生命值百分比。

Magicka Regen:法力百分比

Stamina Regen: 耐力百分比。

Size:这个选项影响的是在受到不卸之力这种效果时被影响的效果。


Flight Radius:允许的飞行半径,只影响龙。


Copied data

Morph Race:用不到的东西。。。将使用哪一个已有种族的形变。

Armor Race:一样,这个是材质。


Tilt Front/Back:意义不明。

Tilt Left/Right:意义不明。

No Shadow: 没有影子。

Spells align w/magic node:关于模型的东西,不是很懂。。。

Use World Raycasts For FootIK:一样。。。

Allow PC Dialogue: 玩家允许与其对话

No Knockdowns: 常时霸体,不会被任何击倒效果影响

Always Use Proxy Controller:不明。。。

FaceGen Head: 玩家限定,会在捏脸时有预设脸型。

Playable: 玩家可以玩。

Child: 被视为孩童,也就是死不了。

Allow Ragdoll Collision:允许出现布娃娃形态(就是被吼倒时四肢乱爬的时候)

Regen HP in Combat: 允许在战斗时生命自动恢复。

Allow Pickpocket: 玩家可以偷窃。

Can't Open Doors: 无法与门互动。

Allow Multiple Membrane Shaders:关于shader的东西,是否允许多个shader同时运用于其上。但莫名其妙的是原版的都没选,所以我建议你也别选。



第二部分

Height:默认高度

Weight:取值0——1。骨骼权重系列,关于模型我没研究过。。。不敢乱说。。。

Base mass:不明,不建议改。

下面都是模型相关,跳过吧。。。


第三部分

这里是受击出现的飙血这种反馈什么的

Impact Material Type:貌似是受击时出现的血液材质什么的。。。

Decapitate Blood Art:被斩首时出现的特效

Blood Spray:血液飞溅效果开启?

Blood Decal:血溅于身?

Weapon Blood:武器着血?


其他我也不是很懂,就不丢人了。。。


第四部分

介绍相关。


第五部分

Acceleration/Deceleration Rates

Acceleration Rate

Deceleration Rate

Angular Acceleration Rate

Angular Tolerance

Use Advanced Avoidance

上面的值都是用来修改达到最大速度时间的

一般用不到。。。


第六部分

这些是动画事件的某些参数选项,现在已经有了Payload Interpreter和SCAR,已经有些用不上了,在还没上面这些的先前时代的mod里,让NPC的AI更凶狠,挥剑时触发法术就需要修改NPC的这里了,不过不是在这里改,这里是改一个种族的全体的,NPC里也有这一栏,去那里改。

我们继续一个一个说。

Event: 事件名称,看名字改,不要改名字,像powerattackstart就是重攻击事件。

Dmg Mult: 攻击伤害乘数。

Attack Chance: 事件概率。

Stagger: 造成的硬直值。

Knockdown: 造成击倒的可能性。

Recovery Time:无用

Stamina Mult:耐力消耗乘数

Attack Spell: 事件同时使用法术,比如重击出一个大火球什么的。

Attack Type:由关键词判定条件

Attack Angle: 0为由正向出发为攻击范围,180为背后

Strike Angle: 攻击将会扫过的角度范围,现在已经有精准判定了。。。

Knockdown:不使用???

Checkboxes

Power Attack: 被视为重攻击,将消耗耐力

Ignore Weapon: 忽略武器影响伤害。

Bash Attack: 被视为盾击。

Left Attack:被视为左手攻击。

Rotating Attack: 不明。。。


第七部分

Injured Health Pct:不使用

Unarmed Damage: 空手伤害。

Unarmed Reach: 空手攻击距离。

Unarmed Equip Slot:空手肯定是双手,也就是bothhand啦

Aim Angle Tolerance:攻击角度偏差?

Can Pickup Items: 可否拾起物品并使用?

Can Dual Wield: 可以双持武器?

Non-Hostile: 不会触发战斗?

Equipment Restrictions: 可以装备的类型。自己看着也能明白吧。。。


之后捏脸的默认就行。。。原版捏脸什么的就不多说了。。。懂得都懂。。。


到此Race结束。我们转到actor来介绍一个NPC的各项参数设置。








NPC

现在到我们本篇的关键了,NPC,一个NPC的创建其实非常简单,但想让他有张独特的脸什么的,就要麻烦点,算了,慢慢来吧。

每个NPC都在这里。

我们打开莱迪亚作为解说,毕竟,老婆!!!!

(CK里男爵侍卫的名字都挺奇怪的,建议搜索formid,具体可以百度)

ID:在CK里使用的名字
Name:游戏中使用的名字
Short Name:一般用于任务,作为任务介绍或提示使用,尽量简短
Is CharGen Face Preset:将作为预设会在捏脸时使用,不过好像没用。
Essential;像小孩一样无法被杀死。
Protected:需要玩家补刀才能杀死。
Respawn:会在场景刷新时一起重生。默认为24天。一般用于敌人。
Unique:游戏中作为独特存在,独一无二,一般用于任务或随从判定,也就是说,当你觉得他应该很重要,就选上他。
Summonable:能被magic effect使用召唤效果?
Is Ghost:无敌,武器穿透他们没有任何效果(包括硬直),也不会触发攻击事件
Invulnerable:无敌,但武器会有攻击到他们的效果
Doesn't Bleed:被武器击中时,不会有溅血效果。
Simple Actor:该NPC没有任何表情,死亡或者受攻击也不会触发相应的事件
Doesn't affect Stealth Meter:当该NPC侦测到玩家时,不会影响你的隐匿状态,通常用于无害中立生物,狐狸 兔子 ,鹿等等。


Scirpt:脚本相关,本期不讨论。


Template Data

这些我们暂且略过,这部分你可以先理解为快速创造复制人用的。



Traits

Race:种族。
Female :勾选则为女性
skin:为此NPC换一个贴图,none即为默认
Height:高度,默认1.00
Weight:修改NPC的体重,有效范围0-100,游戏中可以用setnpcweight 修改。
far away model:没什么意义。
Voice type:语音类型,NPC使用的语音
Weapon List
Alignment
Disposition Base
这三个游戏中都没有用到,效果不明
death item :死亡时NPC身上会出现的的可拾取物品,是的,活着的物品和死亡的是可以不一样的。。。
OppositeGenderAnim:使用男性动作。



stats

Level:设置NPC的默认等级。

PC Level Mult: 是否跟随玩家等级?

Calc Min: 如果选择上面一项,NPC的最低限制等级。

Calc Max:最高限制等级。


Auto Calc Stats: 自动根据class计算并赋予NPC属性值?


Health Offset: 在最终生命值的基础对其进行修改,可以取正负。

Base Health: 由race,class,等级最终计算出的生命值。无法修改。

Calculated Health: 在加上Health Offset后最终在游戏中使用的属性值。无法修改。

Magicka Offset: 法力值。

Base Magicka: 

Calculated Magicka: 

Stamina Offset: 耐力值。

Base Stamina: 

Calculated Stamina: 


Speed: 人物行走速度。

Bleedout Override:如果人物有Essential,Protected的flag,则在跪地时恢复到??%生命值站起?


Class:决定NPC属性成长的设置。

它在这里。

我们随便打开一个。


ID:在CK里使用的名字。

Full Name: 显示的名字。


Auto-Calc Other

Training: 如果勾选,而且此NPC是技能训练师时,设定最大可以训练到多少。


Bleedout Default: 如果人物有Essential,Protected的flag,则在跪地时恢复到??%生命值站起?

Voice Points:意义不明。

Description: 不使用。

Menu Image: 不使用。


剩下的数值计算,每级提升NPC都会获得5点点数(这里可以在gamesetting里的fNPCHealthLevelBonus设置),之后将会按你设计的class计算提升。

举个例子,当NPC的初始值为100且NPC到了12级时,三维的最终值。

上图的权重值分别为2,1,3,最先计算生命值。

则最终为240(每级都会赋予10的生命值加成),110,130


技能呢?默认每级给与点数8点(在gamesetting中的iAVDskillsLevelUp设置)。剩下的自己算。



Faction

关于faction其实不是非常重要,但有几个很关键的faction需要你设置一下。

PotentialFollowerFaction 0      即为设置为潜在随从,会出现跟着我的选项。这是设置为随从的最简单的方法。

PotentialMarriageFaction 0     即设置为可结婚对象。

当然我仍然会写出所有的项的介绍,毕竟是说明书嘛。

关于faction,你可以看作用于判定对NPC和玩家敌对与否的设置,当然还有一些其他的东西。

具体设置在这里。

接下来我们来逐一介绍每一项。

Hidden from PC:意义不明。

Special Combat:意义不明。

Can be Owner:选择后将自动检测在cell(你这里可以理解为地图)上的NPC,建议选上。

Interfaction Relations: 修改与已有派系的关系,具体看下面。

Enemy:被视为敌人。

Neutral: 中立。

Friend:友好。

Ally: 盟友。

Group Combat Reaction: 按上面的选。

Members:具体指定一个NPC。


Rank:不使用。


Crime:关于犯罪管理的面板。但具体创建一个检测你是否犯罪的派系还需要一个quest,这我们留到quest篇再详细叙述,所以在本篇跳过。



Vendor Tab:主要用于判定商人的条目。

当然创建一个商人并不只是在这里设置就可以做到功能了,我们先描述一下这些是什么,之后再举例一个商人的创建。

Start Hour/End Hour: 商人做买卖的时间区间。

Location: 设置地点,这里需要你去地图找到你想要的地点去设置。

Radius:在这片地区的多少范围内设置为商店区域,是0也可以。

Vendor Buy/Sell List: 商人将会出售的物品,由formlist决定,这个我们之后一起说。

Not Buy/Sell:这个选项则是将会出售除你选择的formlist外的物品表单。

Merchant Container: 将你render window设置的某一个容器设置为存放商人出售的物品的箱子,在原版游戏里,他们一般都被放在了地下。

Only Buys Stolen Goods:设置为只销脏。


关于商人的创建,我们在本文的最后举例。先让我们把基本的项目说明完毕。


Realationship

这里则是详细设定与具体某一个NPC的关系。

ID: 在CK里使用的名字。

ParentNPC and ChildNPC:设置父级NPC与子级NPC,我在此举个例子,父级为莱迪亚,子级为玩家,就是莱迪亚与玩家的关系。

Relationship level: 等级关系,决定是否为敌或盟友。

Association type: 关系详细设定,这个自己看着翻译吧。。。



Keyword

关键字,主要用于设置条件函数,这里有三个原版有的且比较有意思的keyword。

ImmuneDragonPairedKill     无法被龙类动画斩杀

ImmuneParalysis    免疫麻痹

ImmuneStrongUnrelentingForce    免疫不卸之力效果,也就是各种吹飞什么的



Ai Data

这里是关于NPC的基本的AI设置,判定他们对战斗的欲望什么的。

Aggression:这个结合阵营关系faction Relationship决定NPC是否开始战斗
游戏中可以控制台setav Aggression (0-3)来设置
四个选项
0 Unaggressive:该NPC不会主动开始战斗
1 Aggressive:该NPC会主动攻击视野内的所有敌人
Very Aggressive 该NPC会主动攻击视野内的所有中立和敌对NPC 
Frenzied 该NPC会主动攻击视野内的所有人

2
.MOOD 心情:
很多选择,默认中立就行了,具体效果可以在面部表情那一栏预览

3.confidence:
5个选项
0 Cowardly:
懦夫 该NPC任何情况下都不会交战/逃跑
1 Cautious:
谨慎 不会交战/逃跑除非该NPC强于对手
2 Average :
不敌时会逃跑
3 Brave:
完全不敌时会逃跑
4 Foolhardy :
决不逃跑
注:3和4没什么区别:
Brave(莱迪亚)跪地时会喊“我打不过你,我认输”,Foolhardy(西塞罗) 跪地了一声不吭而已


4.Enery:
影响NPC(空闲时)四处游荡时在场景中从一个位置移动到另一个位置的频率
Assistance
Help Nobody
不帮助任何人
Help Allies:
帮助盟友
Help Friends and Allies
帮助朋友和盟友
Morality
Any Crime:
该NPC愿意犯任何罪行
Violence Against Enemies:
愿意对敌对NPC进行任何Crime
Property Crime Only :
只愿意进行财产Crime(盗窃,非法入侵)等,极少使用
No Crime:
该NPC拒绝任何Crime

Aggro Radius Behavior:
这个主要据点强盗,索寞士兵用,先警告 ,不然就继续警告或者开打,设置的值为距离。

Combat Style:在没有SCAR这个MOD之前对NPC战斗时的AI的设置,这个我们慢慢说。
Gift Filter:不明。


关于Combat Style的位置在这里。

我们随便打开一个来解释一下。

Offensive Mult :NPC的攻击频率,设定越高就会攻击的越凶狠

Defensive Mult:防御频率,设定越高就会持续防御的时间越久,越龟,而且如果有盾击perk,也会频繁使用盾击。

Group Offensive Mult :当有多数的NPC向一个为目标时,设定的值越高,他们同时发起攻击的概率越高。

Avoid Threat Chance :当NPC在远处时,躲避箭矢的概率

Equipment Score Mults :这些就是设定NPC对使用的攻击手段的偏好,分别为近战武器,弓箭,魔法,龙吼(或由z键触发的技能),法杖,空手。

Attack

Attack Staggered Mult:当目标处于蹒跚状态时会发起攻击的概率。

Power Attack Staggered:当目标处于蹒跚状态时会发起重攻击的概率。

Power Attack Blocking:当目标处于防御状态时会发起攻击的概率。

Special Attack:不明,但经测试貌似是使用z键spell的概率。我不敢确定。。。


Bash:

Bash Mult:调整在攻击时穿插会使用盾击的概率。

Bash Recoiled:调整当目标被盾击成功反击处于无法攻击状态时会发起盾击的概率。

Bash Attack Mult:调整当目标在发起攻击或正在攻击时使用盾击的概率。

Bash Power Attack Mult:调整当目标使用重击时,他会使用盾击的概率。


Misc:

Allow Dual Wielding:允许双持单手武器攻击,但对NPC有些小BUG,左手的武器时常会消失。。。

Dueling

勾选这一项时,NPC在与其作战时会尝试正面迂回作战,就是打着打着会慢慢往后退,然后突然一个向前重击这种莽夫NPC。

Circle Mult:会尝试做出左右位移举动的概率。

Fallback Mult:会尝试做出前后位移举动的概率。


Flanking:

这个其实不使用,不建议选

Strafe Mult:

这些是用于龙类生物的,所以我在此跳过吧。。。算了,还是一起写上了。

但众所周知,老滚里的龙类生物的AI都挺。。。

Dive Bomb Chance:不明。

Hover Chance:会选择悬停在某处的几率。

Ground Attack Chance:会选择着陆于对手交战的几率。

Perch Attack Chance :会选择降落再某些特殊地图标识地点的几率(这里要到地图修改篇了)

Flying Attack Chance:在空中使用spell的几率。

Hover Time:悬停在空中的时间区间。

Ground Attack Time:降落在地面上战斗的时间区间。

Perch Attack Time:降落再某些特殊地图标识地点的时间区间。


Ai packages

好了,到了本篇最繁杂的部分了,虽然说此部分你可以直接套用原版的package,但这里作为说明书,就应该尽可能齐全,吧?

什么是AI package?简单来说就是控制NPC的行动逻辑的设置,比如说纳齐姆每天都要在城内溜达,守卫不时进行的训练,强盗营地的强盗四处走动模拟巡逻,就由这个来设置,当然有些任务也使用到了AI package,不过这些暂时就不管了。

开始吧。

你可以在这里找到他。

我们再转到NPC页面。先说明在NPC栏里出现的东西都是啥。

AI Package List:管理package。

Default Package List:添加一个package,当上表中没有任何package时就使用此package

Spectator Override Package List:当被卷入战斗时且上表没有用于战斗时的package时使用此package,一般这个会设置一个驱动NPC逃跑的package。

Observe Dead Body Override Package List:当附近有个尸体时NPC使用的package。一般用于对尸体互动用(比如说祈祷或恐惧逃跑什么的)。

Guard Warn Override Package List:一般用于警戒,比如说当玩家进入到某个范围内就陷入战斗状态什么之类的,但一般改AI Data不就好了嘛。。。

Combat Override Package List:这个一般用于战斗时用的package,比如说战斗时坚守位置或者使用某些特定法术等等。


不过!一般我们使用列表里的package即可,这些不是必要使用。

好了,我们打开一个package,来介绍一个package是怎么生效的。

这里我将会使用原版就有的举个例子,其实原版的就够用了,一般自己做一个新的,我们接着慢慢说。


首先,package的构成为

package Template→package

其中的package Template这里简单来说就是NPC行为逻辑的构建。

package则是具体如何实现你想要的效果。


那么我们先在此介绍一个package Template的构成,再说说原版给你提供了什么框架,他们能干什么。

这里我们先用一个Template作为举例,看图吧。

我们先来说说这些东西是什么。

Base Data

ID: CK中使用的名字。

Package Type: 决定是Template还是package。

Owner Quest: 是否属于某一个quest中专用的package?就像瑟拉娜走向岳父对话质问他这一个场景就是调用了一个package。

Combat Style: 当这个package被启用时NPC是否使用某个combat style?也就是战斗AI。

Interrupt Override:不使用,因为没有一个原版的使用这玩意。


Package Tab

这里如果在上面的Package Type上选择了不同的选项,会有小小的不同,看图吧

这是选择Template后出现的

这个则是选择了package

其中的区别很明显,Template可以编辑一个叫Procedure Tree的东西,这里我就用一个词来解释吧。

行为树。

那么Public Package Data呢?

就是具体修改一个Procedure Tree其中的各项参数与设定,当你在tree中添加或修改其中的各项参数时,data一般也会随之改变,如果没有就自己添加,好了,我们先接着介绍之后的项目,别急。


Flags Tab

当你选择的是Package Type中选择package时会出现的选项系列这里一般都是条件参数,我们慢慢来吧。

Must Complete: 这个package无论什么情况都会结束他的流程,无论其中是否遭受特殊情况(就像战斗什么的)。

Once Per Day: 此package不会在同一天内被重复实行多次,除非你设置了condition。一般用于去睡觉的package,毕竟一般当你看见一个NPC不断的在床上做仰卧起坐太蠢了。。。

Always Sneak:执行这个package时NPC将一直处于潜行状态。

Allow Swimming: NPC将尝试走水路的方式到达指定的地点。

Allow Idle Chatter:允许NPC在执行这个package时启动对玩家的打招呼或闲谈言论(比如卫兵的吐槽)。

Ignore Combat: NPC将不会参与战斗,虽然此时他仍然被视为战斗状态。

No Combat Alert: 当敌对NPC搜寻到对手,将不会先警告你赶紧滚,等你到了某个距离再拔剑,而是直接开打。

Weapon Drawn: 执行这个package时NPC将拔出他们的武器。

Weapons Unequipped:执行这个package时NPC将装备的武器隐藏。

Wear Sleep Outfit (OBSOLETE):不使用。

Maintain Speed at Goal: NPC向目标地点前进时将会保持一个恒定速度,不会出现走一会,跑一会。

Preferred Speed: 与上面那个选项联动,设定NPC是走着去还是跑着去。

Hellos to player: 当玩家与其接近时会向其问好或吐槽。

Random conversations: 允许NPC参与Random Conversations,这个在对话篇继续深入。

Observe combat behavior: NPC会在别人打架时选择观战。

Reaction to player actions: 会对玩家的行动(比如放法术,挥剑什么的)做出反应。

Friendly fire comments: 对友军误伤做出言语反应。

Aggro Radius Behavior: 允许仇恨做出范围判断。(意义不明)。

World Interactions: 当你使用了必须为某个地点的condition时必须使用。

还有两个带有door的选项已被弃用。

Conditions

设置条件函数。我觉的看看原版和其他作者做的condition就明白其中的原理了,没有必要去专门写一篇关于condition的文章了吧。。。应该吧?

Schedule Tab

这个栏位可以让你设定这个package运行的具体到几点几分的时间。

我觉得这些英文你们应该能看的懂,就不翻译了。。。

Begin/End/Change Tab

一般不使用。

Idles

一般不使用。


好了!开始正式的讲讲Procedure Tree和Public Package Data。

首先我们需要了解什么是行为树。

么一转游戏策划了啊!!!!我不是干这行的啊!!!

简单的概括就是做出一个框架来告诉NPC什么时候该做什么,怎么做,做不做?

当然CK里的行为树没那么复杂,不过总有一种我在做游戏的感觉了,不是吗?

先看看图吧。

在此蓝色的你可以理解为树的根,决定分支是怎么运行的,右边给出了提供的类别。

它的名字叫branch

下面的用线分出来的就是树的枝桠了,他们决定AI的行动逻辑,右边给出了可以修改的type和值。

它的名字叫procedure

首先要有branch,才能有procedure,一颗树不可能只有树叶没有数枝吧。


branch分为以下几个type。

Random:该branch将视情况选择一个可执行的procedure执行。

如果你学过程序语言,你可以理解为if条件语句,

如果你没学过的话。。。这么说吧,现在有苹果,梨子,火箭筒,现在要你去选一个可以干架的东西,你会选什么?这样讲不知你会明白吗?

Sequence:该branch将逐一执行所有procedure直至结束。就是把所有你列出的事全部干一遍。

Simultaneous:该branch将同时执行所有procedure直至目标完成。比如说强盗在巡逻同时跟随附近的队友。当然了,如果有一个procedure未被实现,将持续此package直至完成实现。

Stacked:这个branch你可以看成是灵活版的Random,此branch将会视情况选择可以执行的procedure并执行之,而且其他的procedure也会保留,并继续看情况执行,直至此package停止被调用。


branch讲完了,我们来讲讲procedure,CK里给你提供了29种,很可惜的是不能添加或减少其中的具体细节,这些东西都是被定死的,在此我会给出每一个type提供的参数。

但在开始之前,我们先来说说int,float,bool是什么。

int:指定数值为整数。

float:指定为浮点数,这里你可以看成可带小数点的数值。

bool:用于判定是或否,是(true)就是启动,否(false)就是关闭。



Acquire

NPC会捡起指定的物品至他的物品栏中,直至目标完成。

Target (Target): 指定目标。

NumToAcquire (Int): 数量。

AllowStealing (Bool):允许获取已被标记为他人的物品?

AllowPickpocket (Bool):允许偷窃以获取此物品?

AllowKilling (Bool): 如果物品在NPC身上,允许击杀后再获取此物品?



Activate (Procedure)

NPC将与指定的物品互动。

Target (Target): 指定目标。

NumToActivate (Int):互动多少次?



Eat (Procedure)

NPC吃食物。

FoodType (TargetSelector): 指定何种类型?

CreateFakeFood (Bool)允许吃不在自己身上的食物?



Escort (Procedure)

护送或带领指定actor至目标地点。

EscortedActor(s) ( Target ) 指定被护送的人选。

NumberToEscort ( Int ) 指定此package可同时被调用人数。

Destination ( Location ) 指定目标地点。

EscortWaitDist ( Float ) 设置NPC将到达距离目标地点还剩多少距离时,将停止行动。

FollowMinDist ( Float ) 设置与目标相隔的最小距离,当距离过近时会主动拉开距离。

FollowMaxDist ( Float ) 设置与目标相隔的最大距离,当超过此距离时会跑步接近目标。

RideHorseIfPossible ( Bool ) 允许骑马?

PreferPreferredPath ( Bool ) NPC将会按照地图提供的最优地图标记行动直至到达目标地点。

RunIfBehindDist ( Float ) 如果被护送者与其超过了此距离时,将会跑步追赶至FollowMaxDist。



Find (Procedure)

NPC将搜寻指定的物品,但不做如何事。


SearchLocation (Location): 指定NPC搜索的范围区域。

TargetSelector (TargetSelector): 指定搜索的事物。

ObjectList (ObjectList): 这个项不做任何事,只是储存数据用于被其他procedure调用,比如eat。

SearchOwnerInventory (Bool): 可否从自身的物品中搜寻目标事物?

RandomizeList (Bool):可否随机化list中的事物?



Flee (Procedure)

让NPC单纯的逃跑或逃跑至某个目标点。


FleeFrom (Target): 选择目标。

FleeTo (Location): 选择地点。

UseDynamicGoalInstead (Bool): 如果是true,将使用FleeFrom而不使用FleeTo,false则相反。

GoalRadius (Float):在使用FleeTo使用,指定目标地点的半径,这通常用于你指定的不是某个确切的地点使用。

AvoidNodeRadius (Float): 与威胁始终相隔的距离。

FleeDist (Float): FleeFrom时使用,当与威胁距离多少距离时此package结束运行。

tRideHorseIfPossible (Bool): 会找到他的马骑上再逃跑吗?

ForgetDeadThreats (Bool): 威胁已死时是否还是逃离?

Quiet (Bool): 会不会说台词,只管跑路?

CountAsIsFleeing (Bool): 将NPC视为逃跑状态,用于condition判定。



FlightGrab (Procedure)

不明,貌似没有任何package使用这个玩意。



Follow (Procedure)

NPC将跟随指定actor。

Target (Target): 指定跟随目标。

MinRadius (Float): 设置与目标相隔的最小距离,当距离过近时会主动拉开距离。

MaxRadius (Float): 设置与目标相隔的最大距离,当超过此距离时会跑步接近目标。

GoToLeadersGoal (Bool): 为true时,将尽量走在跟随目标之前模拟前卫。

RideHorseIfPossible (Bool): 如果有马就骑马。

NeedLOS (Bool): 为true时,在视线外时将停止跟随。



FollowTo (Procedure)

大体与上一个相同,就是加了个参数。

EndLocation (Location):到达指定的区域时停止跟随。



ForceGreet (Procedure)

用于让NPC说出指定的对话。

Topic (Topic): 指定某一句对话。

NPCWaitLocation (Location): 指定某个地区,玩家进入时将进入判定。

TargetTriggerLocation (Location): 这个则是NPC判定区域。



Guard (Procedure)

指定npc在他人进入指定的范围内会先向其拔剑警告并说警告台词,之后会发起攻击,像有些强盗就是这样的。


RestrictedArea (Location):指定此NPC进入package运行的区域。

SuspiciousOf (TargetSelector): 指定警告的faction,如果是玩家则是PlayerFaction

WarnOnlyRadius (Float): 如果指定的人员进入指定的范围内将发出警告。

ImmediateAttackRadius (Float): 这个则是攻击范围。



HoldPosition (Procedure)

指定NPC在战斗时所处的位置。

Location (Location):指定位置。


Hover (Procedure)

不明。貌似用于龙类。



KeepAnEyeOn (Procedure)

此NPC将会把视线一直投向指定的目标,这个一般用于与其他的procedure联动用。

TargetToObserve (Target): 指定目标。

ObservationArea (Location): 当目标在这个位置时,将监视目标。同样,如果目标离开该位置,监视将结束。

EndPursuitArea (Location): 当目标进入某个指定的地点时,将结束监视。


LockDoors (Procedure)

NPC将锁上指定的门。一般与travel同时使用。

Location (Location): 要锁上的门。

WarnBeforeLocking (Bool): 如果为true,则会在锁上门之前警告玩家。


Orbit (Procedure)

让能飞的玩意在指定的地点范围内绕圈飞行。


TargetLocation (Location): 地点。

InnerRadius (Float): 飞行绕圈不会小于此半径。

OuterRadius (Float): 飞行绕圈不会大于此半径。

Height (Float): 设定的高度。


Patrol (Procedure)

NPC将会随着指定的地点进行巡逻。


PathStart (Target): 巡逻时需要达到的位置。

PointRadius (Float): 允许NPC偏移设定的巡逻点的半径,因为一般总是会有很多东西可能会挡住你设定的点。。。

Repeatable (Bool): 设定为true时,NPC将会一直随着指定地点循环巡逻直到此package被停止使用。

StartAtNearestPoint (Bool): 如果为true,NPC将会从离他最近的点开始巡逻而不是从头开始。

RideHorseIfPossible (Bool): 如果为true,会骑马。

StaticPathing (Bool): 不明。


Sandbox (Procedure)

NPC将会在指定的范围内与任意可互动物品互动,就像瑟拉娜打铁那种。


Location (Location): 指定NPC会与其互动的区域。

AllowEating (Bool): 允许吃东西。

AllowSleeping (Bool): 允许找张不属于任何人的床睡觉。

AllowConversation (Bool): 允许与他人交谈。

AllowIdleMarkers (Bool): 允许使用空闲动画。

AllowFurniture (Bool): 允许使用家具。

AllowSitting (Bool): 允许使用椅子类型的家具(就是坐在上面的那种)。

AllowWandering (Bool): 允许在此范围内随便乱逛。

WanderPreferrefPath (Bool): 如果为true,NPC将会在乱逛时首先选择站在指定的navmesh triangles上(这里你可以理解为地图标识处)。

Energy (Float): 设定以上的行为每种将会持续的时间。

AllowSpecialFurniture (Bool): 允许使用附魔台这种类型的家具。

MinWanderDistance (Float):跟WanderPreferrefPath差不多的效果。


Say (Procedure)

不推荐使用!!!


Shout (Procedure)

让NPC使用指定的shout(龙吼类型,就是按z键那个)。


Location (Location): 指定NPC会在使用shout前所处的位置。

Shout (TargetSelector): 指定shout。

Target (Target):指定目标。

HoldWhenBlocked (Bool): 如果目标有任何生物阻挡,将不会使用shout。

JustHeadtrack (Bool):使用跟踪功能,此举是为了能在移动中使用。


Sit (Procedure)

莱纳,你坐呀!


Target (Target): 指定一个家具。


Sleep (Procedure)

指定一个家具,然后睡觉。


Travel (Procedure)

NPC将走向目标地点。


Destination (Location): 目标地点。

RideHorseIfPossible (Bool): 可以骑马吗?


UnlockDoors (Procedure)

NPC将会锁上门。


UseIdleMarker (Procedure)

NPC将会使用指定的空闲动画。


UseMagic (Procedure)

NPC使用一个魔法。

Location (Location): 施法前将会达到的位置。

Spell (TargetSelector):使用什么法术。

HoldWhenBlocked (Bool): 如果目标前方有遮挡物,取消施法。

CastTimeMin (Float): 最小蓄力时间。

CastTimeMax (Float): 最大。

CoolDownTimeMin (Float): 最小施法CD。

CoolDownTimeMax (Float): 最大。

DualCast (Bool): 允许双手施法。


UseWeapon (Procedure)

允许NPC使用武器进行行动。


Location (Location):确定做出攻击行动前会处于的位置。

Weapon (TargetSelector): 选择武器类型或具体化。

Target (Target): 选择目标。

AlwaysHit (Bool): 用于脚本事件判定用,如果为true,击中目标将触发onhit事件。

RepeatFire (Bool): 如果为true,NPC将持续行动至此package被停止调用。

VolleyFire (Bool):为true将启动计时判定,在下面的VolleyWait设置。

DoNoDamage (Bool): 攻击将不会触发伤害判定。

HoldWhenBlocked (Bool): 如果目标前方有遮挡物,取消施法。

VolleyWaitMin (Float): 攻击间隔最小时间。

VolleyWaitMax (Float): 最大。

VolleysPerBurst (Int): 无用。

VolleyShotsMin (Int): 一次间隔攻击会攻击的最小次数。

VolleyShotsMax (Int): 最大。

AllowCombatStart (Bool): 目标被击中时将正常触发战斗?

AimWithoutFiring (Bool):如果为true,将不会发起攻击。

AlwaysPowerAttack (Bool): 攻击总是重击。

DoHeadTracking (Bool): 不明。

BlockPercent (Float): 不明。


Wait (Procedure)

计时器。


ActualSeconds ( Float ) 程序在完成之前将等待多少真实世界的秒数,不计算游戏菜单中的时间。

topMovement ( Bool ) 如果为true,它会让NPC停止移动——也就是说,它会停止演员的寻路/运动。(它不会停止任何其他附带的动画。)


Wander (Procedure)

NPC将在确定的范围内随便乱晃。


Location (Location): 确定范围。

PreferredPathOnly (Bool): 如果为true,NPC将会首先寻找navmesh点并前往此点。

RideHorseIfPossible (Bool):可以骑马吗?

MinimumDistance (Float): 确定最小活动半径。


好了,我已经把所有提供的模板都写给你了,剩下的自己去用package做一个并用于NPC上面吧,首先看看瑟拉娜是怎么做的吧。

举例子的话,等我整个视频出来,本来想直接搬运一个外网的再打上注释让你们自己去看,但想想还是自己来吧。。。

这里还有个MOD可以参考。

使用package对NPC的AI大修。

https://www.nexusmods.com/skyrimspecialedition/mods/21654


在B站翻翻没想到还找到了想搬运的视频,请看P6,P7

全英文,但照着我写给你的看他怎么做也能明白怎么实现。

这两p分别是让NPC能骑马和模拟卫兵训练。

BV1ta4y1v7dD

dark127老师!你真的太牛逼啦!!!!

当然视频也在路上。

Inventory

我们再转回NPC界面继续介绍。

Default Outfit: NPC将会穿在身上的服装outfit。

Sleep Outfit: 不使用。

Outfit Objects:只是预览服装,无法修改。

Geared Up Weapons: 不使用。



Inventory List: 物品栏内拥有的物品。


Object: 名字。

Count: 数量。

Health%: 不使用。

Owner/Faction: 被判定为设定的派系所属的物品,拿取将视为偷窃。

Global Variable: 不使用。

Required Rank: 不使用。

Preview Calculated Result: 不使用。



那么这个outfit是什么?

用来专门管理NPC穿的服装的管理器,但无法用右键添加修改事物,只能拖动至栏位内(很难不想骂娘。。。陶德,吃我一拳!)

他能在这里找到。

我们打开白漫城卫兵的outfit看看。

这个绿色的又是什么?

就是levellist。随玩家等级的改变而改变的物品表单。这么说吧,当你20级时,强盗会用矮人装备,40级时,会出现魔族装备,这些就由levelitem决定NPC身上的随机战利品。宝箱也一样。遇见的敌人也一样。

它在这里。

我们随便打开一个。

这里是减少火焰抗性的毒药。

我们介绍一遍什么是什么就很清晰了。

ID: CK里使用的名字。

Calculate from all levels <= PC's level: 如果选中此项,其中的物品将会始终使用小于或等于玩家等级的物品,不选则将会在与玩家等级相同时才会使用此物品。

Calculate for each item in count: 如果这个将会用于其他levellist中,选中时将会计算其中的等级限制,不选则按另一个设置的算。

Use All: 与前两个互斥,无视等级使用所有。

Special Loot: 用于独特战利品宝箱什么的。



Object:确定物品。

Level: 确定当玩家多少级时将使用。

Count: 数量。

Health:武器与装甲用,100 或以下为普通、110 优良、120 高级、130 精致、140 无瑕、150 史诗, 160-200 传奇。

Owner: 是否为某个NPC或派系所有物?

Preview Calculated Result: 只是预览效果。



spelllist

没什么可说的,自己加吧。。。

不过要随等级改变的法术可以用这个。跟上面的那个levellist一样的。



attack data

这个你可以返回看race那里。



其他的没什么可说的了。因为不是改不了就是没什么用的东西。

至于关于随从的制作,这里贴吧有个贴子,关于怎么做一个高模头NPC/随从,非常详细了,看的我都想照抄了,哈哈哈哈哈

https://tieba.baidu.com/p/7013518109?pn=1


当然你也可以看看这个视频系列,虽然是机翻但也够用了。

BV1b3411k7q4

路西恩随从的作者制作的教程,教你怎么做一个随从。

总计下载量有几百万了吧,非常有趣的随从。


当然,我的视频也在路上。


让我最后随便一点吧。。。到这里已经有18000字了。。。

本来写了20000字,删删改改剩下这些。。。麻麻滴写论文都没写过这么长过。。。

等等!还有对话和商人和训练选项是怎么做到的还没写,好吧。。。

要不?我们留到quest篇?

先这样吧。。。

(孤独摇滚完结了啊啊啊啊啊啊啊啊!!!!我当场发电啊啊啊啊啊啊啊!!!!快出第二季啊啊啊啊啊啊啊!!!!!)


























(还没写完,或者说,刚刚开始。。。先放着。。。我会做完它的。。。给我一点时间。。。)






在开始这一篇章前我们先来了解一下quest。

他在这里。

quest,简单来说就是管理游戏里所有的任务相关,这时你肯定会很奇怪,为什么我只是写个对话还需要创建一个quest?

你去问B社吧。。。鬼TM知道他们为什么不把这一模块拆分开来单独做一个项。。。

总之,所有在老滚的对话,都是由所谓的任务驱动的,NPC的每次场景对话都是触发一次任务,了解后是不是突然觉得有点搞笑?

好了,关于对话的创建,quest是绕不开的了,不过在此篇章里你不需要写什么脚本来启动那些效果,实现还是很简单的。。。

新建一个quest吧,在NPC篇里我们就只谈怎么建立对话,其他的东西我们等到quest篇里再说吧,quest篇要写起来更加恐怖啊。。。必须涉及到脚本了。。。不过脚本什么的也不是什么太狠的活,我们到脚本篇再说吧。

我们先来介绍一下关于对话的quest的项目。

(干他妈的,B社,赶紧把你破逼引擎换了吧!陶德!吃我一拳!)


我们先新建一个quest

我这里就拿个原版有的作为示范吧

先让我解释一下第一个页面都是什么东西

ID: 在ck里使用的名字

Quest Name: 玩家将会在游戏里查看任务时会出现的名字。

Priority: quest优先级,一个人物如果有多个quest时数值大的将优先执行。

Event: 

Start Game Enabled: 

Important! 

Warn on alias fill failure: 

Allow Repeated Stages: 

Type: 

Recompile All Papyrus Scripts: 

Export Quest Dialogue: 

Export Scene Dialogue: 

Calculate Voice Assets: 

Quest Conditions: 

Text Display Globals: 


Creation kit说明书04——NPC的评论 (共 条)

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