DNF阿拉德游戏论坛
标题: PVF修改工具:支持提取导入编辑pvf代码(附pvfUtility下载) [打印本页]
作者: dnf台服吧 时间: 2020-3-3 12:16
标题: PVF修改工具:支持提取导入编辑pvf代码(附pvfUtility下载)
工具作者:cloud1300(美国的华莱士)
推荐理由:
DNF台服单机研究必备的pvf修改器,自带注释与标签功能,支持提取副本地图、武器装备、技能、宠物、时装、光环等,同时还可以一键导入提取、备份的pvf相关内容,对于未知文件支持模糊匹配搜索以及批量替换操作,游戏中所涉及的大部分研究工作你都可以在这个工具上面完成。
pvfutility基本pvf文件知识
pvf封包以带目录的文件为单位组织的,故不存在空文件夹,封包内存在文本文件和脚本文件两种文件类型,脚本文件开头带有#PVF_File,没有这个标识的都是文本文件。
说明: .lst文件相当于一个列表,里面罗列了游戏要用到的东西,所以新增物品记得添加对应的列表。 .kor.str文件就是语言描述文件,所以对应的文字修改都在这个里面,改装备里面的没用,没有的也可以统一指向到这个里面,比如野猪套套装说明就是这么修复的。国服的pvf里面,对应的是.chn.str。 每个文件夹下基本都有一个.lst和.kor.str文件。 关于有哪些kor.str文件,可以看n_string.lst,这个里面全部列出来了。
脚本文件脚本文件是按一定格式编码的,在任何文件下你可以按Crtl+Shift+H进入二进制编辑模式。在二进制下,脚本文件拥有一个2字节的文件头0xB0D0,然后每5字节为一个项。在每个项中,第一个字节是类型,剩下4个字节是数据。为了便于编写,我们规定以下是脚本文件的通用文本格式。
Type(第一个字节) | 文本形式 | 注解 |
2 | 1 | 32位有符号整数(Int32)。 |
4 | 1.0 | 单精度浮点数(Float)。注意,必须添加小数点,否则会识别为整数。 |
5 | [label] | 即标签(Label)。 |
7 | `string` | 注意必须带`,即Tab上面的反引号。 |
6或8 | {6=`(UP)`} | 前面的数字是Type,后面的是内容。 |
9和10的集合 | <1::name_1`名称`> | 前面的数字是对应的str文件索引**(存在于n_string.lst)**,后面的是在str的名称,``是对应的文字。 |
脚本文件名称标签为[name]下的数据即脚本文件名称,支持识别<1::name_1`名称`>和`名称`两种写法。
文本文件文本文件有很多种,我们只介绍str文件。
str文件是给脚本文件中像<1::name1`名称`> 提供name1和`名称`的一类文件,可带有多种地区的后缀,如.kor.str等。
格式为:name1>名称,每一行一个项,注意不要产生重复的”name1“,“名称”可以。
n_string.lst控制对应的str文件索引和使用哪一个str文件。
stringtable.bin保存了脚本文件中6、7、8、10类型的数据,这些类型的数据在脚本文件中只是一个对stringtable.bin内数据的引用,所以损坏stringtable.bin会导致pvf内所有脚本文件损坏。
编码我们默认以Big5编码打开pvf文件并载入stringtable.bin,切换编码会重载stringtable.bin和所有str文件。
对于文本文件,你可以单独指定编码,并以该编码保存文件。
ANI文件ANI文件是一种特殊的脚本文件,以.ani为扩展名,在旧版下以特殊格式编码**(称之为70ANI)**,在新版下以普通脚本文件的格式编码。
目前台服使用的是70ANI文件。
此文档将介绍pvfUtility脚本功能所涉及到的接口方法。对应版本:3.0,新的版本可能会有变动。Output 类:此类提供输出功能,可以在输出窗口输出信息。在“脚本执行器“的最后一行输出文字。(无返回值)
PVF类:此类提供对当前打开的PVF文件操作的方法。- GetCurretFileList GetCurretFileList(string Path)
复制代码
获取当前PVF文件列表,path为指定目录。(返回List)
- Unzip(string Name) Delete(string Name)
复制代码
解压或删除某个PVF中的文件(无返回值)
File类:此类提供直接操作文件的方法。- GetBytes(string FileName)
复制代码
直接取得某个文件的Bytes(返回Byte[])
- GetText(string FileName,string Encodings)
复制代码
以指定的编码器取得某个文件的文本(返回string)
- GetDecryptionText(string FileName)
复制代码
取得某个脚本文件的解密文本(返回string)
- WriteBytes(string FileName, byte[] Bytes)
复制代码
直接将Bytes写入到某个文件里(返回bool)
ScriptFile类:此类提供对脚本文件的高级操作功能。取得某个脚本文件的名称,即标签[name]的数据。(返回string)
- GetLabelDataInt(string FileName, string LabelText) GetLabelDataStr(string FileName,string LabelText)
复制代码
取得某个脚本文件中某个标签的第一个数值。(返回int/string)
- SetLabelDataInt(string FileName, string LabelText,int Data) SetLabelDataStr(string FileName, string LabelText, string Data)
复制代码
修改某个脚本文件中某个标签的第一个数值。(返回bool)
- GetLabelData(string FileName, string LabelText)
复制代码
取得某个脚本文件中某个标签的数据,如果此标签存在特定的结尾(如[/label])那么将读取到[/label],否则读取到下一个标签。(返回string)
- SetLabelData(string fileName, string labelText, string text)
复制代码
修改某个脚本文件中某个标签的数据,如果此标签存在特定的结尾(如[/label])那么将覆盖到[/label],否则覆盖到下一个标签。(返回bool)
- DelLabel(string fileName, string labelText )
复制代码
删除某个脚本文件中某个标签的数据,如果此标签存在特定的结尾(如[/label])那么将删除到[/label],否则删除到下一个标签。(返回bool)
- NewScriptContent(string fileName, string text)
复制代码
向某个脚本文件中追加内容。(返回bool)
搜索功能pvf封包中文件非常多,因此搜索功能必不可少。pvfUtility提供了多结果集功能,方便进行复杂的搜索。
结果集默认的结果集是“未命名”,导入txt文件后会产生新的结果集。当然也可以手动新建一个。
各结果集是相互独立的,可以导出结果集到txt,也可以提取全部文件或提取到7z。
搜索pvfUtility提供多种搜索类型和搜索方式,可以指定目录搜索。
自动转换简体和繁体
使用“开头匹配”避免搜索"b"出现"ab"
搜索类型 | 注解 |
整数/浮点数[Type2/4] | 带有.则搜索的是浮点数。 |
中文/字符串/标签[Type10/Type7/Type5] | 标签一定要带[] |
名称(标签[name]下内容) | 支持<1::name_1`名称`>和`名称`两种写法 |
脚本文件内容 | 可以搜索任意脚本代码 |
文件名 | 不能包含目录名 |
搜索方式 |
在所有文件中搜索 |
从搜索结果中筛选符合项 |
从搜索结果中排除符合项 |
搜索结果显示在左侧有一个搜索结果的窗格,用于显示搜索结果,当搜索结果小于300时,显示为列表形式,否则为树形视图。
上方的选择框用于选择结果集。
按shift、Crtl可以多选,右键菜单支持移除、提取单个结果。
文件资源管理器右击文件列表中的项打开菜单,菜单中提供了对文件和文件夹的操作,按shift可以多选。 提取和导入功能与压缩包管理器相似,提取到提供了提取时的一些选项
注释注释存在于Comment.xml当中,显示为(注释),点击编辑注释即可进行修改,默认使用云端注释,优先使用本地注释。
名称显示方便快速找到文件,若感到卡顿请在设置中禁用。
提取可以以默认的设置快速提取到pvf所在文件夹下,也可以指定文件夹提取文件。 以指定文件夹提取时,可以设置
解密脚本文件 若不选择,则直接以二进制提取脚本文件。 解密70ani文件若不选择,则直接以二进制提取70ANI文件。
完成后打开目录打开提取的目录,快速提取时无效。
文件冲突操作覆盖、重命名、跳过
提取到7z将选择的项提取到一个7z压缩包内,默认以bzip2算法,快速压缩。
导入导入功能允许以指定的根目录导入到pvf中某一目录,并设置导入时的选项。 点击预览文件可以查看导入后预计的文件树。 生成lst代码表是为了快速加入lst文件中而准备的,输入起始代码即可。
剪切、复制、粘贴和重命名若当前文件夹存在同名文件时,自动加上(copy)。
可以点击项使其弹出文本框进行快速重命名。
编辑器编辑器提供了便捷修改脚本文件和文本文件的功能,使用基于Scintilla的Notepad++内核。
在封包-选项中,支持设置编辑器使用的字体和是否显示空白字符,启用DirectDraw可以提高清晰度,但是可能会闪屏(?)。
在保存旁边的下拉菜单提供了高级保存选项,只有文本文件才显示编码选项。
在路径框输入路径并按Enter可以快速跳转
快捷键Crtl+F | 打开查找(支持跨窗口) |
Crtl+G | 打开跳转 |
Crtl+H | 打开替换(支持跨窗口) |
右键菜单右键菜单支持保存当前文本到txt或是在资源管理器中显示文件。
关于标签格式化的说明pvfUtility是支持标签格式化的,默认配置了商城文件。 如果编辑LabelFormat.xml就可以让他格式化为便于修改的格式.
对于一些一定格式的标签,我们可以编写:
- <Label Name="[ability category]" GroupItem= "3"/>
复制代码
标签格式化默认会使用云端的数据,如果有志愿者提交数据将会使大家受益。
联系作者:1300271842
引用的第三方控件:
MIT License:
ScintillaNET 3.6.3 by Jacob Slusser
DockPanelSuite 3.0.4 by Weifen Luo
ScintillaNET FindReplaceDialog by Steve Towner
Be.HexEditor by Bernhard Elbl
BSD 2-clause "Simplified" License:
TreeViewAdv 1.7.6.0 by AdamsLair
LGPL:
SevenZipSharp modified by StevenBonePgh
https://github.com/StevenBonePgh/SevenZipSharp
Other:
Windows® API Code Pack for Microsoft® .NET Framework
百度网盘下载:https://pan.baidu.com/s/1rAgCQ6SFR99BkJEvmCHBNg (版本号:pvfUtility 2020.2.2)提取码:
作者: daiit 时间: 2020-3-3 23:52
如果你是最棒的,我能說什麼呢》
作者: ChaosWong 时间: 2020-3-5 17:05
找一下pvf的道具地址x
作者: 862283722 时间: 2020-3-5 17:55
空间急急急急急急
作者: hkh330424 时间: 2020-3-7 01:32
zhichi yixia
作者: 祖安舞台 时间: 2020-3-9 09:20
支持楼主
作者: q89741363 时间: 2020-3-11 18:58
抢个沙发吧,顺便混点怒气这样子
作者: 18920707072 时间: 2020-3-12 17:23
谢谢大神 感觉很厉害
作者: zzy128 时间: 2020-3-14 12:34
支持楼主
作者: tangpc 时间: 2020-3-15 00:06
1111111111111
作者: 863004134 时间: 2020-3-16 10:59
先插个眼
作者: lh07360736 时间: 2020-3-17 10:17
好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西
作者: a1021237303 时间: 2020-3-19 12:25
顶顶顶顶顶
作者: xinpeiyi 时间: 2020-3-19 23:46
学习学习
作者: tianyu1201 时间: 2020-3-20 11:17
11111111111111111111111111
作者: a861206 时间: 2020-3-26 01:57
666666666666666666666
作者: suertian 时间: 2020-3-28 00:12
看看,施蒂利克返回搜狐佛
作者: winter 时间: 2020-3-31 11:41
这个修改器是最新版本吗
作者: 奥拉迪 时间: 2020-4-5 11:28
查看下,,,,
作者: chenjian 时间: 2020-4-7 17:41
54545454545454545454545454dsadasdad
作者: a1986169881 时间: 2020-4-8 00:07
6666666666666666666666666666666666666
作者: ly990927 时间: 2020-4-8 01:35
支持支持 全力支持
作者: wklemonly 时间: 2020-4-18 07:36
好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西
作者: mnwrnysys 时间: 2020-5-2 00:20
看看啊啊啊啊啊啊啊啊啊啊啊
欢迎光临 DNF阿拉德游戏论坛 (https://oldbbs.arad.ink/) |
Powered by Discuz! X3.3 |