MOD制作指南SP——關于動作的命名與注釋
mod版本內容時有變更,如有錯誤和遺失請見諒。
本文最后更新與2023年3月6日。
關于上古卷軸動作動畫的制作,已經有大佬制作了一系列的視頻,但關于注釋什么的卻都是點到即止,所以這里我就在這里做出一些微不足道的補充。
這里是有關教程:BV17B4y167rP
相比于視頻,還是文字更適合這些內容。
關于動作制作我在之前曾經發(fā)布過一個視頻,但視頻的一小部分內容在現(xiàn)在有些許爭議性,所以我個人將其下架。
然而這有什么可爭論的?
已經公開了10年的方法還有什么遮遮掩掩的必要?
此工具最早于2011年發(fā)布。
https://www.nexusmods.com/skyrim/mods/1797
我整了個用3DMAX的,在這個網站里
https://finkiin.com.cn/d/172
當然,比起那些打著所謂“贊助”旗號的付費mod,我更痛恨只會偷竊的廢物。
至少他們真的有花費時間做出了屬于他們自己的東西,而某些人呢?只會拿著別人的東西茍且偷生,恬不知恥的改幾個注釋做成一個包公開售賣,不會吧?不會真有人廢物到這種程度吧?
對,說的就是你這拿著家譜沖浪的東西。
https://space.bilibili.com/612414153?spm_id_from=333.337.0.0
掛著這個尸體,作為威懾。
(你說重置一遍重新發(fā)上來?給我送錢我馬上做?。。。?/span>
好了,廢話不多說。
本期我們的主題是
本體動作文件的修改
圍繞MCO動作系統(tǒng)與其前置的注釋文件相關書寫格式與注意事項。
包括
MCO
DAR(MCO的前置之一)
AMR(MCO的前置之一)
Payload Interpreter(MCO的前置之一)
SCAR(這個不是MCO的前置。。。)
Precision(精準判定,也不是這個mod的前置)
但在開始之前,如果你是mod作者,在做動作的話,我們先安裝一個blender插件,讓你寫注釋沒那么痛苦。。。

https://www.skyrim-guild.com/distar/guides/blender-annotation-addon
插件作者:Distar,SKYSA,MCO作者。

打開blender


之后打開你的工程文件(rig)
右邊的菜單會出現(xiàn)這個欄位

接著按菜單里的那個import,找到第二個下載的文件
當你看見有這個骨骼組,就算成功了

當你做過一些動作再看,這些名字是不是有些眼熟?為他們設置關鍵幀,就是寫注釋了

完成后,再export,就是注釋了!?。?/p>
其中的具體數據可以自己再修改

那么本期教程,正式開始。
首先是關于如何將你制作的動作修改為原版動作。
很簡單,把名字改成一樣的就行了,對,就這么傻瓜。
不過需要注意的是,戰(zhàn)斗時動作需要盡量與原版時間相同,不然會看起來很尷尬。。。
這里就寫一些人類常用的動作前綴與名字
具體的可以自己拆包自己一個一個查看。
這些是關鍵詞,通常會出現(xiàn)在名字的開頭或某個地方。
mt 非戰(zhàn)斗,不拔出武器時的狀態(tài)
1hm 單手(或雙持的行為動作)
2hm 手雙劍(或錘、斧的行為動作)
h2h 空手
bow 弓
mag 裝備法術時(未攻擊)
magic 施展法術時(攻擊)
staff 法杖
staff magic cast 手持法杖施法(攻擊)
dw1hm1hm 雙持(有獨立的站立動作)
sneak 潛行狀態(tài)
2hw 錘 斧(有獨立的站立動作)
tor_ 火把
idle 站立
jump 跳 (fast起跳fall下落land著地)
run 跑
sprint 沖刺
walk 走
attack 攻擊
attackpower 重擊
block 格擋
shd 盾牌
mlh_ 左手單持法術
mrh_ 右手單持法術
forward 前(fw是命令簡寫)fwd
backward 后(此命令只對walk等有效)bwd
left 左
right 右
turn 轉向
crossbow 弩
下面是具體的一部分,也是經常被修改的,還有些莫名其妙的命名就自己找方法查看吧。。。
mt_idle.hkx —— 閑置站姿
mt_runbackward.hkx —— 向后奔跑
mt_runbackwardleft.hkx —— 向左后奔跑
mt_runbackwardright.hkx —— 向右后奔跑
mt_runforward.hkx —— 向前奔跑
mt_runforwardleft.hkx —— 向左前奔跑
mt_runforwardright.hkx —— 向右前奔跑
mt_runleft.hkx —— 向左奔跑
mt_runright.hkx —— 向右奔跑
mt_turnleft60.hkx —— 原地向左轉身1
mt_turnleft180.hkx —— 原地向左轉身2
mt_turnright60.hkx —— 原地向右轉身1
mt_turnright180.hkx —— 原地向右轉身2
mt_walkbackward.hkx —— 向后行走
mt_walkbackwardleft.hkx —— 向左后行走
mt_walkbackwardright.hkx —— 向右后行走
mt_walkforward.hkx —— 向前行走
mt_walkforwardleft.hkx —— 向左前行走
mt_walkforwardright.hkx —— 向右前行走
mt_walkleft.hkx —— 向左行走
mt_walkright.hkx —— 向右行走
mt_sprintforward.hkx —— 沖刺
mt_getupfromback.hkx —— 從躺姿起身(僅女性)
mt_getupfromfront.hkx —— 從趴姿起身(僅女性)
mt_idlemuscularoffset.hkx —— (僅女性)
chair_idlebasevar1.hkx —— 主角坐姿
chair_idlebasevar1shoulders.hkx 和 chair_idlebasevar2.hkx —— NPC可見的兩個坐姿,主角用不到
chair_idlechildbasevar1.hkx —— 小孩坐姿
單手武器
1hm_idle.hkx —— 單手武器閑置動作
1hm_attackpower.hkx —— 強力攻擊
1hm_attackpowerbwd.hkx —— 向后強力攻擊
1hm_attackpowerfwd.hkx —— 向前強力攻擊
1hm_attackpowerleft.hkx —— 左鍵強力攻擊
1hm_attackpowerright.hkx —— 右鍵強力攻擊
1hm_attackleft.hkx —— 左鍵攻擊
1hm_attackright.hkX —— 右鍵攻擊
1hm_runforward.hkx —— 單手武器向前奔跑
1hm_runforwardleft.hkx —— 單手武器向左前奔跑
1hm_runforwardright.hkx —— 單手武器向右前奔跑
1hm_runbackward.hkx —— 單手武器向后奔跑
1hm_runbackwardleft.hkx —— 單手武器向左后奔跑
1hm_runbackwardright.hkx —— 單手武器向右后奔跑
1hm_runleft.hkx —— 單手武器向左奔跑
1hm_runright.hkx —— 單手武器向右奔跑
1hm_turnleft60.hkx —— 單手武器原地向左轉身1
1hm_turnleft180.hkx —— 單手武器原地向左轉身2
1hm_turnright60.hkx —— 單手武器原地向右轉身1
1hm_turnright180.hkx —— 單手武器原地向右轉身2
1hm_walkforward.hkx —— 單手武器向前行走
1hm_walkforwardleft.hkx —— 單手武器向左前行走
1hm_walkforwardright.hkx —— 單手武器向右前行走
1hm_walkbackward.hkx —— 單手武器向后行走
1hm_walkbackwardleft.hkx —— 單手武器向左后行走
1hm_walkbackwardright.hkx —— 單手武器向右后行走
1hm_walkleft.hkx —— 單手武器向左行走
1hm_walkright.hkx —— 單手武器向右行走
1hm_boundswordequip.HkX —— 召喚劍裝備
1hm_equip.hkx —— 單手劍拔出
1hm_unequip.hkx —— 單手劍收起
axe_equip.hkx —— 單手斧(錘)拔出
axe_unequip.hkx —— 單手斧(錘)收起
dag_equip.hkx —— 匕首拔出
dag_unequip.hkx —— 匕首收起
mt_sprintforwardsword.hkx —— 單持武器沖刺
1hm_sprintforwardsword.hkx —— 單持武器沖刺(貌似多余的無用文件)
雙持單手武器(運動狀態(tài)延用單手武器)
dw_sprintforwardsword.hkx —— 雙持沖刺
dw1hm1hmidle.hkx —— 雙持站姿
dw_attackpowerback.HKX 雙持向后強力攻擊
dw_attackpowerforward.HKX 雙持向前強力攻擊
dw_attackpowerknifeslashcombo.HKX (刀斜向組合攻擊)
dw_attackpowerleft.HKX 雙持向左強力攻擊
dw_attackpowerright.HKX 雙持向右強力攻擊
dw_attackpowerstab.hkx 雙持強力后退重擊
dw1hm1hm_attackright.hkx 雙持向右攻擊
dw1hm1hm_attackrightintro.hkx 雙持向右攻擊前奏
dw1hm1hm_powerattack.hkx 雙持功耗(強力)攻擊
dw1hm1hm_specialattackpower.hkx 雙持特殊攻擊
dwrunback_attackright.hkx 雙持向后奔跑右鍵攻擊
dwrunforward_attackright.hkx 雙持向前奔跑右鍵攻擊
dwrunleft_attackright.HKX 雙持向左奔跑右鍵攻擊
dwrunright_attackright.HKX 雙持向右奔跑右鍵攻擊
dwwalkback_attackright.hkx 雙持向后行走右鍵攻擊
dwwalkforward_attackright.hkx 雙持向前行走右鍵攻擊
dwwalkleft_attackright.HKX 雙持向左行走右鍵攻擊
dwwalkright_attackright.HKX 雙持向右行走右鍵攻擊
雙手武器
2hc_equip.hkx —— 雙手武器拔出
2hc_unequip.hkx —— 雙手武器收起
2hm_idle.hkx —— 雙手劍閑置動作
2hm_runforward.hkx —— 雙手劍向前奔跑
2hm_runforwardleft.hkx —— 雙手劍向左前奔跑
2hm_runforwardright.hkx —— 雙手劍向右前奔跑
2hm_runleft.hkx —— 雙手劍向左奔跑
2hm_runright.hkx —— 雙手劍向右奔跑
2hm_turnleft60.hkx —— 雙手劍原地向左轉身1
2hm_turnleft180.hkx —— 雙手劍原地向左轉身2
2hm_turnright60.hkx —— 雙手劍原地向右轉身1
2hm_turnright180.hkx —— 雙手劍原地向右轉身2
2hm_walkforward.hkx —— 雙手劍向前行走
2hm_walkforwardleft.hkx —— 雙手劍向左前行走
2hm_walkforwardright.hkx —— 雙手劍向右前行走
2hm_sprintforwardsword.HkX —— 雙手劍沖刺
2hw_idle.hkx —— 雙手斧(錘)閑置動作

接著是如何將動作中的注釋導出為可編輯模式,然后將其導入。
什么是注釋?我們先按下不表,看到后面你自然會明白的。
當然這里有個全英文的視頻簡單介紹了annotation(國內稱其為注釋)
工具我直接在這里提供給你。
pan.baidu.com/s/1Obnm_2bQ7rwX0iOT_0HC8w?pwd=2076?
2076?
解壓縮至任意處,接著打開那個后綴為exe的東西
安裝
當你想修改有一個動作的注釋時,將hkx文件拖到解壓出來的文件夾里
接著將其拖到一個名叫dump.bat的文件上,會接著

什么是MCO?
簡單來說就是一個新的戰(zhàn)斗動作框架,我們看個gif自己感受。
這是原版位移與mco位移。

mco戰(zhàn)斗時動作。

理論上一套動作其中有多少變招和連段隨你心意,而其中動作的判定傷害時間,位移限制,變招設計,都是由所謂注釋判定。我們直接打開一個MCO動作注釋舉例。
我直接說明他們怎么寫的,自己寫時照著葫蘆畫瓢就行了。
像0.450000這種數字就是具體某一幀對應的時間。
# numOriginalFrames: 48
# duration: 1.600000 動作總時間
# numAnnotationTracks: 99
# numAnnotations: 24
上面這些不用管。
0.450000 CastOKStart?
注釋開始判定時間幀,可寫可不寫,沒寫也不要緊
0.500000 preHitFrame?
預輸入時間判定,在武器開始揮動前
0.600000 weaponSwing
判定武器開始揮動,劍影,揮動音效生成
0.640000 HitFrame?
傷害生成判定,設多少個就會造成多少次傷害(可以寫在原版動作里,嘿嘿嘿)
0.680000 MCO_WinOpen?
這個是輸入指令就會觸發(fā)下個輕攻擊動作的時間點開始
1.400000 MCO_WinClose?
這是結束
0.680000 MCO_PowerWinOpen?
重攻擊的開始
1.400000 MCO_PowerWinClose?
結束
0.060000 PIE.@SGVI|MCO_nextattack|3?
輸入輕攻擊指令會出現(xiàn)的下個動作
0.060000 PIE.@SGVI|MCO_nextpowerattack|1?
輸入重攻擊指令會出現(xiàn)的下個動作
0.000000 PIE.@SGVF|MCO_AttackSpeed|0.6?
決定攻擊速度,是的,這意味著原版攻速perk無用了
1.500000 MCO_Recovery?
在這幀過后輸入位移指令會取消動作后搖
下面是AMR相關,最累的就是寫位移,哪幾幀做出了位移,你都要寫上去
0.400000 animmotion 0 0 0
0.440000 animmotion 0 9 0
0.500000 animmotion 0 65 0
0.560000 animmotion 0 149 0
0.600000 animmotion 0 208 0
0.680000 animmotion 0 264 0
1.020000 animmotion 0 264 0
1.590000 animmotion 0 278 0
其中有幾個注意事項
1.寫的順序不是很重要,可以排亂。
2.指定下一個是什么動作的注釋時間不重要,可以亂填。
3.設置攻速的時間也不重要。
這時對于從來沒做過動作的新手肯定會有疑問,動作文件在哪?注釋去哪搞的?

好啦,慢慢來,現(xiàn)在我們打開一個以MCO為前置的動作包。這就是動作的文件路徑。
你這時也應該明白,為什么MCO的動作最后都以1,2,3,4,5命名
很遺憾,目前MCO還無法做到以下這樣的操作
A1——A2或延遲后A3或B1
只能
A1——A2或B1
A1——A3或B1
很可惜啊。。。我想看拳皇?。?!教練我想看這個?。?!

這個也行?。?!

為什么我會把這里圈起來?那個condition.txt是什么?
這里就跟一個MCO的前置MOD有關了?。?!

下面有請本期教程的另一個主角登場!

Dynamic Animation Replacer(DAR)

簡單來說就是不占用原版資源的動作替換器,但動作數量被mod作者限制在了16384,n網的評論區(qū)有破除限制到32000多的方法。
當然直接裝是沒有任何效果的,它只是一個相當與fnis和FC女神的動作引擎,不過DAR最大的優(yōu)勢就是不用啟動引擎刷新動作,直接打開游戲就能使。
那么我們再回到上面這張圖

一個DAR為前置的動作都是這樣的結構,別問為什么,問就是祖宗之法不可變。
meshes\actors\character\animations\DynamicAnimationReplacer\_CustomConditions/(數字)
想改第一人稱就把animations之前加一個_1stperson文件夾。
之后的數字是什么?
它代表這這個動作的優(yōu)先級,數字越高就越先判定。如果裝的其他mod中使用數字有重復,就會不生效,這點千萬注意?。?!
文件夾的數字命名在-214748364和2147483647之間,看樣子都根本用不完啊,哈哈哈
所以,新建一個數字文件夾,把你想修改的動作hkx放進去。
如果想區(qū)分性別,在里面建立male和female文件,分別對應男女。
但還沒完,我們需要一個判定文件來完成我們的修改操作,新建一個_conditions.txt,至于怎么寫,我直接列個表吧
以下表單由貼吧老哥?半只大肥貓?撰寫,感謝他的付出
原帖
https://tieba.baidu.com/p/7946076420?pn=1
IsEquippedRight(Form item)
Does the actor have the specified item equipped to his right hand?
右手是否裝備了特定物品。(一般用not指令排除特定mod裝備動作)
IsEquippedRightType(GlobalVariable type)
Is the item equipped to the actor's right hand the specified type?
右手是否裝備了特定類型的裝備(最常用,比如雙手劍單手劍等等)
IsEquippedRightHasKeyword(Keyword keyword)
Does the item equipped to the actor's right hand have the specified keyword?
右手裝備是否有特定的關鍵字(幾乎不用)
注:左手就把上面的【Right】換成【Left】。
IsEquippedShout(Form shout)
Does the actor currently have the specified shout?
是否裝備了特定的龍吼
IsWorn(Form item)
Is the actor wearing the specified item?
是否穿戴了特定的裝備(就比如戴個項圈就貓爬)
IsWornHasKeyword(Keyword keyword)
Is the actor wearing anything with the specified keyword?
是否穿戴了含有特定關鍵字的裝備(我?guī)缀醪挥茫?br>
GlobalVariable type:
-1=Others
0=Fists空手
1=Swords單手劍
2=Daggers匕首
3=War Axes單手斧
4=Maces單手錘
5=Greatswords雙手劍
6=Battleaxes雙手斧
7=Bows弓
8=Staff法杖
9=Crossbows弩
10=Warhammers雙手錘
11=Shields盾牌
12=Alteration Spells變換系
13=Illusion Spells幻術系
14=Destruction Spells毀滅系
15=Conjuration Spells召喚系
16=Restoration Spells恢復系
17=Scrolls法術卷軸(不是上古卷軸)
18=Torches(火把)
IsFemale()
Is the actor female?
是女性,男性則寫NOT IsFemale()
IsChild()
Is the actor a child?
是兒童,非寫not
IsPlayerTeammate()
Is the actor currently a teammate of the player?
是否是隊友,同上
IsInInterior()
Is the actor in an interior cell?
在室內?
IsInFaction(Faction faction)
Is the actor in the specified faction?
是否是特定派別
HasKeyword(Keyword keyword)
Does the actor have the specified keyword?
是否有關鍵字
HasMagicEffect(MagicEffect magiceffect)
Is the actor currently being affected by the given Magic Effect?
身上是否受到特定魔法效果影響
HasMagicEffectWithKeyword(Keyword keyword)
Is the actor currently being affected by a Magic Effect with the given Keyword?
是否受到有特定關鍵字的魔法影響
HasPerk(Perk perk)
Does the actor have the given Perk?
是否有指定的技能點?
IsEquippedShout(Form shout)
Does the actor have the given Spell or Shout?
是否解鎖了某項技能或者龍吼
IsActorValueEqualTo(GlobalVariable id, GlobalVariable value)
Is the ActorValue of the specified ID equal to the value?
角色的GlobalVariable id是否等于某個值(0-1之間的小數)
IsActorValueBaseEqualTo(GlobalVariable id, GlobalVariable value)
Is the base ActorValue of the specified ID equal to the value?
角色的GlobalVariable id基礎值是否等于特定值
下面的這些是受到特定的debuff之后的減損,比如變成吸血鬼了在白天最大體力值和生命值會減少。
IsActorValueMaxEqualTo(GlobalVariable id, GlobalVariable value)
Is the max ActorValue of the specified ID equal to the value??
給定角色的特定GlobalVariable id的最大值是否低于某個值
IsActorValueMaxLessThan(GlobalVariable id, GlobalVariable value)
Is the max ActorValue of the specified ID less than the value??
給定角色的特定GlobalVariable id的最大值是否低于某個值
IsActorValuePercentageEqualTo(GlobalVariable id, GlobalVariable value)
Is the percentage ActorValue of the specified ID equal to the value?
給定角色的特定GlobalVariable id是否等于特定值
IsActorValuePercentageLessThan(GlobalVariable id, GlobalVariable value)
Is the percentage ActorValue of the specified ID less than the value?
給定角色的特定GlobalVariable id是否低于特定值
IsAttacking()
Is the actor currently attacking?
正在進攻
IsRunning()
Is the actor currently running?
在跑步(游戲默認的移動)
IsSneaking()
Is the actor currently sneaking?
在潛行
IsSprinting()
Is the actor currently sprinting?
在沖刺(按下alt的動作)
IsInAir()
Is the actor in the air?
在空中(就是跳躍還沒落地的狀態(tài))
IsInCombat()
Is the actor in combat?
處于戰(zhàn)斗狀態(tài),(就是響戰(zhàn)斗音樂了)
IsWeaponDrawn()
Does the actor have his equipped weapon and/or magic spell drawn?
弓、法杖等蓄力
IsInLocation(Location location)
Is the actor in the specified location or a child of that location?
在特定地點(這個我沒用過所以不知道括號里面的地點怎么填
IsParentCell(Cell cell)
Is the actor in the specified cell?
cell相關,你可以簡單理解為某個具體地點)
IsMovementDirection(GlobalVariable direction)
Is the actor moving in the specified direction?
是否朝特定方向移動
GlobalVariable direction填寫數字
0=Standing Still
1=Forward
2=Right
3=Back
4=Left
那現(xiàn)在我們寫一個男性在室內生命值低于百分之三十非戰(zhàn)斗狀態(tài)的_conditions.txt:
NOT IsFemale() AND
IsInInterior() AND
IsActorValuePercentageLessThan(24, 0.30) AND
NOT IsInCombat()
not為判斷為否
and為并且
剩下的就對照上面的自己看好了
還有一個關于概率問題
random(1)是絕對發(fā)生,random(0)是絕對不發(fā)生,
一個_condition.txt只決定它所在的子文件夾的幾率。
所以就是說,如果存在100、101、102三個文件夾,那要讓三者的動作發(fā)生概率相等的話:
102:random(0.33)
101:random(0.5)
100:random(1)或者不填寫random在_conditions.txt里。
如果想指定玩家,就添加
IsActorBase("Skyrim.esm"|0x00000007)
這里是指是指定哪一位角色使用此動作
"Skyrim.esm"|0x00000007這個是什么?
"Skyrim.esm" 是指你想指定的mod的esp地址,這里是本體
0x00000007是指定角色的簡化版fromID,簡單來說就是數字身份證,這里是指定為玩家
怎么確定fromID?打開SSEEDIT,沒有就去下載,N網!
怎么用SSEEDIT?
去看我在貼吧寫的MOD使用指南01!順便教你怎么做補?。?/strong>
https://tieba.baidu.com/p/7949958510?
找到并啟動這個esp,去掉0x搜索即可。
記住寫條件函數時,formID要加0x,去掉前兩位字母或數字。
其他的東西自己想想怎么做。。。舉一反三。


接下來是AMR相關
Animation Motion Revolution(AMR)

AMR簡單來說就是給動作增加了位移限制的插件,本身不做任何事。需要你給動作添加所謂注釋的東西才會啟用。之后該動作會在播放時出現(xiàn)你想要的位移。如果不加的話做動作人物可能會直接飛出去到宇宙去了。。。所以需要我們作者自己決定在動作運行時的位移為多少。
0.560000 animmotion 0 149 0
第一個帶小數點的數字為動作運行的某一個幀的時間,animmotion則是必須要寫的的東西,你可以看成夾菜用的筷子,剩下的三個分別為X,Y,Z軸對應的位移距離。這些距離計算已經由上面的插件幫你設計好了,相對來說最好的數字。
別忘了AMR的注釋?。。?!

Payload Interpreter

中國作者。強無敵?。。?/strong>
你可能見過別人視頻中動作中釋放的那些炫酷魔法效果,而這些,都由此實現(xiàn)。
首先在mod里注冊你想要的spell或魔法效果或其他什么亂七八糟的東西
我們拿艾爾登戰(zhàn)技MOD舉例
中國作者。
紳士?!chang·Alex
在b站內出沒,感謝他的優(yōu)秀作品。


創(chuàng)建這些文件夾
你的mod\SKSE\PayloadInterpreter\Config
之后像圖里創(chuàng)建一個后綴為ini的文件,名字隨便你取

用記事本編輯
這里我舉個例子
艾爾登戰(zhàn)技的月影劍氣
$ES_ES_MoonV = @CAST|0X852|EldenSkyrim.esp|1|1|0|0|0|0|0|15|15
$ES_ES_MoonV是你要在注釋上寫的東西,必須要有$
@CAST 為釋放技能
0X852 為。。。跟DAR一樣。。。fromID。。。
EldenSkyrim.esp 跟DAR一樣
1|1|0|0|0|0|0|15|15 我們一個一個數字說明,看過ck說明書02應該了解我想表達什么
(1):effectiveness,我很難解釋這個是什么,這里應該指的是劍氣數量?嗎?
(2):magnitude,法術強度值,劍氣的話這里指的是傷害
(3):是否以自身為目標,此處為1即作用于自身
(4):需要的血量值,隨便你填多少
(5):消耗生命值
(6):需要的耐力值
(7):消耗耐力值
(8):需要的法力值
(9):消耗法力值
(當然這個步驟是不必要的,可以直接在注釋里的@的后面接castspell,直接在注釋里寫釋放的魔法formid和相關參數,寫ini主要是方便管理)
這里我也列出所有提供的參數(為什么中國作者不寫個中文的介紹哼啊啊啊啊啊啊啊啊?。?/p>
set animation variable bool(設置動畫為bool變量,腳本和某些mod可能會用到)
@SGVB|(string)graph variable|(bool)value
set animation variable float(設置為float變量,同上)
@SGVF|(string)graph variable|(float)value
set animation variable int(設置為int變量,同上)
@SGVI|(string)graph variable|(int)value
Apply a spell and its magic effect onto the actor instantly. Spell may stay on actor.(將設定的spell直接釋放于actor上)
@APPLYSPELL|(string)spell formID|(string).esp/.esm/.esl containing the spell
Remove a spell's effect from the actor.(將設定的spell于actor上移除)
@UNAPPLYSPELL|(string) spell formID|(string.esp/.esm/.esl containing the spell
set the actor to ghost(invincible). If the argument is false, "unghost" the character, and vice versa.(將自己設置為無敵狀態(tài),不會受到任何傷害)
@SETGHOST|(bool)isghost
play a nif particle effect on the actor(添加nif于actor上,主要是添加特效)
@PLAYPARTICLE|(string).nif file's relative path|(int)body part index|(float)nif scale|(float)play time|(utin32) flags|(float)X offset|(float)Y offset|(float)Z offset
只能用于人類。
nif的路徑一般為?
ValhallaCombat/block_Counter.nif(作者舉例)
設定的身體部位參數
kHead = 0,
kHair = 1,?
kBody = 2,?
kHands = 3,
kForearms = 4,
kAmulet = 5,
kRing = 6,?
kFeet = 7,
kCalves = 8,?
kShield = 9,?
kTail = 10,?
kLongHair = 11,
kCirclet = 12,?
kEars = 13,?
kDecapitateHead = 20,?
kDecapitate = 21,?
kFX01 = 31,?
kEditorTotal = 32,?
kHandToHandMelee = kEditorTotal,?
kOneHandSword = 33,?
kOneHandDagger = 34,?
kOneHandAxe = 35,
kOneHandMace = 36,?
kTwoHandMelee = 37,
?kBow = 38,?
kStaff = 39,?
kCrossbow = 40,?
kQuiver = 41,?
kTotal = 42
怎么在注釋上添加呢?
舉個例子,你馬上能看懂了
0.700000 PIE.$Verdimillious
0.899999 HitFrame.$ES_Strikefly(這行注釋在1.0后被棄用)
是不是豁然開朗?


最后是SCAR
SCAR - Skyrim Combos AI Revolution

簡單來說就是敵人版的MCO,讓敵人根據你的距離和角度來做出相應的動作。
其實弄起來挺簡單的。。。
首先下載這個玩意,在SCAR的文件下面

之后找到你用于導入和導出注釋的文件夾
支持SCAR的mod都有一個這個文件

SCAR_1hmReadyDummy.hkx為武器或空手動作判定文件,本身不做任何事
SCAR_BlockIdleDummy.hkx為格擋動作
那么怎么判定呢?就要靠注釋來決定
但怎么生成呢?
1.直接新建一個就好了!只是注釋要一個一個寫。
2.使用n網的那個文件,具體怎么用我們慢慢說
打開這個

確定注釋導入程序文件夾的位置

這個是動作路徑,接著按RUN即可,看他慢慢彈窗即可

接著你看SCAR_1hmReadyDummy.hkx的注釋里有沒有這兩行
1.000000 SCAR_ActionData{"IdleAnimation":"ADXP_NPCPowerAttack", "MinDistance":70, "MaxDistance":160, "StartAngle":-60, "EndAngle":60, "Chance":60, "Type":"RPA"}
0.500000 SCAR_ActionData{"IdleAnimation":"ADXP_NPCNormalAttack", "MinDistance":0, "MaxDistance":90, "StartAngle":-60, "EndAngle":60, "Chance":100, "Type":"RA"}
這些東西代表什么?
1.000000代表動作的優(yōu)先級,數字越高越先觸發(fā)
SCAR_ActionData{"IdleAnimation":
這些為必須有的東西,不能動
"ADXP_NPCPowerAttack"
為武器判定注釋,確定動作是武器重攻擊動作判定
"ADXP_NPCPowerAttack_H2H"
則為最新版本添加的空手動作判定
"ADXP_NPCNormalAttack"
則為武器輕攻擊動作判定
"MinDistance":70, "MaxDistance":160, "StartAngle":-60, "EndAngle":60, "Chance":60
"MinDistance"
為作此動作的最小判定距離
"MaxDistance"
為最大判定距離
當你距離敵人這些距離區(qū)間時,敵人可能會做此動作
"StartAngle"和"EndAngle"則為角度
那么這些東西我該怎么計算?
打開SACR文件里的這個

把EnableDebugOverlay的值改為true
進游戲你就會看見這個東西

自己看著辦吧
Chance即為觸發(fā)動作的幾率
Type為動作類型,這里為作者列出的數據
RA - RightAttack 右手攻擊動作
RPA - RightPowerAttack 右手重擊動作
LA - LeftAttack 左手
LPA - LeftPowerAttack 左手重攻擊
DA - DualAttack 雙持攻擊
DPA - DualPowerAttack 雙持重攻擊
BA - BashAttack 盾擊
BPA - BashPowerAttack 點了perk的盾擊動作
IDLE - Regular Idle 普通姿勢?
最后,由程序做出的注釋少了一個東西,讓敵人只會做出動作包里的第一個動作。。。
怎么讓敵人做出連貫的動作?
打開隨便一個attck動作
在1.000000 SCAR_ActionData{"IdleAnimation"這行注釋前加一個
1.550000 SCAR_ComboStart
就行了!接著他會根據下面的注釋判斷條件繼續(xù)動作
1.550000為此動作時間幀
你還可以在SCAR_ComboStart加一個
.50
這個為執(zhí)行下個動作的概率

到此,本期教程結束。
感謝各位大佬的付出,謝謝你們的作品。
還是想廢話一句。
什么作品不重要,重要的是中國作者。
我想說的說完了。
(來個富哥V我50吧,真不想做視頻。。。哈哈哈哈)
(求求你們去看孤獨搖滾吧?。。。。。?/span>
