dnf台服吧 发表于 2020-3-3 12:16:04

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(第一个字节)文本形式注解
2132位有符号整数(Int32)。
41.0单精度浮点数(Float)。注意,必须添加小数点,否则会识别为整数。
5即标签(Label)。
7`string`注意必须带`,即Tab上面的反引号。
6或8{6=`(UP)`}前面的数字是Type,后面的是内容。
9和10的集合<1::name_1`名称`>前面的数字是对应的str文件索引**(存在于n_string.lst)**,后面的是在str的名称,``是对应的文字。
脚本文件名称标签为下的数据即脚本文件名称,支持识别<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 类:此类提供输出功能,可以在输出窗口输出信息。AppendText(string Text)
在“脚本执行器“的最后一行输出文字。(无返回值)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类:此类提供对脚本文件的高级操作功能。GetName(string FileName)
取得某个脚本文件的名称,即标签的数据。(返回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)
取得某个脚本文件中某个标签的数据,如果此标签存在特定的结尾(如)那么将读取到,否则读取到下一个标签。(返回string)SetLabelData(string fileName, string labelText, string text)
修改某个脚本文件中某个标签的数据,如果此标签存在特定的结尾(如)那么将覆盖到,否则覆盖到下一个标签。(返回bool)DelLabel(string fileName, string labelText )
删除某个脚本文件中某个标签的数据,如果此标签存在特定的结尾(如)那么将删除到,否则删除到下一个标签。(返回bool)NewScriptContent(string fileName, string text)
向某个脚本文件中追加内容。(返回bool)
搜索功能pvf封包中文件非常多,因此搜索功能必不可少。pvfUtility提供了多结果集功能,方便进行复杂的搜索。结果集默认的结果集是“未命名”,导入txt文件后会产生新的结果集。当然也可以手动新建一个。各结果集是相互独立的,可以导出结果集到txt,也可以提取全部文件或提取到7z。搜索pvfUtility提供多种搜索类型和搜索方式,可以指定目录搜索。自动转换简体和繁体使用“开头匹配”避免搜索"b"出现"ab"
搜索类型注解
整数/浮点数带有.则搜索的是浮点数。
中文/字符串/标签标签一定要带[]
名称(标签下内容)支持<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="" GroupItem= "3"/>
前: 后: 标签格式化默认会使用云端的数据,如果有志愿者提交数据将会使大家受益。联系作者:1300271842
引用的第三方控件:
MIT License:
ScintillaNET 3.6.3 by Jacob Slusser
DockPanelSuite3.0.4 by Weifen Luo
ScintillaNET FindReplaceDialog by Steve Towner
Be.HexEditor by Bernhard Elbl

BSD 2-clause "Simplified" License:
TreeViewAdv 1.7.6.0by 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]


daiit 发表于 2020-3-3 23:52:14

如果你是最棒的,我能說什麼呢》

ChaosWong 发表于 2020-3-5 17:05:02

找一下pvf的道具地址x

862283722 发表于 2020-3-5 17:55:04

空间急急急急急急

hkh330424 发表于 2020-3-7 01:32:50

zhichi yixia

祖安舞台 发表于 2020-3-9 09:20:19

支持楼主

q89741363 发表于 2020-3-11 18:58:56

抢个沙发吧,顺便混点怒气这样子

18920707072 发表于 2020-3-12 17:23:09

谢谢大神 感觉很厉害

zzy128 发表于 2020-3-14 12:34:26

支持楼主

tangpc 发表于 2020-3-15 00:06:00

1111111111111
页: [1] 2 3 4 5 6
查看完整版本: PVF修改工具:支持提取导入编辑pvf代码(附pvfUtility下载)