群星mod制作批处理物种肖像及注册

群星mod制作批处理物种肖像及注册

分享一下自制mod时遇到的一种批处理文件的问题,因为比较麻烦,就直接做了流程式方案,去解决批量注册肖像的问题。

素材准备下载

只有三个要求:高清,高清还是TMD高清(其实不一定,自己喜欢就完事了)

上面我瞎说的

图片集最好具有以下几点:高清,基本无背景(换言之,基本是透明背景,JPG格式的文件基本就要出问题了),大小最好超过1280×360。

如果说下载的文件有背景,或有大部分区域不是透明的,或是JPG文件,得酌情考虑扣一扣图。

PS处理

PS处理所要达到的目的,是将下载过来的图片,制成1280×360大小的png文件(当然,直接制成DDS文件应该也可以,但是直接储存为DDS文件,是不能够作为PS的动作,从而进行大量的文件批处理的,因此最好还是先制成PNG文件。)

去实现这个目的,过程相当简单,首先需要开启PS的动作功能,设置动作图层以及动作。

其次,只要将目标文件置于图层中间(大部分情况是这样,由于要用PS的动作实现图片批处理,所以过多的移动图层位置,有可能会导致批处理的时候有些文件错位,届时需要额外处理错位文件。当然,如果原图片集的位置就比较合适,那么批处理也就方便很多。)

然后就是需要进行画布大小的修改,直接再PS内部更改画布大小就行了,当然需要注意,要根据你的图片集的立绘位置,决定画布改变大小时的中心点在哪,这也就是为什么需要提前对立绘的位置进行调整。

最后储存文件。

请注意,上述操作全都在一个动作内。

完成动作录制之后,我们就可以通过PS的批处理,来处理图片集。

批处理成DDS文件

我们导出之后的图片集是PNG格式,但是群星mod要识别的,应该是DDS文件,我们的PS可以通过Novdia的插件,来实现DDS文件的导出,但是并不能作为动作进行批处理。(不要问我如何安装Novdia的插件,自己去找,大佬们写的群星模组教程内有。实在不行,可以试试看GIMP软件,免费使用的,但是操作起来没有PS顺手就是了。)

此时我想了一计阴招,虽然不知道合不合理,但是事实证明能用。既然能跑,你管他使用手跑的还是用头跑的呢()

我们需要找到导出的图片集位置(这个是你自己决定导出到哪的,我怎么可能知道你导出到哪去。当然我觉得应该没多少人会找不到)

然后我们需要新建一个TXT文件,名字随意,在里面输入:

ren *.png *.dds

然后保存,退出,将.txt文件的后缀改成.bat。

这样一个更改格式的批处理命令就做好了。

这个命令实现的是,像我们改txt文件为bat文件一样,将所有(也就是.png的.的含义)通通改为和原本一样的名字,但是是.dds后缀的文件。

但事实上png改成dds文件不应该这样操作,这种改后缀的方式就像windows提示的那样,可能会造成文件产生错误,可是除了这个办法,我也想不到其他的办法能够批量更改成dds。

如果PS有可供使用的接口,那应该还可以用代码实现这种功能,但是……我不会啊()

所以我说,这是一计阴招。

代码预处理地址预处理

我们处理完图片集之后,得到的是DDS格式的图片集,然后我们最好提前将你的图片集归类(当然不归类也行),放入你的模组的/gfx/models/portraits/大类/小类内,这样方便后续操作。(大类并不是说你的文件夹的名字叫大类,小类同理,文件夹的名字都是自设的,但是最好不要或者都可以说一定不要是中文,不确定游戏是否能够正常读取中文文件夹。而且要注意 /gfx/models/portraits/ 不能更改,必须保持文件夹名字一致)

再之后,我们将所有的图片选中,右键复制地址,然后同目录下新建一个TXT文件,将复制的地址粘贴进去。这样,我们就得到了所有图片的地址。

但是这样是不够的,除非你并不想要上传mod,否则是一定需要将图片集放在你的mod文件夹内,因此,一开始图片集的地址是不能使用的,而且导入编译器的时候也是需要按照p社语言来注册的。

注册时的格式如下:

sniper_32_3= { textureFile= "gfx/models/portraits/*肖像大类*/*小类*/*.dds"}

而我们得到的地址,基本上都是C: D: E:等等磁盘下的格式,与注册时的代码有所区别。此时需要运用txt文件的查找替换功能(所以其实word也可以做到,但是一下用txt讲述),不过此时就能看出为什么要提前将图片集放入mod文件夹内了,不然你的地址文件都不包含/gfx/models/portraits/,这样后续操作会变得很麻烦。

我们找到文件编辑栏内的替换,或者按下 CTRL+R,选取任意一行的gfx/models/portraits/前面的所有内容,复制粘贴进替换的上面一栏,然后将:

= { textureFile= "

输入到替换栏下面一栏,点击全部替换。

同理,复制.dds 更改为 .dds"}按上述操作,应该就能够把你的所有地址改为:= { textureFile= "gfx/models/portraits/肖像大类/小类/ (图片名).dds "}形式。

导入EXCEL

谁都能发现,我们按照上述操作之后,地址文件缺少类似 sniper_32_3= 的内容。这是你注册肖像时,你个这一张立绘取的名字,你当然可以取你喜欢的名字,但是这不方便批处理,所以不建议使用。

要添加这一内容,我们可以通过excel实现。

因为我做的是舟的肖像处理,所以,我将肖像注册分成了职业_干员编号_立绘编号。

基于这种命名方式,我们新建一个excel文件,我们把第一列(A)、第二列(B)、第四列(D)分别作为职业_、干员编号、立绘编号,第三列(C)填入_。

然后在excel内导入你之前做好的地址文件的地址(获取地址很简单,在之前的模组文件夹内,右键你的地址文件夹,复制它的地址粘贴进excel文件即可)。

在设置列的时候,需要根据你自己的需求进行处理。

举个自己的例子。guard_11_1= { textureFile= "gfx/models/portraits/rhodes_island/guard/立绘_幽灵鲨_1.dds"}这是我的一张图片,你可以看到,职业为guard,干员编号为11,立绘编号为1

而我还有

guard_11_2= { textureFile= "gfx/models/portraits/rhodes_island/guard/立绘幽灵鲨_2.dds"} 

guard_11_3= { textureFile= "gfx/models/portraits/rhodes_island/guard/立绘幽灵鲨skin1.dds"}

guard_12_1= { textureFile= "gfx/models/portraits/rhodes_island/guard/立绘羽毛笔_1.dds"}

这三张图片

我要通过excel做到的是,区分干员的名字,每一行检测干员名字是否与上一行不同,不同则编号加一;相同则立绘编号加一。

那么我们的思路很清晰。

地址文件的内容基本上都是:= { textureFile= "gfx/models/portraits/rhodes_island/guard/立绘_羽毛笔_1.dds"}

那么excel设置列的时候,我们要在= { textureFile= "gfx/models/portraits/rhodes_island/guard/立绘_ 处,做出中断

这样以后再导入excel,我们应该能够得到在E列为= { textureFile= "gfx/models/portraits/rhodes_island/guard/立绘_

F列为羽毛笔_1.dds"}

这样,初步的设定就算完成了。

另外,中文的文件夹能不能识别我不知道,但是中文的图片文件居然可以识别是我没想到的,本来还以为需要对文件名称进行批处理,不需要真是万幸了。

公式运用

之前说过,我们需要根据图片名称设置干员编号以及立绘编号,这一点excel所具有的函数功能就能够实现。

虽然我不是很精通,但是可以用简单粗暴却不易维护的方式,提供一个大致思路。

我们把地址分成了E(通用地址),F(文件名+句末杂项),F列的开头是干员的名字,那么我们可以在B列写入

=IF(MID(Fn+1,1,2)=MID(Fn,1,2),Bn,Bn+1)//n为当前行数,n0为1

MID函数是取F(n)单元格的第1个字符到第2个字符,可能会产生错误的原因是,文件名字含有重复,比如,一个图片文件叫做玛丽,还有个加玛丽苏,所以MID函数的终止位置需要自己设定。

IF判断本行F列的前几个字符是否与上一行一致,如果一致,则本单元格延续上一格,不一致,则加一。

D列的内容与B列相似,就不过多赘述。

最后将公式拉至底端,就完成了神似:sniper_32_3= { textureFile= "gfx/models/portraits/肖像大类/小类/(图片名).dds"}的格式。

导出TXT文件并再次处理

最后,只需要选中文件另存为,选择


比丘资源网 » 群星mod制作批处理物种肖像及注册

发表回复

提供最优质的资源集合

立即查看 了解详情