工具作者: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)提取码:6ekk]
|