域名将于6月份到期,并且不再续费,届时网站将无法访问。
6月份之前如果服务器到期将提前关闭网站,请改访问模组网社区

如何将XML脚本转换成Wizard安装向导(2)

因为 ak47lyj 提到了 Personal Pretty Pack v1.12c 安装包的 XML脚本 让人写起来很蛋疼,他还提到了 flag 设置,我一开始以为是设置单选的,最后才发现其实跟IF判断语句差不多

貌似当时我有说过“晚点写个 Wizard 的实现方法”,然后我就销声匿迹了。不知道现在写还没有用处……不管怎么说,我把这篇文章当成是“如何将XML脚本转换成Wizard安装向导”的第二篇。

Personal Pretty Pack v1.12c 安装向导中一开始是选择身形:UNP或者CBBE,第二步则根据上一步中用的选择出现不同的选项和命令。

当你第一步选择 UNP ,会设置 flag=UNP body setting,相反的,选择 CBBE 则设置 flag=CBBE body setting;
第二步中,当 flag=UNP body setting 时出现UNP的窗口,当 flag=CBBE body setting 则出现 CBBE 的窗口。

代码看起来会很长,但是写的话应该会很简单,写完 UNP 部分后复制一份把一些东西改成 CBBE 后很快就能实现……

XML脚本其实很死,玩家完全没法自定义(了解的不多,看法有一定局限)。而 Wizard 相对灵活点,你可以通过不同的方式来实现上面的效果:

先说一下与上面类似的做法

Show the Content

sBody = "" SelectOne "身形选择", \
     "UNP Female Body", "", "Fomod\\unp.png", \
     "CBBE Female Body", "", "Fomod\\cbbe.png"
     Case "UNP Female Body"
         SelectSubPackage "01 body unp"
         sBody = "UNP Female Body"
         Break
     Case "CBBE Female Body"
         SelectSubPackage "01 body cbbe"
         sBody = "CBBE Female Body"
         Break
EndSelect

If sBody == "UNP Female Body"
     SelectMany "可选杂项", \
         "Fair Skin", "美白皮肤(UNP):让皮肤更加白皙细腻。", "", \
         "Vanilla Armor for UNP", "原有服饰美化(UNP):对原有的部分盔甲和衣物进行改造,使其更加贴合身材,并且尽量保持原有外观。", "", \
         "Bouncing Breast Physics", "颤胸物理学(UNP):勾选颤胸物理学后请勿勾选动作,否则可能会导致颤胸失效。", ""
         Case "Fair Skin"
             SelectSubPackage "02 skin unp"
             Break
         Case "Vanilla Armor for UNP"
             SelectSubPackage "02 armor unp"
             Break
         Case "Bouncing Breast Physics"
             SelectSubPackage "02 bbp unp"
             Break
     EndSelect
EndIf

If sBody == "CBBE Female Body"
     SelectMany "可选杂项", \
         "Fair Skin", "美白皮肤(CBBE):让皮肤更加白皙细腻。", "", \
         "Vanilla Armor for CBBE", "原有服饰美化(CBBE):对原有的部分盔甲和衣物进行改造,使其更加贴合身材,并且尽量保持原有外观。", "", \
         "Bouncing Breast Physics", "颤胸物理学(CBBE):勾选颤胸物理学后请勿勾选动作,否则可能会导致颤胸失效。", ""
         Case "Fair Skin"
             SelectSubPackage "02 skin cbbe"
             Break
         Case "Vanilla Armor for CBBE"
             SelectSubPackage "02 armor cbbe"
             Break
         Case "Bouncing Breast Physics"
             SelectSubPackage "02 bbp cbbe"
             Break
     EndSelect
EndIf


原理和原版的一样,应该不需要解释了……

上面是新手常用的方法(好吧,是我一开始常用的方法),后来看了Lojack写的一些Wizard,突然发现可以用下面的方法:
把If判断去掉,直接在Case里面运行,也就是脚本可以简化为

Show the Content

SelectOne "身形选择", \
    "UNP Female Body", "", "Fomod\\unp.png", \
    "CBBE Female Body", "", "Fomod\\cbbe.png"
    Case "UNP Female Body"
        SelectSubPackage "01 body unp"

        SelectMany "可选杂项", \
            "Fair Skin", "美白皮肤(UNP):让皮肤更加白皙细腻。", "", \
            "Vanilla Armor for UNP", "原有服饰美化(UNP):对原有的部分盔甲和衣物进行改造,使其更加贴合身材,并且尽量保持原有外观。", "", \
            "Bouncing Breast Physics", "颤胸物理学(UNP):勾选颤胸物理学后请勿勾选动作,否则可能会导致颤胸失效。", ""
            Case "Fair Skin"
                SelectSubPackage "02 skin unp"
                Break
            Case "Vanilla Armor for UNP"
                SelectSubPackage "02 armor unp"
                Break
            Case "Bouncing Breast Physics"
                SelectSubPackage "02 bbp unp"
                Break
        EndSelect

        Break
    Case "CBBE Female Body"
        SelectSubPackage "01 body cbbe"

        SelectMany "可选杂项", \
            "Fair Skin", "美白皮肤(CBBE):让皮肤更加白皙细腻。", "", \
            "Vanilla Armor for CBBE", "原有服饰美化(CBBE):对原有的部分盔甲和衣物进行改造,使其更加贴合身材,并且尽量保持原有外观。", "", \
            "Bouncing Breast Physics", "颤胸物理学(CBBE):勾选颤胸物理学后请勿勾选动作,否则可能会导致颤胸失效。", ""
            Case "Fair Skin"
                SelectSubPackage "02 skin cbbe"
                Break
            Case "Vanilla Armor for CBBE"
                SelectSubPackage "02 armor cbbe"
                Break
            Case "Bouncing Breast Physics"
                SelectSubPackage "02 bbp cbbe"
                Break
        EndSelect

        Break
EndSelect

后来我又看了其他安装包的安装向导,慢慢了解到其实还有一种方法

Show the Content

sBody = ""

SelectOne "身形选择", \
	"UNP Female Body", "", "Fomod\\unp.png", \
	"CBBE Female Body", "", "Fomod\\cbbe.png"
	Case "UNP Female Body"
		sBody = "unp"
		Break
	Case "CBBE Female Body"
		sBody = "cbbe"
		Break
EndSelect

SelectSubPackage "01 body " + sBody
SelectMany "可选杂项", \
	"Fair Skin", "美白皮肤:让皮肤更加白皙细腻。", "", \
	"Vanilla Armor", "原有服饰美化:对原有的部分盔甲和衣物进行改造,使其更加贴合身材,并且尽量保持原有外观。", "", \
	"Bouncing Breast Physics", "颤胸物理学:勾选颤胸物理学后请勿勾选动作,否则可能会导致颤胸失效。", ""
	Case "Fair Skin"
		SelectSubPackage "02 skin " + sBody
		Break
	Case "Vanilla Armor"
		SelectSubPackage "02 armor " + sBody
		Break
	Case "Bouncing Breast Physics"
		SelectSubPackage "02 bbp " + sBody
		Break
EndSelect


我们可以把每个子安装包的名字拆分开,比如 02 bbp cbbe 拆分成 02 bbp 和 cbbe ,然后第一步选择好身形、定义好sBody后,我们后面就可以直接利用。

这种方法应该也不是太难理解,主要是把 子安装包 的名字当成一个字符串,然后对其进行拆分……当然,要实现这种效果,前提是我们给子安装包命名时就要设置好。

方法不是太难,但是平时不怎么玩代码的我们一般不会想到这种方法,不过我们可以通过学习别人的代码来学习新的东西。 🙂

icedream

About icedream

其实我知道的东西很少,只是翻译了一些东西,悲催的是翻译过后很快就忘了。

Comments are closed.