Creation kit说明书04——NPC
越写越觉得无奈,唉。
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会主动攻击视野内的所有敌人
2 Very Aggressive 该NPC会主动攻击视野内的所有中立和敌对NPC
3 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能骑马和模拟卫兵训练。
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
当然你也可以看看这个视频系列,虽然是机翻但也够用了。
路西恩随从的作者制作的教程,教你怎么做一个随从。
总计下载量有几百万了吧,非常有趣的随从。

当然,我的视频也在路上。
让我最后随便一点吧。。。到这里已经有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: