Creation kit說明書04——NPC
越寫越覺得無奈,唉。
10年前的老游戲了,玩的人不多了,更別說什么做什么MOD了。。。
我為什么還要堅持呢?我又在堅持什么呢?
這些東西真的會有人看嗎?
還是做整合包算了,哈哈哈哈哈
話說我是不是忘了關(guān)于BS的視頻了。。。
要不然跑路吧!


本期篇幅極長,包括
race(大概?)
NPC修改
隨從制作
獨(dú)特AI
商人和技能訓(xùn)練師的制作
并讓他們能與你或其他NPC對話
我們將從一個種族開始,到讓你創(chuàng)建的NPC活起來結(jié)束。
希望你和我都能繼續(xù)堅持。
我們繼續(xù)吧。

Race
首先,創(chuàng)建一個NPC至少確定他是什么東西。
人類,還是生物?
這些最開始由Race確定,并且設(shè)定好他們的初始屬性和某些特性。
所以打開這一欄。

到這里,你可以看見一個有趣的事實(shí),老人和小孩是單個的種族。。。每個種族的吸血鬼也是單獨(dú)的種族。。。
所以。。。像某些將吸血鬼大君變?yōu)槿说腗OD其實(shí)就是將腳本里的種族轉(zhuǎn)換弄了一些手段重新設(shè)置為人罷了。。。
好了,我們打開諾德人種族作為舉例,逐一介紹每一個選項。
ID:CK里使用的名字
editing:男還是女?其實(shí)就是看看模型的變換,數(shù)據(jù)是通用的。
preview:預(yù)覽模型,就是右邊的那個白框,full就是全身,head就是頭
keyword:關(guān)鍵詞

第一部分

Skill Bonus:?1級為其提供的技能加成,最多七個,左邊是哪一個,右邊是值
Movement
Immobile:?無法移動。
Walks:?可以慢步移動。
Swims:?可以游泳,但movement中其他什么都不選就選這個項時無法在水外行動
Flies:?如果有手段,允許飛行,人類沒翅膀嘛,怎么可能飛呢。。。
Avoids Roads:意義不明,沒有種族選擇這個項,所以當(dāng)他不存在吧。。。
Not Pushable:防止任何事物在移動時阻攔其行動。
No Combat in Water:?無法在水中戰(zhàn)斗。
No Rotating to Head-track:無旋轉(zhuǎn)的頭部跟蹤動畫
Uses Head Track Anims:使用頭部跟蹤動畫
Specials:種族持有的ability,設(shè)定種族天賦技能,像戰(zhàn)吼啊,天生抗性啊什么的,詳情請見spell那一期
Stats
Starting Health:?1級生命值初始值。
Starting Magicka:?法力初始值。
Starting Stamina:?耐力初始值。
Base Carry Weight:?初始最大可攜帶重量值。
Health Regen:?每秒恢復(fù)生命值百分比。
Magicka Regen:法力百分比。
Stamina Regen:?耐力百分比。
Size:這個選項影響的是在受到不卸之力這種效果時被影響的效果。
Flight Radius:允許的飛行半徑,只影響龍。
Copied data
Morph Race:用不到的東西。。。將使用哪一個已有種族的形變。
Armor Race:一樣,這個是材質(zhì)。
Tilt Front/Back:意義不明。
Tilt Left/Right:意義不明。
No Shadow:?沒有影子。
Spells align w/magic node:關(guān)于模型的東西,不是很懂。。。
Use World Raycasts For FootIK:一樣。。。
Allow PC Dialogue:?玩家允許與其對話
No Knockdowns:?常時霸體,不會被任何擊倒效果影響
Always Use Proxy Controller:不明。。。
FaceGen Head:?玩家限定,會在捏臉時有預(yù)設(shè)臉型。
Playable:?玩家可以玩。
Child:?被視為孩童,也就是死不了。
Allow Ragdoll Collision:允許出現(xiàn)布娃娃形態(tài)(就是被吼倒時四肢亂爬的時候)
Regen HP in Combat:?允許在戰(zhàn)斗時生命自動恢復(fù)。
Allow Pickpocket:?玩家可以偷竊。
Can't Open Doors:?無法與門互動。
Allow Multiple Membrane Shaders:關(guān)于shader的東西,是否允許多個shader同時運(yùn)用于其上。但莫名其妙的是原版的都沒選,所以我建議你也別選。
第二部分

Height:默認(rèn)高度
Weight:取值0——1。骨骼權(quán)重系列,關(guān)于模型我沒研究過。。。不敢亂說。。。
Base mass:不明,不建議改。
下面都是模型相關(guān),跳過吧。。。
第三部分

這里是受擊出現(xiàn)的飆血這種反饋什么的
Impact Material Type:貌似是受擊時出現(xiàn)的血液材質(zhì)什么的。。。
Decapitate Blood Art:被斬首時出現(xiàn)的特效
Blood Spray:血液飛濺效果開啟?
Blood Decal:血濺于身?
Weapon Blood:武器著血?
其他我也不是很懂,就不丟人了。。。
第四部分

介紹相關(guān)。
第五部分

Acceleration/Deceleration Rates
Acceleration Rate
Deceleration Rate
Angular Acceleration Rate
Angular Tolerance
Use Advanced Avoidance
上面的值都是用來修改達(dá)到最大速度時間的
一般用不到。。。
第六部分

這些是動畫事件的某些參數(shù)選項,現(xiàn)在已經(jīng)有了Payload Interpreter和SCAR,已經(jīng)有些用不上了,在還沒上面這些的先前時代的mod里,讓NPC的AI更兇狠,揮劍時觸發(fā)法術(shù)就需要修改NPC的這里了,不過不是在這里改,這里是改一個種族的全體的,NPC里也有這一欄,去那里改。
我們繼續(xù)一個一個說。
Event:?事件名稱,看名字改,不要改名字,像powerattackstart就是重攻擊事件。
Dmg Mult:?攻擊傷害乘數(shù)。
Attack Chance:?事件概率。
Stagger:?造成的硬直值。
Knockdown:?造成擊倒的可能性。
Recovery Time:無用
Stamina Mult:耐力消耗乘數(shù)
Attack Spell:?事件同時使用法術(shù),比如重?fù)舫鲆粋€大火球什么的。
Attack Type:由關(guān)鍵詞判定條件
Attack Angle:?0為由正向出發(fā)為攻擊范圍,180為背后
Strike Angle:?攻擊將會掃過的角度范圍,現(xiàn)在已經(jīng)有精準(zhǔn)判定了。。。
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:?不會觸發(fā)戰(zhàn)斗?
Equipment Restrictions:?可以裝備的類型。自己看著也能明白吧。。。
之后捏臉的默認(rèn)就行。。。原版捏臉什么的就不多說了。。。懂得都懂。。。
到此Race結(jié)束。我們轉(zhuǎn)到actor來介紹一個NPC的各項參數(shù)設(shè)置。

NPC
現(xiàn)在到我們本篇的關(guān)鍵了,NPC,一個NPC的創(chuàng)建其實(shí)非常簡單,但想讓他有張獨(dú)特的臉什么的,就要麻煩點(diǎn),算了,慢慢來吧。
每個NPC都在這里。

我們打開萊迪亞作為解說,畢竟,老婆?。。?!
(CK里男爵侍衛(wèi)的名字都挺奇怪的,建議搜索formid,具體可以百度)

ID:在CK里使用的名字
Name:游戲中使用的名字
Short Name:一般用于任務(wù),作為任務(wù)介紹或提示使用,盡量簡短
Is CharGen Face Preset:將作為預(yù)設(shè)會在捏臉時使用,不過好像沒用。
Essential;像小孩一樣無法被殺死。
Protected:需要玩家補(bǔ)刀才能殺死。
Respawn:會在場景刷新時一起重生。默認(rèn)為24天。一般用于敵人。
Unique:游戲中作為獨(dú)特存在,獨(dú)一無二,一般用于任務(wù)或隨從判定,也就是說,當(dāng)你覺得他應(yīng)該很重要,就選上他。
Summonable:能被magic effect使用召喚效果?
Is Ghost:無敵,武器穿透他們沒有任何效果(包括硬直),也不會觸發(fā)攻擊事件
Invulnerable:無敵,但武器會有攻擊到他們的效果
Doesn't Bleed:被武器擊中時,不會有濺血效果。
Simple Actor:該NPC沒有任何表情,死亡或者受攻擊也不會觸發(fā)相應(yīng)的事件
Doesn't affect Stealth Meter:當(dāng)該NPC偵測到玩家時,不會影響你的隱匿狀態(tài),通常用于無害中立生物,狐貍 兔子 ,鹿等等。
Scirpt:腳本相關(guān),本期不討論。
Template Data
這些我們暫且略過,這部分你可以先理解為快速創(chuàng)造復(fù)制人用的。

Traits

Race:種族。
Female :勾選則為女性
skin:為此NPC換一個貼圖,none即為默認(rèn)
Height:高度,默認(rèn)1.00
Weight:修改NPC的體重,有效范圍0-100,游戲中可以用setnpcweight 修改。
far away model:沒什么意義。
Voice type:語音類型,NPC使用的語音
Weapon List
Alignment
Disposition Base
這三個游戲中都沒有用到,效果不明
death item :死亡時NPC身上會出現(xiàn)的的可拾取物品,是的,活著的物品和死亡的是可以不一樣的。。。
OppositeGenderAnim:使用男性動作。

stats

Level:設(shè)置NPC的默認(rèn)等級。
PC Level Mult:?是否跟隨玩家等級?
Calc Min:?如果選擇上面一項,NPC的最低限制等級。
Calc Max:最高限制等級。
Auto Calc Stats:?自動根據(jù)class計算并賦予NPC屬性值?
Health Offset:?在最終生命值的基礎(chǔ)對其進(jìn)行修改,可以取正負(fù)。
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,則在跪地時恢復(fù)到??%生命值站起?
Class:決定NPC屬性成長的設(shè)置。
它在這里。

我們隨便打開一個。

ID:在CK里使用的名字。
Full Name:?顯示的名字。
Auto-Calc Other
Training:?如果勾選,而且此NPC是技能訓(xùn)練師時,設(shè)定最大可以訓(xùn)練到多少。
Bleedout Default:?如果人物有Essential,Protected的flag,則在跪地時恢復(fù)到??%生命值站起?
Voice Points:意義不明。
Description:?不使用。
Menu Image:?不使用。
剩下的數(shù)值計算,每級提升NPC都會獲得5點(diǎn)點(diǎn)數(shù)(這里可以在gamesetting里的fNPCHealthLevelBonus設(shè)置),之后將會按你設(shè)計的class計算提升。
舉個例子,當(dāng)NPC的初始值為100且NPC到了12級時,三維的最終值。
上圖的權(quán)重值分別為2,1,3,最先計算生命值。
則最終為240(每級都會賦予10的生命值加成),110,130
技能呢?默認(rèn)每級給與點(diǎn)數(shù)8點(diǎn)(在gamesetting中的iAVDskillsLevelUp設(shè)置)。剩下的自己算。

Faction

關(guān)于faction其實(shí)不是非常重要,但有幾個很關(guān)鍵的faction需要你設(shè)置一下。
PotentialFollowerFaction 0? ? ? 即為設(shè)置為潛在隨從,會出現(xiàn)跟著我的選項。這是設(shè)置為隨從的最簡單的方法。
PotentialMarriageFaction 0? ? ?即設(shè)置為可結(jié)婚對象。
當(dāng)然我仍然會寫出所有的項的介紹,畢竟是說明書嘛。
關(guān)于faction,你可以看作用于判定對NPC和玩家敵對與否的設(shè)置,當(dāng)然還有一些其他的東西。
具體設(shè)置在這里。

接下來我們來逐一介紹每一項。

Hidden from PC:意義不明。
Special Combat:意義不明。
Can be Owner:選擇后將自動檢測在cell(你這里可以理解為地圖)上的NPC,建議選上。
Interfaction Relations:?修改與已有派系的關(guān)系,具體看下面。
Enemy:被視為敵人。
Neutral: 中立。
Friend:友好。
Ally: 盟友。
Group Combat Reaction:?按上面的選。
Members:具體指定一個NPC。
Rank:不使用。
Crime:關(guān)于犯罪管理的面板。但具體創(chuàng)建一個檢測你是否犯罪的派系還需要一個quest,這我們留到quest篇再詳細(xì)敘述,所以在本篇跳過。
Vendor Tab:主要用于判定商人的條目。
當(dāng)然創(chuàng)建一個商人并不只是在這里設(shè)置就可以做到功能了,我們先描述一下這些是什么,之后再舉例一個商人的創(chuàng)建。

Start Hour/End Hour:?商人做買賣的時間區(qū)間。
Location:?設(shè)置地點(diǎn),這里需要你去地圖找到你想要的地點(diǎn)去設(shè)置。
Radius:在這片地區(qū)的多少范圍內(nèi)設(shè)置為商店區(qū)域,是0也可以。
Vendor Buy/Sell List:?商人將會出售的物品,由formlist決定,這個我們之后一起說。
Not Buy/Sell:這個選項則是將會出售除你選擇的formlist外的物品表單。
Merchant Container:?將你render window設(shè)置的某一個容器設(shè)置為存放商人出售的物品的箱子,在原版游戲里,他們一般都被放在了地下。
Only Buys Stolen Goods:設(shè)置為只銷臟。
關(guān)于商人的創(chuàng)建,我們在本文的最后舉例。先讓我們把基本的項目說明完畢。

Realationship

這里則是詳細(xì)設(shè)定與具體某一個NPC的關(guān)系。
ID:?在CK里使用的名字。
ParentNPC?and?ChildNPC:設(shè)置父級NPC與子級NPC,我在此舉個例子,父級為萊迪亞,子級為玩家,就是萊迪亞與玩家的關(guān)系。
Relationship level:?等級關(guān)系,決定是否為敵或盟友。
Association type:?關(guān)系詳細(xì)設(shè)定,這個自己看著翻譯吧。。。

Keyword

關(guān)鍵字,主要用于設(shè)置條件函數(shù),這里有三個原版有的且比較有意思的keyword。
ImmuneDragonPairedKill? ? ?無法被龍類動畫斬殺
ImmuneParalysis? ? 免疫麻痹
ImmuneStrongUnrelentingForce? ? 免疫不卸之力效果,也就是各種吹飛什么的

Ai Data

這里是關(guān)于NPC的基本的AI設(shè)置,判定他們對戰(zhàn)斗的欲望什么的。
Aggression:這個結(jié)合陣營關(guān)系faction Relationship決定NPC是否開始戰(zhàn)斗
游戲中可以控制臺setav Aggression (0-3)來設(shè)置
四個選項
0 Unaggressive:該NPC不會主動開始戰(zhàn)斗
1 Aggressive:該NPC會主動攻擊視野內(nèi)的所有敵人
2?Very Aggressive 該NPC會主動攻擊視野內(nèi)的所有中立和敵對NPC?
3?Frenzied?該NPC會主動攻擊視野內(nèi)的所有人
2.MOOD 心情:很多選擇,默認(rèn)中立就行了,具體效果可以在面部表情那一欄預(yù)覽
3.confidence:5個選項
0 Cowardly:懦夫 該NPC任何情況下都不會交戰(zhàn)/逃跑
1 Cautious:謹(jǐn)慎 不會交戰(zhàn)/逃跑除非該NPC強(qiáng)于對手
2 Average :不敵時會逃跑
3 Brave:完全不敵時會逃跑
4 Foolhardy :決不逃跑
注:3和4沒什么區(qū)別:Brave(萊迪亞)跪地時會喊“我打不過你,我認(rèn)輸”,F(xiàn)oolhardy(西塞羅) 跪地了一聲不吭而已
4.Enery:影響NPC(空閑時)四處游蕩時在場景中從一個位置移動到另一個位置的頻率
Assistance
Help Nobody 不幫助任何人
Help Allies:幫助盟友
Help Friends and Allies 幫助朋友和盟友
Morality
Any Crime:該NPC愿意犯任何罪行
Violence Against Enemies:愿意對敵對NPC進(jìn)行任何Crime
Property Crime Only :只愿意進(jìn)行財產(chǎn)Crime(盜竊,非法入侵)等,極少使用
No Crime:該NPC拒絕任何Crime
Aggro Radius Behavior:這個主要據(jù)點(diǎn)強(qiáng)盜,索寞士兵用,先警告 ,不然就繼續(xù)警告或者開打,設(shè)置的值為距離。
Combat Style:在沒有SCAR這個MOD之前對NPC戰(zhàn)斗時的AI的設(shè)置,這個我們慢慢說。
Gift Filter:不明。
關(guān)于Combat Style的位置在這里。

我們隨便打開一個來解釋一下。

Offensive Mult?:NPC的攻擊頻率,設(shè)定越高就會攻擊的越兇狠
Defensive Mult:防御頻率,設(shè)定越高就會持續(xù)防御的時間越久,越龜,而且如果有盾擊perk,也會頻繁使用盾擊。
Group Offensive Mult?:當(dāng)有多數(shù)的NPC向一個為目標(biāo)時,設(shè)定的值越高,他們同時發(fā)起攻擊的概率越高。
Avoid Threat Chance?:當(dāng)NPC在遠(yuǎn)處時,躲避箭矢的概率
Equipment Score Mults?:這些就是設(shè)定NPC對使用的攻擊手段的偏好,分別為近戰(zhàn)武器,弓箭,魔法,龍吼(或由z鍵觸發(fā)的技能),法杖,空手。

Attack
Attack Staggered Mult:當(dāng)目標(biāo)處于蹣跚狀態(tài)時會發(fā)起攻擊的概率。
Power Attack Staggered:當(dāng)目標(biāo)處于蹣跚狀態(tài)時會發(fā)起重攻擊的概率。
Power Attack Blocking:當(dāng)目標(biāo)處于防御狀態(tài)時會發(fā)起攻擊的概率。
Special Attack:不明,但經(jīng)測試貌似是使用z鍵spell的概率。我不敢確定。。。
Bash:
Bash Mult:調(diào)整在攻擊時穿插會使用盾擊的概率。
Bash Recoiled:調(diào)整當(dāng)目標(biāo)被盾擊成功反擊處于無法攻擊狀態(tài)時會發(fā)起盾擊的概率。
Bash Attack Mult:調(diào)整當(dāng)目標(biāo)在發(fā)起攻擊或正在攻擊時使用盾擊的概率。
Bash Power Attack Mult:調(diào)整當(dāng)目標(biāo)使用重?fù)魰r,他會使用盾擊的概率。
Misc:
Allow Dual Wielding:允許雙持單手武器攻擊,但對NPC有些小BUG,左手的武器時常會消失。。。

Dueling
勾選這一項時,NPC在與其作戰(zhàn)時會嘗試正面迂回作戰(zhàn),就是打著打著會慢慢往后退,然后突然一個向前重?fù)暨@種莽夫NPC。
Circle Mult:會嘗試做出左右位移舉動的概率。
Fallback Mult:會嘗試做出前后位移舉動的概率。
Flanking:
這個其實(shí)不使用,不建議選

Strafe Mult:
這些是用于龍類生物的,所以我在此跳過吧。。。算了,還是一起寫上了。
但眾所周知,老滾里的龍類生物的AI都挺。。。

Dive Bomb Chance:不明。
Hover Chance:會選擇懸停在某處的幾率。
Ground Attack Chance:會選擇著陸于對手交戰(zhàn)的幾率。
Perch Attack Chance?:會選擇降落再某些特殊地圖標(biāo)識地點(diǎn)的幾率(這里要到地圖修改篇了)
Flying Attack Chance:在空中使用spell的幾率。
Hover Time:懸停在空中的時間區(qū)間。
Ground Attack Time:降落在地面上戰(zhàn)斗的時間區(qū)間。
Perch Attack Time:降落再某些特殊地圖標(biāo)識地點(diǎn)的時間區(qū)間。

Ai packages
好了,到了本篇最繁雜的部分了,雖然說此部分你可以直接套用原版的package,但這里作為說明書,就應(yīng)該盡可能齊全,吧?
什么是AI package?簡單來說就是控制NPC的行動邏輯的設(shè)置,比如說納齊姆每天都要在城內(nèi)溜達(dá),守衛(wèi)不時進(jìn)行的訓(xùn)練,強(qiáng)盜營地的強(qiáng)盜四處走動模擬巡邏,就由這個來設(shè)置,當(dāng)然有些任務(wù)也使用到了AI package,不過這些暫時就不管了。
開始吧。
你可以在這里找到他。

我們再轉(zhuǎn)到NPC頁面。先說明在NPC欄里出現(xiàn)的東西都是啥。

AI Package List:管理package。
Default Package List:添加一個package,當(dāng)上表中沒有任何package時就使用此package
Spectator Override Package List:當(dāng)被卷入戰(zhàn)斗時且上表沒有用于戰(zhàn)斗時的package時使用此package,一般這個會設(shè)置一個驅(qū)動NPC逃跑的package。
Observe Dead Body Override Package List:當(dāng)附近有個尸體時NPC使用的package。一般用于對尸體互動用(比如說祈禱或恐懼逃跑什么的)。
Guard Warn Override Package List:一般用于警戒,比如說當(dāng)玩家進(jìn)入到某個范圍內(nèi)就陷入戰(zhàn)斗狀態(tài)什么之類的,但一般改AI Data不就好了嘛。。。
Combat Override Package List:這個一般用于戰(zhàn)斗時用的package,比如說戰(zhàn)斗時堅守位置或者使用某些特定法術(shù)等等。
不過!一般我們使用列表里的package即可,這些不是必要使用。
好了,我們打開一個package,來介紹一個package是怎么生效的。
這里我將會使用原版就有的舉個例子,其實(shí)原版的就夠用了,一般自己做一個新的,我們接著慢慢說。
首先,package的構(gòu)成為
package Template→package
其中的package Template這里簡單來說就是NPC行為邏輯的構(gòu)建。
而package則是具體如何實(shí)現(xiàn)你想要的效果。
那么我們先在此介紹一個package Template的構(gòu)成,再說說原版給你提供了什么框架,他們能干什么。
這里我們先用一個Template作為舉例,看圖吧。

我們先來說說這些東西是什么。
Base Data
ID:?CK中使用的名字。
Package Type:?決定是Template還是package。
Owner Quest:?是否屬于某一個quest中專用的package?就像瑟拉娜走向岳父對話質(zhì)問他這一個場景就是調(diào)用了一個package。
Combat Style:?當(dāng)這個package被啟用時NPC是否使用某個combat style?也就是戰(zhàn)斗AI。
Interrupt Override:不使用,因?yàn)闆]有一個原版的使用這玩意。
Package Tab
這里如果在上面的Package Type上選擇了不同的選項,會有小小的不同,看圖吧
這是選擇Template后出現(xiàn)的

這個則是選擇了package

其中的區(qū)別很明顯,Template可以編輯一個叫Procedure Tree的東西,這里我就用一個詞來解釋吧。
行為樹。
那么Public Package Data呢?
就是具體修改一個Procedure Tree其中的各項參數(shù)與設(shè)定,當(dāng)你在tree中添加或修改其中的各項參數(shù)時,data一般也會隨之改變,如果沒有就自己添加,好了,我們先接著介紹之后的項目,別急。
Flags Tab
當(dāng)你選擇的是Package Type中選擇package時會出現(xiàn)的選項系列。這里一般都是條件參數(shù),我們慢慢來吧。
Must Complete:?這個package無論什么情況都會結(jié)束他的流程,無論其中是否遭受特殊情況(就像戰(zhàn)斗什么的)。
Once Per Day:?此package不會在同一天內(nèi)被重復(fù)實(shí)行多次,除非你設(shè)置了condition。一般用于去睡覺的package,畢竟一般當(dāng)你看見一個NPC不斷的在床上做仰臥起坐太蠢了。。。
Always Sneak:執(zhí)行這個package時NPC將一直處于潛行狀態(tài)。
Allow Swimming:?NPC將嘗試走水路的方式到達(dá)指定的地點(diǎn)。
Allow Idle Chatter:允許NPC在執(zhí)行這個package時啟動對玩家的打招呼或閑談言論(比如衛(wèi)兵的吐槽)。
Ignore Combat:?NPC將不會參與戰(zhàn)斗,雖然此時他仍然被視為戰(zhàn)斗狀態(tài)。
No Combat Alert:?當(dāng)敵對NPC搜尋到對手,將不會先警告你趕緊滾,等你到了某個距離再拔劍,而是直接開打。
Weapon Drawn:?執(zhí)行這個package時NPC將拔出他們的武器。
Weapons Unequipped:執(zhí)行這個package時NPC將裝備的武器隱藏。
Wear Sleep Outfit (OBSOLETE):不使用。
Maintain Speed at Goal:?NPC向目標(biāo)地點(diǎn)前進(jìn)時將會保持一個恒定速度,不會出現(xiàn)走一會,跑一會。
Preferred Speed:?與上面那個選項聯(lián)動,設(shè)定NPC是走著去還是跑著去。
Hellos to player:?當(dāng)玩家與其接近時會向其問好或吐槽。
Random conversations:?允許NPC參與Random Conversations,這個在對話篇繼續(xù)深入。
Observe combat behavior:?NPC會在別人打架時選擇觀戰(zhàn)。
Reaction to player actions:?會對玩家的行動(比如放法術(shù),揮劍什么的)做出反應(yīng)。
Friendly fire comments:?對友軍誤傷做出言語反應(yīng)。
Aggro Radius Behavior:?允許仇恨做出范圍判斷。(意義不明)。
World Interactions:?當(dāng)你使用了必須為某個地點(diǎn)的condition時必須使用。
還有兩個帶有door的選項已被棄用。
Conditions
設(shè)置條件函數(shù)。我覺的看看原版和其他作者做的condition就明白其中的原理了,沒有必要去專門寫一篇關(guān)于condition的文章了吧。。。應(yīng)該吧?
Schedule Tab
這個欄位可以讓你設(shè)定這個package運(yùn)行的具體到幾點(diǎn)幾分的時間。
我覺得這些英文你們應(yīng)該能看的懂,就不翻譯了。。。
Begin/End/Change Tab
一般不使用。
Idles
一般不使用。
好了!開始正式的講講Procedure Tree和Public Package Data。
首先我們需要了解什么是行為樹。
怎么一轉(zhuǎn)游戲策劃了?。。。。∥也皇歉蛇@行的?。。?!
簡單的概括就是做出一個框架來告訴NPC什么時候該做什么,怎么做,做不做?
當(dāng)然CK里的行為樹沒那么復(fù)雜,不過總有一種我在做游戲的感覺了,不是嗎?
先看看圖吧。

在此藍(lán)色的你可以理解為樹的根,決定分支是怎么運(yùn)行的,右邊給出了提供的類別。
它的名字叫branch。
下面的用線分出來的就是樹的枝椏了,他們決定AI的行動邏輯,右邊給出了可以修改的type和值。
它的名字叫procedure。
首先要有branch,才能有procedure,一顆樹不可能只有樹葉沒有數(shù)枝吧。
branch分為以下幾個type。
Random:該branch將視情況選擇一個可執(zhí)行的procedure執(zhí)行。
如果你學(xué)過程序語言,你可以理解為if條件語句,
如果你沒學(xué)過的話。。。這么說吧,現(xiàn)在有蘋果,梨子,火箭筒,現(xiàn)在要你去選一個可以干架的東西,你會選什么?這樣講不知你會明白嗎?
Sequence:該branch將逐一執(zhí)行所有procedure直至結(jié)束。就是把所有你列出的事全部干一遍。
Simultaneous:該branch將同時執(zhí)行所有procedure直至目標(biāo)完成。比如說強(qiáng)盜在巡邏同時跟隨附近的隊友。當(dāng)然了,如果有一個procedure未被實(shí)現(xiàn),將持續(xù)此package直至完成實(shí)現(xiàn)。
Stacked:這個branch你可以看成是靈活版的Random,此branch將會視情況選擇可以執(zhí)行的procedure并執(zhí)行之,而且其他的procedure也會保留,并繼續(xù)看情況執(zhí)行,直至此package停止被調(diào)用。
branch講完了,我們來講講procedure,CK里給你提供了29種,很可惜的是不能添加或減少其中的具體細(xì)節(jié),這些東西都是被定死的,在此我會給出每一個type提供的參數(shù)。
但在開始之前,我們先來說說int,float,bool是什么。
int:指定數(shù)值為整數(shù)。
float:指定為浮點(diǎn)數(shù),這里你可以看成可帶小數(shù)點(diǎn)的數(shù)值。
bool:用于判定是或否,是(true)就是啟動,否(false)就是關(guān)閉。
Acquire
NPC會撿起指定的物品至他的物品欄中,直至目標(biāo)完成。
Target?(Target):?指定目標(biāo)。
NumToAcquire?(Int):?數(shù)量。
AllowStealing?(Bool):允許獲取已被標(biāo)記為他人的物品?
AllowPickpocket?(Bool):允許偷竊以獲取此物品?
AllowKilling?(Bool):?如果物品在NPC身上,允許擊殺后再獲取此物品?
Activate (Procedure)
NPC將與指定的物品互動。
Target?(Target):?指定目標(biāo)。
NumToActivate?(Int):互動多少次?
Eat (Procedure)
NPC吃食物。
FoodType?(TargetSelector):?指定何種類型?
CreateFakeFood?(Bool):允許吃不在自己身上的食物?
Escort (Procedure)
護(hù)送或帶領(lǐng)指定actor至目標(biāo)地點(diǎn)。
EscortedActor(s)?(?Target?)?:指定被護(hù)送的人選。
NumberToEscort?(?Int?)?:指定此package可同時被調(diào)用人數(shù)。
Destination?(?Location?)?:指定目標(biāo)地點(diǎn)。
EscortWaitDist?(?Float?)?:設(shè)置NPC將到達(dá)距離目標(biāo)地點(diǎn)還剩多少距離時,將停止行動。
FollowMinDist?(?Float?)?:設(shè)置與目標(biāo)相隔的最小距離,當(dāng)距離過近時會主動拉開距離。
FollowMaxDist?(?Float?)?:設(shè)置與目標(biāo)相隔的最大距離,當(dāng)超過此距離時會跑步接近目標(biāo)。
RideHorseIfPossible?(?Bool?)?:允許騎馬?
PreferPreferredPath?(?Bool?)?:NPC將會按照地圖提供的最優(yōu)地圖標(biāo)記行動直至到達(dá)目標(biāo)地點(diǎn)。
RunIfBehindDist?(?Float?)?:如果被護(hù)送者與其超過了此距離時,將會跑步追趕至FollowMaxDist。
Find (Procedure)
NPC將搜尋指定的物品,但不做如何事。
SearchLocation?(Location):?指定NPC搜索的范圍區(qū)域。
TargetSelector?(TargetSelector):?指定搜索的事物。
ObjectList?(ObjectList):?這個項不做任何事,只是儲存數(shù)據(jù)用于被其他procedure調(diào)用,比如eat。
SearchOwnerInventory?(Bool):?可否從自身的物品中搜尋目標(biāo)事物?
RandomizeList?(Bool):可否隨機(jī)化list中的事物?
Flee (Procedure)
讓NPC單純的逃跑或逃跑至某個目標(biāo)點(diǎn)。
FleeFrom?(Target):?選擇目標(biāo)。
FleeTo?(Location):?選擇地點(diǎn)。
UseDynamicGoalInstead?(Bool):?如果是true,將使用FleeFrom而不使用FleeTo,false則相反。
GoalRadius?(Float):在使用FleeTo使用,指定目標(biāo)地點(diǎn)的半徑,這通常用于你指定的不是某個確切的地點(diǎn)使用。
AvoidNodeRadius?(Float):?與威脅始終相隔的距離。
FleeDist?(Float):?FleeFrom時使用,當(dāng)與威脅距離多少距離時此package結(jié)束運(yùn)行。
tRideHorseIfPossible?(Bool):?會找到他的馬騎上再逃跑嗎?
ForgetDeadThreats?(Bool):?威脅已死時是否還是逃離?
Quiet?(Bool):?會不會說臺詞,只管跑路?
CountAsIsFleeing?(Bool):?將NPC視為逃跑狀態(tài),用于condition判定。
FlightGrab (Procedure)
不明,貌似沒有任何package使用這個玩意。
Follow (Procedure)
NPC將跟隨指定actor。
Target?(Target):?指定跟隨目標(biāo)。
MinRadius?(Float):?設(shè)置與目標(biāo)相隔的最小距離,當(dāng)距離過近時會主動拉開距離。
MaxRadius?(Float):?設(shè)置與目標(biāo)相隔的最大距離,當(dāng)超過此距離時會跑步接近目標(biāo)。
GoToLeadersGoal?(Bool):?為true時,將盡量走在跟隨目標(biāo)之前模擬前衛(wèi)。
RideHorseIfPossible?(Bool):?如果有馬就騎馬。
NeedLOS?(Bool):?為true時,在視線外時將停止跟隨。
FollowTo (Procedure)
大體與上一個相同,就是加了個參數(shù)。
EndLocation?(Location):到達(dá)指定的區(qū)域時停止跟隨。
ForceGreet (Procedure)
用于讓NPC說出指定的對話。
Topic?(Topic):?指定某一句對話。
NPCWaitLocation?(Location):?指定某個地區(qū),玩家進(jìn)入時將進(jìn)入判定。
TargetTriggerLocation?(Location):?這個則是NPC判定區(qū)域。
Guard (Procedure)
指定npc在他人進(jìn)入指定的范圍內(nèi)會先向其拔劍警告并說警告臺詞,之后會發(fā)起攻擊,像有些強(qiáng)盜就是這樣的。
RestrictedArea?(Location):指定此NPC進(jìn)入package運(yùn)行的區(qū)域。
SuspiciousOf?(TargetSelector):?指定警告的faction,如果是玩家則是PlayerFaction。
WarnOnlyRadius?(Float):?如果指定的人員進(jìn)入指定的范圍內(nèi)將發(fā)出警告。
ImmediateAttackRadius?(Float):?這個則是攻擊范圍。
HoldPosition (Procedure)
指定NPC在戰(zhàn)斗時所處的位置。
Location?(Location):指定位置。
Hover (Procedure)
不明。貌似用于龍類。
KeepAnEyeOn (Procedure)
此NPC將會把視線一直投向指定的目標(biāo),這個一般用于與其他的procedure聯(lián)動用。
TargetToObserve?(Target):?指定目標(biāo)。
ObservationArea?(Location):?當(dāng)目標(biāo)在這個位置時,將監(jiān)視目標(biāo)。同樣,如果目標(biāo)離開該位置,監(jiān)視將結(jié)束。
EndPursuitArea?(Location):?當(dāng)目標(biāo)進(jìn)入某個指定的地點(diǎn)時,將結(jié)束監(jiān)視。
LockDoors (Procedure)
NPC將鎖上指定的門。一般與travel同時使用。
Location?(Location):?要鎖上的門。
WarnBeforeLocking?(Bool):?如果為true,則會在鎖上門之前警告玩家。
Orbit (Procedure)
讓能飛的玩意在指定的地點(diǎn)范圍內(nèi)繞圈飛行。
TargetLocation?(Location):?地點(diǎn)。
InnerRadius?(Float):?飛行繞圈不會小于此半徑。
OuterRadius?(Float):?飛行繞圈不會大于此半徑。
Height?(Float):?設(shè)定的高度。
Patrol (Procedure)
NPC將會隨著指定的地點(diǎn)進(jìn)行巡邏。
PathStart?(Target):?巡邏時需要達(dá)到的位置。
PointRadius?(Float):?允許NPC偏移設(shè)定的巡邏點(diǎn)的半徑,因?yàn)橐话憧偸菚泻芏鄸|西可能會擋住你設(shè)定的點(diǎn)。。。
Repeatable?(Bool):?設(shè)定為true時,NPC將會一直隨著指定地點(diǎn)循環(huán)巡邏直到此package被停止使用。
StartAtNearestPoint?(Bool):?如果為true,NPC將會從離他最近的點(diǎn)開始巡邏而不是從頭開始。
RideHorseIfPossible?(Bool):?如果為true,會騎馬。
StaticPathing?(Bool):?不明。
Sandbox (Procedure)
NPC將會在指定的范圍內(nèi)與任意可互動物品互動,就像瑟拉娜打鐵那種。
Location?(Location):?指定NPC會與其互動的區(qū)域。
AllowEating?(Bool):?允許吃東西。
AllowSleeping?(Bool):?允許找張不屬于任何人的床睡覺。
AllowConversation?(Bool):?允許與他人交談。
AllowIdleMarkers?(Bool):?允許使用空閑動畫。
AllowFurniture?(Bool):?允許使用家具。
AllowSitting?(Bool):?允許使用椅子類型的家具(就是坐在上面的那種)。
AllowWandering?(Bool):?允許在此范圍內(nèi)隨便亂逛。
WanderPreferrefPath?(Bool):?如果為true,NPC將會在亂逛時首先選擇站在指定的navmesh triangles上(這里你可以理解為地圖標(biāo)識處)。
Energy?(Float):?設(shè)定以上的行為每種將會持續(xù)的時間。
AllowSpecialFurniture?(Bool):?允許使用附魔臺這種類型的家具。
MinWanderDistance?(Float):跟WanderPreferrefPath差不多的效果。
Say (Procedure)
不推薦使用?。?!
Shout (Procedure)
讓NPC使用指定的shout(龍吼類型,就是按z鍵那個)。
Location?(Location):?指定NPC會在使用shout前所處的位置。
Shout?(TargetSelector):?指定shout。
Target?(Target):指定目標(biāo)。
HoldWhenBlocked?(Bool):?如果目標(biāo)有任何生物阻擋,將不會使用shout。
JustHeadtrack?(Bool):使用跟蹤功能,此舉是為了能在移動中使用。
Sit (Procedure)
萊納,你坐呀!
Target?(Target):?指定一個家具。
Sleep (Procedure)
指定一個家具,然后睡覺。
Travel (Procedure)
NPC將走向目標(biāo)地點(diǎn)。
Destination?(Location):?目標(biāo)地點(diǎn)。
RideHorseIfPossible?(Bool):?可以騎馬嗎?
UnlockDoors (Procedure)
NPC將會鎖上門。
UseIdleMarker (Procedure)
NPC將會使用指定的空閑動畫。
UseMagic (Procedure)
NPC使用一個魔法。
Location?(Location):?施法前將會達(dá)到的位置。
Spell?(TargetSelector):使用什么法術(shù)。
HoldWhenBlocked?(Bool):?如果目標(biāo)前方有遮擋物,取消施法。
CastTimeMin?(Float):?最小蓄力時間。
CastTimeMax?(Float):?最大。
CoolDownTimeMin?(Float):?最小施法CD。
CoolDownTimeMax?(Float):?最大。
DualCast?(Bool):?允許雙手施法。
UseWeapon (Procedure)
允許NPC使用武器進(jìn)行行動。
Location?(Location):確定做出攻擊行動前會處于的位置。
Weapon?(TargetSelector):?選擇武器類型或具體化。
Target?(Target):?選擇目標(biāo)。
AlwaysHit?(Bool):?用于腳本事件判定用,如果為true,擊中目標(biāo)將觸發(fā)onhit事件。
RepeatFire?(Bool):?如果為true,NPC將持續(xù)行動至此package被停止調(diào)用。
VolleyFire?(Bool):為true將啟動計時判定,在下面的VolleyWait設(shè)置。
DoNoDamage?(Bool):?攻擊將不會觸發(fā)傷害判定。
HoldWhenBlocked?(Bool):?如果目標(biāo)前方有遮擋物,取消施法。
VolleyWaitMin?(Float):?攻擊間隔最小時間。
VolleyWaitMax?(Float):?最大。
VolleysPerBurst?(Int):?無用。
VolleyShotsMin?(Int):?一次間隔攻擊會攻擊的最小次數(shù)。
VolleyShotsMax?(Int):?最大。
AllowCombatStart?(Bool):?目標(biāo)被擊中時將正常觸發(fā)戰(zhàn)斗?
AimWithoutFiring?(Bool):如果為true,將不會發(fā)起攻擊。
AlwaysPowerAttack?(Bool):?攻擊總是重?fù)簟?/p>
DoHeadTracking?(Bool):?不明。
BlockPercent?(Float):?不明。
Wait (Procedure)
計時器。
ActualSeconds?(?Float?)?:程序在完成之前將等待多少真實(shí)世界的秒數(shù),不計算游戲菜單中的時間。
topMovement?(?Bool?)?:如果為true,它會讓NPC停止移動——也就是說,它會停止演員的尋路/運(yùn)動。(它不會停止任何其他附帶的動畫。)
Wander (Procedure)
NPC將在確定的范圍內(nèi)隨便亂晃。
Location?(Location):?確定范圍。
PreferredPathOnly?(Bool):?如果為true,NPC將會首先尋找navmesh點(diǎn)并前往此點(diǎn)。
RideHorseIfPossible?(Bool):可以騎馬嗎?
MinimumDistance?(Float):?確定最小活動半徑。
好了,我已經(jīng)把所有提供的模板都寫給你了,剩下的自己去用package做一個并用于NPC上面吧,首先看看瑟拉娜是怎么做的吧。
舉例子的話,等我整個視頻出來,本來想直接搬運(yùn)一個外網(wǎng)的再打上注釋讓你們自己去看,但想想還是自己來吧。。。
這里還有個MOD可以參考。
使用package對NPC的AI大修。
https://www.nexusmods.com/skyrimspecialedition/mods/21654
在B站翻翻沒想到還找到了想搬運(yùn)的視頻,請看P6,P7
全英文,但照著我寫給你的看他怎么做也能明白怎么實(shí)現(xiàn)。
這兩p分別是讓NPC能騎馬和模擬衛(wèi)兵訓(xùn)練。
dark127老師!你真的太牛逼啦?。。。?/span>
當(dāng)然視頻也在路上。

Inventory
我們再轉(zhuǎn)回NPC界面繼續(xù)介紹。

Default Outfit:?NPC將會穿在身上的服裝outfit。
Sleep Outfit:?不使用。
Outfit Objects:只是預(yù)覽服裝,無法修改。
Geared Up Weapons:?不使用。
Inventory List:?物品欄內(nèi)擁有的物品。
Object:?名字。
Count:?數(shù)量。
Health%:?不使用。
Owner/Faction:?被判定為設(shè)定的派系所屬的物品,拿取將視為偷竊。
Global Variable:?不使用。
Required Rank:?不使用。
Preview Calculated Result:?不使用。
那么這個outfit是什么?
用來專門管理NPC穿的服裝的管理器,但無法用右鍵添加修改事物,只能拖動至欄位內(nèi)(很難不想罵娘。。。陶德,吃我一拳?。?/p>
他能在這里找到。

我們打開白漫城衛(wèi)兵的outfit看看。

這個綠色的又是什么?
就是levellist。隨玩家等級的改變而改變的物品表單。這么說吧,當(dāng)你20級時,強(qiáng)盜會用矮人裝備,40級時,會出現(xiàn)魔族裝備,這些就由levelitem決定NPC身上的隨機(jī)戰(zhàn)利品。寶箱也一樣。遇見的敵人也一樣。
它在這里。

我們隨便打開一個。

這里是減少火焰抗性的毒藥。
我們介紹一遍什么是什么就很清晰了。
ID:?CK里使用的名字。
Calculate from all levels <= PC's level:?如果選中此項,其中的物品將會始終使用小于或等于玩家等級的物品,不選則將會在與玩家等級相同時才會使用此物品。
Calculate for each item in count:?如果這個將會用于其他levellist中,選中時將會計算其中的等級限制,不選則按另一個設(shè)置的算。
Use All:?與前兩個互斥,無視等級使用所有。
Special Loot:?用于獨(dú)特戰(zhàn)利品寶箱什么的。
Object:確定物品。
Level:?確定當(dāng)玩家多少級時將使用。
Count:?數(shù)量。
Health:武器與裝甲用,100 或以下為普通、110 優(yōu)良、120 高級、130 精致、140 無瑕、150 史詩,?160-200 傳奇。
Owner:?是否為某個NPC或派系所有物?
Preview Calculated Result:?只是預(yù)覽效果。

spelllist

沒什么可說的,自己加吧。。。
不過要隨等級改變的法術(shù)可以用這個。跟上面的那個levellist一樣的。


attack data
這個你可以返回看race那里。
其他的沒什么可說的了。因?yàn)椴皇歉牟涣司褪菦]什么用的東西。
至于關(guān)于隨從的制作,這里貼吧有個貼子,關(guān)于怎么做一個高模頭NPC/隨從,非常詳細(xì)了,看的我都想照抄了,哈哈哈哈哈
https://tieba.baidu.com/p/7013518109?pn=1
當(dāng)然你也可以看看這個視頻系列,雖然是機(jī)翻但也夠用了。
路西恩隨從的作者制作的教程,教你怎么做一個隨從。
總計下載量有幾百萬了吧,非常有趣的隨從。

當(dāng)然,我的視頻也在路上。
讓我最后隨便一點(diǎn)吧。。。到這里已經(jīng)有18000字了。。。
本來寫了20000字,刪刪改改剩下這些。。。麻麻滴寫論文都沒寫過這么長過。。。
等等!還有對話和商人和訓(xùn)練選項是怎么做到的還沒寫,好吧。。。
要不?我們留到quest篇?
先這樣吧。。。
(孤獨(dú)搖滾完結(jié)了啊啊啊啊啊啊啊?。。。。∥耶?dāng)場發(fā)電啊啊啊啊啊啊?。。。。】斐龅诙景““““““。。。。。。?/strong>

(還沒寫完,或者說,剛剛開始。。。先放著。。。我會做完它的。。。給我一點(diǎn)時間。。。)
在開始這一篇章前我們先來了解一下quest。
他在這里。

quest,簡單來說就是管理游戲里所有的任務(wù)相關(guān),這時你肯定會很奇怪,為什么我只是寫個對話還需要創(chuàng)建一個quest?
你去問B社吧。。。鬼TM知道他們?yōu)槭裁床话堰@一模塊拆分開來單獨(dú)做一個項。。。
總之,所有在老滾的對話,都是由所謂的任務(wù)驅(qū)動的,NPC的每次場景對話都是觸發(fā)一次任務(wù),了解后是不是突然覺得有點(diǎn)搞笑?
好了,關(guān)于對話的創(chuàng)建,quest是繞不開的了,不過在此篇章里你不需要寫什么腳本來啟動那些效果,實(shí)現(xiàn)還是很簡單的。。。
新建一個quest吧,在NPC篇里我們就只談怎么建立對話,其他的東西我們等到quest篇里再說吧,quest篇要寫起來更加恐怖啊。。。必須涉及到腳本了。。。不過腳本什么的也不是什么太狠的活,我們到腳本篇再說吧。
我們先來介紹一下關(guān)于對話的quest的項目。
(干他媽的,B社,趕緊把你破逼引擎換了吧!陶德!吃我一拳?。?/span>
我們先新建一個quest
我這里就拿個原版有的作為示范吧

先讓我解釋一下第一個頁面都是什么東西
ID:?在ck里使用的名字
Quest Name:?玩家將會在游戲里查看任務(wù)時會出現(xiàn)的名字。
Priority:?quest優(yōu)先級,一個人物如果有多個quest時數(shù)值大的將優(yōu)先執(zhí)行。
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:?