DNF阿拉德游戏论坛

 找回密码
 立即注册
搜索
查看: 1549|回复: 23
打印 上一主题 下一主题

[工具] PVF修改工具:支持提取导入编辑pvf代码(附pvfUtility下载)

  [复制链接]
  • TA的每日心情
    无聊
    2020-5-4 11:23
  • 签到天数: 276 天

    [LV.8]以坛为家I

    1136

    主题

    1378

    帖子

    55万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    559843
    怒气
    556686
    声望
    228
    战力
    1138

    活跃会员灌水之王游戏爱好者阿拉德最佳作者阿拉德勇士战斗法师DOF玩家佛系DNF玩家

    跳转到指定楼层
    楼主
    发表于 2020-3-3 12:16:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    工具作者: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
    132位有符号整数(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 类:此类提供输出功能,可以在输出窗口输出信息。
    1. AppendText(string Text)
    复制代码

    在“脚本执行器“的最后一行输出文字。(无返回值)
    PVF类:此类提供对当前打开的PVF文件操作的方法。
    1. GetCurretFileList GetCurretFileList(string Path)
    复制代码

    获取当前PVF文件列表,path为指定目录。(返回List)
    1. Unzip(string Name) Delete(string Name)
    复制代码

    解压或删除某个PVF中的文件(无返回值)
    File类:此类提供直接操作文件的方法。
    1. GetBytes(string FileName)
    复制代码

    直接取得某个文件的Bytes(返回Byte[])
    1. GetText(string FileName,string Encodings)
    复制代码

    以指定的编码器取得某个文件的文本(返回string)
    1. GetDecryptionText(string FileName)
    复制代码

    取得某个脚本文件的解密文本(返回string)
    1. WriteBytes(string FileName, byte[] Bytes)
    复制代码

    直接将Bytes写入到某个文件里(返回bool)
    ScriptFile类:此类提供对脚本文件的高级操作功能。
    1. GetName(string FileName)
    复制代码

    取得某个脚本文件的名称,即标签[name]的数据。(返回string)
    1. GetLabelDataInt(string FileName, string LabelText) GetLabelDataStr(string FileName,string LabelText)
    复制代码

    取得某个脚本文件中某个标签的第一个数值。(返回int/string)
    1. SetLabelDataInt(string FileName, string LabelText,int Data) SetLabelDataStr(string FileName, string LabelText, string Data)
    复制代码

    修改某个脚本文件中某个标签的第一个数值。(返回bool)
    1. GetLabelData(string FileName, string LabelText)
    复制代码

    取得某个脚本文件中某个标签的数据,如果此标签存在特定的结尾(如[/label])那么将读取到[/label],否则读取到下一个标签。(返回string)
    1. SetLabelData(string fileName, string labelText, string text)
    复制代码

    修改某个脚本文件中某个标签的数据,如果此标签存在特定的结尾(如[/label])那么将覆盖到[/label],否则覆盖到下一个标签。(返回bool)
    1. DelLabel(string fileName, string labelText )
    复制代码

    删除某个脚本文件中某个标签的数据,如果此标签存在特定的结尾(如[/label])那么将删除到[/label],否则删除到下一个标签。(返回bool)
    1. 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就可以让他格式化为便于修改的格式.
    对于一些一定格式的标签,我们可以编写:
    1. <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)提取码:
    游客,如果您要查看本帖隐藏内容请回复



    勇士!今天也是充满希望的一天哦~!
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
  • TA的每日心情
    无聊
    2020-3-26 19:35
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    2

    主题

    41

    帖子

    141

    积分

    阿拉德菜鸟

    Rank: 2

    积分
    141
    怒气
    63
    声望
    17
    战力
    3
    沙发
    发表于 2020-3-3 23:52:14 | 只看该作者
    如果你是最棒的,我能說什麼呢》
    路过的小伙儿,挺帅嘛...
  • TA的每日心情
    奋斗
    2020-4-8 20:25
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    0

    主题

    14

    帖子

    68

    积分

    阿拉德菜鸟

    Rank: 2

    积分
    68
    怒气
    40
    声望
    7
    战力
    0
    板凳
    发表于 2020-3-5 17:05:02 | 只看该作者
    找一下pvf的道具地址x
    来来,以钱赚钱啦!...
  • TA的每日心情
    郁闷
    2020-3-31 00:04
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    1

    主题

    17

    帖子

    145

    积分

    阿拉德菜鸟

    Rank: 2

    积分
    145
    怒气
    50
    声望
    39
    战力
    0
    地板
    发表于 2020-3-5 17:55:04 | 只看该作者
    空间急急急急急急
    来来,以钱赚钱啦!...
  • TA的每日心情
    开心
    2020-3-11 03:46
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    0

    主题

    19

    帖子

    42

    积分

    初入阿拉德

    Rank: 1

    积分
    42
    怒气
    9
    声望
    7
    战力
    0
    5#
    发表于 2020-3-7 01:32:50 | 只看该作者
    zhichi yixia
    我的尼尔巴斯哥哥,你在哪?...
  • TA的每日心情
    开心
    2020-3-12 09:23
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    0

    主题

    8

    帖子

    55

    积分

    阿拉德菜鸟

    Rank: 2

    积分
    55
    怒气
    17
    声望
    15
    战力
    0
    6#
    发表于 2020-3-9 09:20:19 | 只看该作者
    支持楼主
    我是一位来自阿拉德大陆的勇士,嗯就这样...
  • TA的每日心情
    奋斗
    2020-3-16 01:41
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    0

    主题

    8

    帖子

    76

    积分

    阿拉德菜鸟

    Rank: 2

    积分
    76
    怒气
    29
    声望
    18
    战力
    3
    7#
    发表于 2020-3-11 18:58:56 | 只看该作者
    抢个沙发吧,顺便混点怒气这样子
  • TA的每日心情
    郁闷
    2020-4-6 20:49
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    6

    主题

    36

    帖子

    155

    积分

    阿拉德菜鸟

    Rank: 2

    积分
    155
    怒气
    57
    声望
    31
    战力
    0
    8#
    发表于 2020-3-12 17:23:09 | 只看该作者
    谢谢大神 感觉很厉害
    我的尼尔巴斯哥哥,你在哪?...
  • TA的每日心情
    奋斗
    2020-3-14 11:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    6

    帖子

    28

    积分

    初入阿拉德

    Rank: 1

    积分
    28
    怒气
    5
    声望
    8
    战力
    1
    9#
    发表于 2020-3-14 12:34:26 | 只看该作者
    支持楼主
    我是一位来自阿拉德大陆的勇士,嗯就这样...
  • TA的每日心情
    难过
    2020-4-11 15:38
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    1

    主题

    20

    帖子

    333

    积分

    阿拉德玩家

    Rank: 3Rank: 3

    积分
    333
    怒气
    133
    声望
    90
    战力
    0
    10#
    发表于 2020-3-15 00:06:00 | 只看该作者
    1111111111111
    路过的小伙儿,挺帅嘛...
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|DNF阿拉德游戏论坛 ( 蜀ICP备2024115554号

    GMT+8, 2025-4-27 19:54 , Processed in 0.220019 second(s), 13 queries , File On.

    Powered by Discuz! X3.3 网站地图 Auther by PAnoEAde & 地下城与勇士论坛

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表