Jump to content
模组网
Sign in to follow this  
icedream

WB 如何将XML脚本转换成Wizard安装向导

Recommended Posts

说一下如何将 NMM 的 XML 安装脚本转换成 Wrye Bash 的 Wizard 安装向导,不会很难,但可能需要先了解一下 Wizard (可以看完后遇到问题了再回去重新阅读)。

用到的安装包是 塞妮可玲 的 【ARROW&KNEE MOD TEAM™】【重点关注:搏击类武器NMM汉化整合安装版】独立高材质多类型勾爪、拳套和手刀~精美帅气~另外附送黑解附魔~把
 
安装包下载完打开后如下(我把不相关代码隐藏了)

使用 Nexus Mod Manager 运行后的效果是:



把 最后的效果 与 XML 比较一下,我们可以大致了解:
安装步骤通过installStep定义的,上面的XML脚本定义了三个installStep,所以最终NMM运行时生成三个步骤。
每一个步骤下面会有一个或者多个group,表示该步骤下面会出现相应的项目。
group下面一定会出现plugin,如果有多个plugin,最终该group下面会以多个单选项出现
 
我们这边先不讨论 group type 的定义
如下图,步骤二 的group 矮人爪 定义了 三个 plugin ,于是有了下面的单选效果

同样的,步骤一 匕首类武器选择 定义了多个 plugin ,但每个 plugin 下面只有一个 plugin ,所以出现上面 多选 的效果
 
不过,我个人觉得步骤一好丑,艾尔文利爪 前面直接出现一个勾选框不就好了,为什么要在下面多一个 elven 然后才出现勾选框……
先说一下多选框,也就是步骤一。
 
XML 脚本中的多选框实现方法是installStep下面定义多个group,然后每个group下面对应一个plugin,如下(部分代码省略了)

<installStep name="Claws interface">
  <group name="铁爪" type="SelectAny">
  <group name="玻璃爪" type="SelectAny">
  <group name="兽人爪" type="SelectAny">
  <group name="乌木爪" type="SelectAny">
  <group name="魔族爪" type="SelectAny">
  <group name="龙爪" type="SelectAny">
  <group name="钢质拳套" type="SelectAny">
  <group name="雷迪克之爪" type="SelectAny">
  <group name="艾尔文利爪" type="SelectAny">
 </installStep>

Wizard 中的多选框实现方式是 SelectMany

SelectMany "匕首类武器选择", \
	"选项一", "Description", "image", \
	"选项二", "Description", "image"
	Case "选项一"
		命令1
		Break
	Case "选项二" 
		命令2
		Break
EndSelect

所以把上面的形式转换成 Wizard 便是

SelectMany "匕首类武器选择", \
	"铁爪", "Description", "image", \
	"玻璃爪", "Description", "image", \
	"兽人爪", "Description", "image", \
	"乌木爪", "Description", "image", \
	"魔族爪", "Description", "image", \
	"龙爪", "Description", "image", \
	"钢质拳套", "Description", "image", \
	"雷迪克之爪", "Description", "image", \
	"艾尔文利爪", "Description", "image"
	Case "铁爪"
		命令1
		Break
	Case "玻璃爪" 
		命令2
		Break
	Case "兽人爪"
		命令3
		Break
	Case "乌木爪"
		命令4
		Break
	Case "魔族爪"
		命令5
		Break
	Case "龙爪"
		命令6
		Break
	Case "钢质拳套"
		命令7
		Break
	Case "雷迪克之爪"
		命令8
		Break
	Case "艾尔文利爪"
		命令9
		Break
EndSelect

接下来把每一个选项的细节补齐
XML 里面,第一个选项 铁爪 的形式是

<group name="铁爪" type="SelectAny">
  <plugins order="Explicit">
   <plugin name="iron">
    <description>
     铁质爪器。获得方法:独立锻造或控制台代码XX001004/XX001000。
    </description>
    <image path="fomod\img\01 iron.bmp"/>
    <files>
     <folder source="01 iron" destination="" priority="0"/>
    </files>
    <typeDescriptor>
     <type name="Optional"/>
    </typeDescriptor>
   </plugin>
  </plugins>
 </group>

转换为 Wizard 就是

"铁爪", "Description", "image", \

变成

"铁爪", "铁质爪器。获得方法:独立锻造或控制台代码XX001004/XX001000。", "fomod\\img
\\01 iron.bmp", \

铁质爪器。获得方法:独立锻造或控制台代码XX001004/XX001000。 是从 <description>铁质爪器。获得方法:独立锻造或控制台代码XX001004/XX001000。</description>中转换过来的;
fomod\\img\\01 iron.bmp 是从 <image path=”fomod\img\01 iron.bmp”/> 中转换过来的(注意要把 \ 变成 \\ ,详细原因见 Wizard教程)。
同时,


	Case "铁爪"
		命令1
		Break

变成

	Case "铁爪"
		SelectSubPackage "01 iron"
		Break

01 iron 是由  <files><folder source=”01 iron” destination=”" priority=”0″/></files> 中得来的。
所以,把整个 步骤一 用 Wizard 来表示就是


; 匕首类武器选择
SelectMany "匕首类武器选择", \
	"铁爪", "铁质爪器。获得方法:独立锻造或控制台代码XX001004/XX001000。", "fomod\\img\\01 iron.bmp", \
	"玻璃爪", "玻璃材料的爪器。获得方法:独立锻造或控制台代码XX001034/XX001037。", "fomod\\img\\01 glass.bmp", \
	"兽人爪", "兽人族的爪器。获得方法:独立锻造或控制台代码01001014。", "fomod\\img\\01 orcish.bmp", \
	"乌木爪", "乌木爪器。获得方法:独立锻造或控制台代码XX001024。", "fomod\\img\\01 ebony.bmp", \
	"魔族爪", "魔族的爪器。获得方法:独立锻造或控制台代码XX00103C/XX00103F。", "fomod\\img\\01 daedric.bmp", \
	"龙爪", "龙骨制成的爪器。获得方法:独立锻造或控制台代码XX001044/XX001047。", "fomod\\img\\01 dragonbone.bmp", \
	"钢质拳套", "钢质的拳套。获得方法:独立锻造或控制台代码XX001008。", "fomod\\img\\01 steel.bmp", \
	"雷迪克之爪", "神秘的雷迪克曾使用的爪器。获得方法:独立锻造或控制台代码XX001028。", "fomod\\img\\01 RiddickUlak.bmp", \
	"艾尔文利爪", "艾尔文的利爪。获得方法:独立锻造或控制台代码XX001018/XX001019。", "fomod\\img\\01 elven.bmp"
	Case "铁爪"
		SelectSubPackage "01 iron"
		Break
	Case "玻璃爪"
		SelectSubPackage "01 glass"
		Break
	Case "兽人爪"
		SelectSubPackage "01 orcish"
		Break
	Case "乌木爪"
		SelectSubPackage "01 ebony"
		Break
	Case "魔族爪"
		SelectSubPackage "01 daedric"
		Break
	Case "龙爪"
		SelectSubPackage "01 dragonbone"
		Break
	Case "钢质拳套"
		SelectSubPackage "01 steel"
		Break
	Case "雷迪克之爪"
		SelectSubPackage "01 RiddickUlak"
		Break
	Case "艾尔文利爪"
		SelectSubPackage "01 elven"
		Break
EndSelect


个人感觉这边代码的书写比 Wizard 会比 XML 来的简单。

接下来,说下单选框

因为 Wizard 中一次只能一个单选框,所以上面 步骤二 一下子出现了四个单选框,转换成 Wizard 时我们必须把它分成四个,另外把 SelectMany 改成 SelectOne (多选改成单选)

剩下的利用同样的方法,最终的 Wizard 是

; 可选类武器种类选择
SelectOne "可选类武器种类选择 - 矮人爪", \
	"匕首版", "锻莫遗迹发现的爪器。获得方法:独立锻造或控制台代码XX00102C/XX00102D。", "fomod\\img\\02 dwemer.bmp", \
	"单手锤版", "锻莫遗迹发现的爪器。获得方法:独立锻造或控制台代码XX00102C/XX00102D。", "fomod\\img\\02 dwemer.bmp", \
	"不选择", "不选择此种武器。", ""
	Case "匕首版"
		SelectSubPackage "02 dwemer(dagger)"
		Break
	Case "单手锤版"
		SelectSubPackage "02 dwemer(mace)"
		Break
	Case "不选择"
		Break
EndSelect
SelectOne "可选类武器种类选择 - 银质钻孔器", \
	"匕首版", "银质的尖刺拳套。获得方法:独立锻造或控制台代码XX00100C/XX001010。", "fomod\\img\\02 silver.bmp", \
	"单手锤版", "银质的尖刺拳套。获得方法:独立锻造或控制台代码XX00100C/XX001010。", "fomod\\img\\02 silver.bmp", \
	"不选择", "不选择此种武器。", ""
	Case "匕首版"
		SelectSubPackage "02 silver(dagger)"
		Break
	Case "单手锤版"
		SelectSubPackage "02 silver(mace)"
		Break
	Case "不选择"
		Break
EndSelect
SelectOne "可选类武器种类选择 - 炎爆", \
	"匕首版", "隐藏的火焰拳套,无法升级,但初始攻击力非常强大。获得方法:控制台代码XX00104E/XX00104F(XX0016DA/XX0016DB)。", "fomod\\img\\02 flame.bmp", \
	"单手锤版", "隐藏的火焰拳套,无法升级,但初始攻击力非常强大。获得方法:控制台代码XX001034/XX001037。", "fomod\\img\\02 flame.bmp", \
	"不选择", "不选择此种武器。", ""
	Case "匕首版"
		SelectSubPackage "02 flame(dagger)"
		Break
	Case "单手锤版"
		SelectSubPackage "02 flame(mace)"
		Break
	Case "不选择"
		Break
EndSelect
SelectOne "可选类武器种类选择 - 阿卡维尔·卡塔尔", \
	"匕首版", "神秘的阿卡维尔·卡塔尔。获得方法:独立锻造或控制台代码XX001034/XX001037。", "fomod\\img\\02 akaviri.bmp", \
	"单手剑版", "神秘的阿卡维尔·卡塔尔。获得方法:独立锻造或控制台代码XX001034/XX001037。", "fomod\\img\\02 akaviri.bmp", \
	"不选择", "不选择此种武器。", ""
	Case "匕首版"
		SelectSubPackage "02 akaviri(dagger)"
		Break
	Case "单手剑版"
		SelectSubPackage "02 akaviri(sword)"
		Break
	Case "不选择"
		Break
EndSelect


窗口三则为

; 附魔选择
SelectOne "附魔选择 - 黑解形态附魔", \
	"选择", "可以通过控制台代码XX000D63获得空白的黑解形态附魔原型,再分解学习黑解形态附魔。", "fomod\\img\\03 Warglaive.bmp", \
	"不选择", "不选择此种武器。", ""
	Case "选择"
		SelectSubPackage "03 Warglaive"
		Break
	Case "不选择"
		Break
EndSelect


 
如果觉得太简单或者太复杂的,可以拿 Wizard 与 XML 对比,对比一下应该就会了
貌似 Wrye Bash 教程第二十二堂——安装向导会更容易理解。

我是觉得写得太简单了,不过担心写多了又显得啰嗦。

PS:这是Wizard完整版的下载:华为网盘

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...