活宝 发表于 2010-5-15 14:48:14

批量修改Lua文件

制作MOD的过程中有时需要对大量的Lua文件作出改动,最原始的方法是解压缩出来后一个一个地解码,接着一个一个地修改,然后一个一个地放回去,最后再打包成Big文件。但是这样费时又费力,有没有简便一些的方法呢?运用批注处理的方法我发现解码、修改和覆盖这三个步骤可以简化处理。

首先准备好ModPackager、LuaDC和UltraEdit。然后编写三个bat文件:
a.bat:
@ECHO OFF
FOR %%C IN (*.lua *.wepn) DO luadc %%C

b.bat:
rename *.luadc *.

c.bat:
@echo off
FOR /f "delims="%%C IN ('dir /ad/b') DO (
copy %%C.wepn %%C /y
)
其中a,bat可以批量解压缩,b.bat可以批量改文件名,c.bat用来可以覆盖原文件。当然这是以修改武器文件为例,对于其他类型的lua文件只需将wepn改成相应的扩展名即可(例如船只是ship)

示例:添加一种新型装甲NewArmour,对所有武器的抗性均为50%。
除了需要修改familylist.lua文件以外还需要在每一个wepn文件内作修改。运用三个bat文件和UE的批量替换功能可以达到事半功倍的效果。

1.解压缩
用ModPackager将Homeworld2.big解压缩至C:\Data下。将a.bat和b.bat放到luaDC目录下,将c.bat放到weapon目录下。

2.批量解码
查找所有wepn文件以及familylist.lua,放到LuaDC目录下,运行a.bat,完成解码。删除所有wepn文件和familylist.lua,运行b.bat将.luadc后缀去掉。

3.批量修改
用UltraEdit打开所有解码后的wepn文件,替换“PlanetKillerArmour = 0, ”为“
       NewArmour = 0.5,
},
{
        PlanetKillerArmour = 0,
”,替换范围选“All Open Files”;然后对没有“PlanetKillerArmour = 0,”的wepn文件手动添加 “
{
NewArmour = 0.5,
},

打开familylist.lua,在armourFamily内添加“
{
      name = "NewArmour", },

修改完成。

4.批量覆盖
将修改完的familylist.lua放回Scripts中,覆盖原文件;wepn文件则放到weapon目录下,运行c.bat完成覆盖,之后删除weapon文件夹下所有文件(不包括子目录和里面的文件)。

5.重新压缩
用ModPackager将C:\Data压缩成Big包即可。


**** Hidden Message *****

先祖突击队 发表于 2010-5-15 16:59:28

很好!灰常好!看来有不少价值啊。

woyaori 发表于 2010-5-28 17:38:24

ls的试过了?好使的话就加精了

germanynacui 发表于 2010-8-12 16:50:34

嗯!省时省力

怜月枫 发表于 2010-8-13 02:13:08

话说。。
如果能对不同内容的文件进行同文字不同位置的进行修改的话。。
那么我马上弄一个。。毕竟汉化SW MOD太头痛了。。同样的东西。。
我要一个一个的翻译,而且还是同样的东西先、、、啊啊

先祖突击队 发表于 2010-8-16 11:50:17

说实话,没试过,但看通过BAT命令是可以实现的。

怜月枫 发表于 2010-8-16 12:02:54

话说这个批量更改也确实没什么用得上的地方。。

tu_dou@live.cn 发表于 2012-8-17 18:03:05

很好很好,收下了。

beyond2008 发表于 2012-8-18 12:14:46

这个能帮到我~~~

aquilaaaaa 发表于 2012-8-22 23:36:01

学习!正发愁怎么弄呢

before_2001 发表于 2012-12-7 11:05:10

学习一下看看

1519765275 发表于 2012-12-9 12:41:19

{:soso_e102:}

7708803344 发表于 2014-7-24 21:12:44

求指教

yhb5003 发表于 2014-8-4 10:04:41

批量修改Lua文件 › 参与/回复主题 .
页: [1]
查看完整版本: 批量修改Lua文件