前言
学会使用mod工具,能够让你的游戏(装mod)体验更上一层楼。
本教程涉及各种Mod工具,但主要还是围绕xEdit的使用。部分参考于开源的Lively Dismay教程,因此本教程同样遵循相同的开源协议,这意味着任何人均可对该内容进行添加、修改及重新发布(CC BY-NC-SA 4.0)。
请注意,该教程需要正版游戏本体(实际上不需要,但这都2023了你还没买老滚?),盗版游戏将无法获得支持。
章节目录
这里是目前已经写好的内容。
0 - 1 小节:基础工具的安装与配置、MO启动项设置于工具输出路径
- BGS游戏中的常见文件格式
- 如何为esp移除前置模组
- 如何使用SPID(Spell Perk Item Distributer)为NPC分配MOD物品、法术、状态 <- 你在这里
计划更新内容
- esp转esl(espfe/esl-flagged esp)
- 使用zEdit合并多个esp
- Nemesis 与 FNIS 共存的动画引擎解决方案
- 如何找到未汉化的esp及词条
- xEdit基础:Keyword与Condition
- 通过xEdit进行冲突排查与简易补丁制作
- CK教学:制作基础的世界冲突补丁
后续章节还是发在单独的帖子里,我会把链接更新到上面的目录里作为跳转。
------------分割线------------
如何使用SPID(Spell Perk Item Distributer)为NPC分配MOD物品、法术、状态
一、SPID是什么 - 简要介绍与比较
可能在现在已经不需要过多介绍了,但以防还有刚入坑或者刚接触mod不久的萌新,这里还是作简要介绍
1. 简介
SPID全称叫做Spell Perk Item Distributor,意思是你可以用它来给老滚5里的任何NPC(甚至包括容器和尸体)动态分配:物品、法术、法术效果、能力。它是一个SKSE插件,不依赖于papyrus脚本。全部支持的分配内容如下:
- Spell ——法术
- Perk ——能力
- Item ——物品
- Shout ——龙吼
- LevSpell ——随等级提升的法术
- Package ——AI包
- Outfit ——着装
- Keyword ——关键字
- DeathItem ——死亡掉落
- Faction ——阵营
2. SPID的优势
在SPID出现之前,想要将自定的物品给NPC使用,或者添加到箱子和死亡掉落里,需要使用xEdit制作Level List(等级列表),因为是写在esp里的内容,因此很可能就会和其他同样修改等级列表的esp产生冲突,需要额外的补丁来解决。而SPID则大大简化了这个过程。使用SPID,你只需要写一个ini文件,在里面指定需要分配的东西、分配到谁身上以及分配的条件,即可在每次加载游戏或场景变换时动态地将自定内容分配给NPC。
以下是SPID和传统的Level List补丁的差异
| SPID | Level List |
ESP | 基本不需要额外的ESP | 总是需要esp |
灵活性 | 所有设置都储存在ini文件中,可随时更改 | 内容储存在esp中,修改需要使用xEdit |
补丁 | 不需要补丁,动态分配 | 需要,尤其是多个添加Level List的mod存在时,排序靠下的会覆盖掉排序靠上的 |
SPID基本上可以看做轻量、简化的Level List,自定义物品分配比较简单,且规则相比xEdit中的那些词条可读性更强。
3. SPID的劣势
但是SPID也有一些缺陷。
首先是SPID分配的物品是在游戏加载时进行的,这就意味着如果你给NPC随机分配了掉落物,很可能在其尸体没有清除之前,物品会反复刷到它身上;
第二是如果需要给NPC分配装备和武器,如果你给的不如NPC自带的属性好,那么NPC很可能不会使用;
第三是NPC身上穿着的装备是写入存档的,如果你中途为NPC分配新的物品装备,那么它同样不会使用,但可以强制刷新它的物品栏来让他更新装备。
综上所述,SPID并不能完全取代Level List补丁,它更适用于给NPC或容器添加掉落物、根据条件给NPC上状态等额外添加的操作,而比较不适用于为NPC替换装备。
二、如何使用SPID
1. 所需工具
SPID的安装于其他mod一样,安装后可以排序在任意位置。
SPID
SPID依赖于其本体、分配的物品的FormID以及分配目标三个对象。因此需要通过xEdit来查询物品ID以及分配对象的ID。
xEdit
任意纯文本编辑器。我推荐使用Visual Studio Code。支持代码高亮,自动缩进及自动补全提示等功能,并且还有丰富的插件,可以做到文本对比、多光标同步输入、文本翻译等功能,比系统自带的notepad更方便。或者使用windows自带记事本也可。但请不要使用Notepad++(辱华),或其他富文本编辑器(如word,rtf等)。
2. 写条件之前的准备工作
SPID分配规则被储存在一个ini文件中,ini文件则需要和其他esp一样放置在同一层级(data层级)。并且它的命名需要符合 xxx_DISTR.ini格式。xxx可以是任何英文字符。
- 首先,在MO中创建一个空mod。
- 打开创建的空mod文件夹,在这里直接创建一个txt文档,并以命名规范进行命名。注意你需要在windows的文件管理器设置中显示文件扩展名(方法)。
你可以使用你想分配的物品mod名字作为文件名,方便区分。
打开ini文件之后,就可以开始写SPID条件了。但你需要首先知道条件的书写格式。
3. SPID条件格式说明
- ini有点类似写代码,因此如果你需要写说明性的文字,请在一行的开头添加一个英文分号 ;,这样该行就会被SKSE忽略;
- 尽可能为每个条件写上备注,保证条件的可读性,当你需要进行修改时,就可以不必从头找起。
3.1 注释的格式
; 这是一行SPID的注释,以英文分号开头
; 你可以写多行,用于区分每一组条件所分配的物品
; 也可以将用到的ID及对应NPC记录在开头处,避免下次修改时还要从头查起
3.2 以下是SPID几种条件的格式
分配法术
Spell = 分配物formID~esp名称 | 字符串 | 对象formID或editorID |等级条件 | NPC特性 | NONE | 分配几率
分配物品
Item = 分配物formID~esp名称 | 字符串 | 对象formID或editorID | 等级条件 | NPC特性 | 物品数量 | 分配几率
死亡掉落则是将开头的Item 替换为 DeathItem
4. 参数的解释
首先需要解释一下formID,在老滚中,任何物品、法术、阵营甚至动作,都有一串对应的ID,他的组成格式为:xxYYYYYY(八位),xx为esp的加载顺序,比如skyrim.esm总是第一个加载,所以他的前两位就是00。在老滚中进制遵循的是16进制,从0到9后,紧接着是A到F(代表10-15)一共16位。所以你经常可以看到0A00411F之类的ID。
4.1 分配物formID~esp名称
作用:指定需要分配的内容
格式:以 0x 开头,省略中间的数字0。比如一个东西的代码为0800137C,那么就写为:0x137C某某.esp;
也可以直接使用完整的ID,比如0003EADE
4.2 字符串
作用:指定分配到何种类型的NPC身上
格式:可直接填写名称(Actorbase names)、该角色的editorID或角色所属的关键字的editorID。比如分配物品给瑟拉娜,就可以直接填Serana,其他支持的内容也是一样的。但是一般不会单独使用这种方式
4.3 对象formID或editorID
作用:这是分配对象的ID,可以在xEdit中查询找到
格式:与上面的分配物formID相同
SPID支持以下类型的ID
Faction ——分配给同一阵营下的NPC,但有可能不准确,因为阵营内也有可能包含相互敌对的势力
Class ——分配个某种NPC种类
CombatStyle ——可分配给使用相同战斗风格的NPC
Race ——可分配给某一个种族的NPC
Outfit ——可分配给使用相同装束的NPC
NPC ——直接分配给单个NPC,不推荐,因为每个NPC的ID都需要单独写到条件中
VoiceType ——可分配给具有相同声音类型的NPC,例如你的条件是年轻女性,就可以使用FemaleYongEager 这种声音类型
4.4 等级条件
作用:限定分配对象需要满足的等级条件
格式:最低等级/最高等级, 技能代码(最低等级/最高等级)。比如我们需要限制获得物品的NPC为 处在20-40级之间,单手技能大于40级,那么就写为20/40,0(40)
每种技能对应的数字码
单手 = 0
双手 = 1
弓箭 = 2
格挡 = 3
锻造 = 4
重甲 = 5
轻甲 = 6
扒窃 = 7
撬锁 = 8
潜行 = 9
炼金 = 10
口才 = 11
变换系 = 12
召唤系 = 13
毁灭系 = 14
幻术系 = 15
恢复系 = 16
附魔 = 17
4.5 NPC特性
作用:指定NPC的性别、是否为独特、是否可召唤
格式:性别:M/F;是否独特:U/-U;是否为可召唤:S/-S。比如分配给所有独特的女性不可召唤NPC:F/U/-S
4.6 分配几率
作用:指定最终分配几率,满足前面的条件之后计算
格式:只填数字,忽略百分号。例如你需要50%的概率分配,那么就填50。如果不填就默认为100%的概率。
以上所有参数如果不使用,则填入NONE。全部字符需在英文输入法下输入(标点符号为半角)。
三、条件参考
; Armour Heals - Left Hand
; 用于将恢复法术的左手奇异符文效果分配给全体NPC,概率为50%
Spell = 0x1D5314~StrangeRunes.esp|ActorTypeNPC|NONE|NONE|NONE|NONE|50
; csHumanBerserkerLvl1 [CSTY:0003D2C8] -> Low Stance
; 分配架势mod的低架势给人类狂战士NPC
Perk = 0x04251A~Stances~Dynamic Weapon Movesets SE.esp|ActorTypeNPC|0003D2C8
; Potion of Extreme Healing
; 分配生命回复药剂给人形敌人,需要满足等级为40~50之间,数量为1瓶,概率为12%
Item = 0x39BE4~Skyrim.esm|NONE|0x2BE3B,0x6B18C,0x10FE28,0xB3292,0xE3A56,0x5091C,0x04024CAB,0x72834,0x24029,0x28713,0xBC09E,0x50920,0x0402929A,0x1BDB3,0x58B3D,0xAA0A4,0xE3A4D,0001BCC0|40/50|NONE|1|12
; Become Ethereal ( BecomeEtherealShout )
; 分配幻灵虚化龙吼给一些NPC,概率为15%
Shout = 0x32920~Skyrim.esm|0x48B55,0x3725E,0x37231,0x64B1C,0x1BB28,0xDD9D9,0xAB6FF,0xC1908,0xA6842,0x3B54B,0x5B756,0x3BE23,0x44C5B,0x640B7,0x4247E,0x4247F|0x2C6C8,0x04034FBC,0x106643|15|NONE|NONE|15