DNF阿拉德游戏论坛

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

[PVF] DNF城镇地图修改思路[了解一下]

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

    [LV.8]以坛为家I

    1136

    主题

    1378

    帖子

    55万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

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

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

    跳转到指定楼层
    楼主
    发表于 2018-11-30 15:11:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    内容包含:
    0 - 地图的相关文件夹说明
    1 - 开启城镇所需要的几个步骤
    2 - *.lst文件
    3 - region文件夹
    4 - town文件夹
    5 - worldmap文件夹,以及UI文件夹
    6 - dungeon文件夹
    7 - map文件夹
    8 - npc文件夹


    0)地图的相关文件夹说明
    region
    【大区】
    town
    大区下的城镇,简称【城镇】
    worldmap
    副本入口选图界面,简称【选图界面】
    dungeon
    副本,完整意思应该是副本接口,后面称【副本接口】
    map
    副本的每个小房间,简称【副本房间】,同时也包含了城镇的各个地图,简称【城镇地图】
    npc
    众所周知,最出名的就是凯利
    n_quest
    任务系统,不是本帖重点,只会稍微提及


    1)开启城镇所需要的几个步骤
    最重要的东西,就放在第一个吧
    开启城镇和地图,可以这样逆向思考,跟着我的思路来:

    A,dungeon副本接口的最低等级要求,是否已经超过70级?
    【修改dungeon副本接口文件的等级要求】

    B,dungeon副本接口,所需要调用的map副本房间ID,是否存在?
    【往map/map.lst添加各个map副本房间的ID和路径】

    C,worldmap选图界面文件,是否包含了所要的dungeon副本接口ID?副本接口,是否有前置任务要求?
    【修改worldmap选图界面文件的dungeon副本接口ID和前置任务要求】

    D, worldmap选图界面文件,所调用的dungeon副本接口ID,是否存在?
    【往dungeon/dungeon.lst添加各个dungeon副本接口的ID和路径】

    E,worldmap选图界面的UI文件,是否添加了dungeon副本接口ID的控件内容?
    【确认worldmap/UI的ui文件是否正确】

    F,town城镇的最低等级要求,是否超过了70级?
    【修改town城镇文件的等级要求】

    G,town城镇文件,所需要调用的map城镇地图ID,是否存在?
    【往map/map.lst添加各个map城镇地图的ID和路径】

    H,town城镇文件,所需要调用的worldmap选图界面ID,是否存在?
    【确认worldmap/worldmap.lst的ID是否齐全】

    I,region大区文件,是否包含了所要的town城镇ID?
    【修改region大区文件的town城镇ID】

    J,region大区文件,所需要调用的town城镇ID,是否存在?
    【往town/town.lst添加各个town城镇地图的ID和路径】

    K,如何到达新开的城镇?
    【确认传送方式,NPC传送或者光圈传送,等级需求,任务需求】

    L,深渊如何开启?
    【修改worldmap选图界面文件的深渊的前置任务要求】

    L,深渊的boss副本房间ID,是否存在
    【往map/map.lst添加各个深渊boss副本房间的ID和路径】

    2,*.lst文件

    整个pvf,每个文件夹底下,都有个*.lst文件。
    *.lst文件,是pvf,甚至整个游戏的核心和灵魂躯干。
    游戏的相互调用,如调用某个地图,调用某个装备,调用某个技能,都是通过对应的ID来实现。而ID的设置,就是在*.lst文件里。

    *.lst文件的内容很浅显易懂,每一行的格式是
    ID(空格)路径(空格)
    A,路径要用两个单引号’xxxxxx’包住
    B,ID数字的先后顺序不重要,同类型的ID数字不能重复
    C,路径不能是错误路径
    D,行末记得要空格

    额外说明一点,不同分类之间的ID,可以是相同的。
    例如,NPC的ID可以有1,而副本接口的ID也可以有1,因为它们是属于不同类,不会相互混淆。

    3,region文件夹

    主要文件都是以rgn作为后缀,也就是region的缩写

    以天界的heaven.rgn文件为例
    [towns
    6 9 14 (town城镇的ID)
    [/towns

    [name]
    Type:9 Str:19 'name_0020>天界' (中文名字是啥不重要)
    [english name]
    Type:9 Str:19 'name_0021>the Heavens' (英文名字是啥不重要)
    [minimap]
    'MiniMap/heaven.mm'(小地图)

    第二行就是town城镇ID,因此要确保
    A,ID是正确的。
    B,ID在town/town.lst是存在的。

    另外还有就是minimap文件夹,里面包含了各大区的小地图(游戏内右上角)。但本人还不确认如何修改!

    4,town文件夹

    文件都是以twn作为后缀,也就是town的缩写
    以史拉乌工业区的slough.twn文件为例
    [entering title]
    'Title/Slough.ani'
    [cutscene image]
    'Map/CutScene/Slough.img' 0
    [dungeon what must be cleared]
    -1 (前置副本要求,-1为无要求)

    [area]
    0 'Slough/Slough_down_street.map' '[normal]' (城镇地图之一)
    [/area]

    [area]
    1 'Slough/Slough_up_street.map' '[normal]' (城镇地图之一)
    [/area]

    [area]
    2 'Slough/Slough_powerstation.map' '[dungeon gate]' 19 (城镇地图之一,[dungeon gate]表示连接到worldmap选图界面的ID19)
    [/area]

    [area]
    3 'Slough/Gate_Slough.map' '[gate]' 474 234 (城镇地图之一)
    [/area]

    [name]
    Type:9 Str:14 'name_18210>史拉烏工業區' (中文名字是啥不重要)
    [limit level]
    78(城镇等级要求)

    需要做的就是:
    A,改等级要求。
    B,确认worldmap选图界面的ID是否存在及正确。

    5,worldmap文件夹,以及UI文件夹

    该文件夹略复杂点

    首先是常规的*.wdm文件,wdm是worldmap的缩写
    以powerstation.wdm为例
    [map image]
    'WorldMap/Lorien.img' 0 (是选图界面的背景图吗?考虑改掉Lorien吧,数字0的意义不明)
    [ui path]
    'WorldMap/UI/PowerStation.ui' (选图界面的控件,重要)
    [dungeon]
    (dungeon副本接口的ID和前置任务要求,原文件的此处为空)
    [/dungeon]

    [name]
    Type:9 Str:15 Type:10 Str:366664 (不管是中文名字还是英文名字都不重要了)
    [hell dungeon]
    1 (深渊副本,1是啥意思呢?)
    [hell quest]
    4539 (深渊的前置任务要求)
    [/hell quest]

    [hell freepass item]
    8272 1 8376 1 8247 1 (免费深渊的物品ID和数量)
    [/hell freepass item]

    [item condition]
    3330 (深渊门票的ID)
    [/item condition]

    需要做的就是:

    A,添加副本接口的ID,如
    [dungeon]
    101 -1 102 -1 103 -1 104 -1(101~104就是四大发电厂的dungeon副本接口ID,-1表示无前置任务要求,行末记得空格)
    [/dungeon]

    B,确认所添加的dungeon副本接口ID,在dungeon/dungeon.lst是存在的

    C,修改深渊前置任务要求,如
    [hell quest]
    101 (此处的任务ID改成了101,也就是出生后的第一个任务)
    [/hell quest]

    也可以把深渊门票改成其他物品的ID,如无色

    UI文件夹

    再来就是UI文件夹里面的*.ui文件
    还是以powerstation.ui为例
    [ui controls]
    ...
    [/ui controls]
    (以上部分的意义可以不用深究)

    [ui controls]
    '[balloon]' 'IDC_WORLDMAP_BUTTON1' 430 61 1'WorldMap/selectdungeon02.img' 3 1 0 101
    [common action]
    'Action/worldmap_balloon.act'
    [/ui controls]
    (看最后一个数字101,是不是很熟悉)

    [ui controls]
    '[balloon]' 'IDC_WORLDMAP_BUTTON2' 608 240 1'WorldMap/selectdungeon02.img' 3 1 13 102
    [common action]
    'Action/worldmap_balloon.act'
    [/ui controls]
    (看最后一个数字102,是不是很熟悉)

    [ui controls]
    '[balloon]' 'IDC_WORLDMAP_BUTTON3' 630 364 1'WorldMap/selectdungeon02.img' 3 1 6 103
    [common action]
    'Action/worldmap_balloon.act'
    [/ui controls]
    (看最后一个数字103,是不是很熟悉)

    [ui controls]
    '[balloon]' 'IDC_WORLDMAP_BUTTON4' 440 400 1'WorldMap/selectdungeon02.img' 3 1 7 104
    [common action]
    'Action/worldmap_balloon.act'
    [/ui controls]
    (看最后一个数字104,是不是很熟悉)

    [ui controls]
    '[balloon]' 'IDC_WORLDMAP_BUTTON5' 330 364 1'WorldMap/selectdungeon02.img' 3 1 6 522
    [common action]
    'Action/worldmap_balloon.act'
    [/ui controls]
    (看最后一个数字522,虾米鬼?回去找dungeon/gungeon.lst,没找到。但是有印象的朋友可能会记得,发电站其实还有个隐藏小地图:能量隔离室。不感兴趣的朋友,这部分可以删了)

    [ui controls]
    '[switchbox]' 'IDC_WORLDMAP_SWITCHBOX' 400 100 1'WorldMap/selectdungeon02.img' 16 1 2 91 24 3 4 5 6 7 8 9 10 96 97 98 99
    [/ui controls]

    再来讲解下部分结构
    [ui controls]
    '[balloon]' 'IDC_WORLDMAP_BUTTON1' 430 61 1'WorldMap/selectdungeon02.img' 3 1 0 101
    [common action]
    'Action/worldmap_balloon.act'
    [/ui controls]

    430 61 是副本接口图标的坐标
    101就是dungeon副本接口的ID。

    如果出现选图界面游戏崩溃的,不妨来这找找原因。

    6,dungeon文件夹

    分为多个文件夹,每个文件夹又包含多个*.dgn文件,dgn是dungeon的缩写

    以kohlepowerstation.dgn为例(摘选部分内容)
    [minimum required level]
    70 (等级要求,这边已经是改过的)

    [size]

    5 3 (副本房间的格局,横5竖3,注意排序是从0开始

    [greed]
    'IIJJFFNNEE
    LLOOAALLMM
    CCDDFFHHGG'
    (副本房间的连接顺序,请参考http://tieba.baidu.com/p/4069218170

    [map specification]
    1 0 18001 (横1竖0,副本房间的ID是18001)

    [boss map specification]
    4 1 18008(boss的副本房间为横4竖1,副本房间的ID是18008)

    [start map]
    0 0 0 1 0 2(起始点的副本房间坐标,表明可能是0 0或者0 1或者0 2)

    [hell dungeon]
    1
    [seal door map index]
    60067
    [seal door pos]
    4 0
    (深渊boss的副本房间ID 60067和坐标4 0)


    请确保各个副本房间ID在map/map.lst是存在的。

    7,map文件夹结构

    也是包含多个文件夹,每个文件夹又包含多个*.map文件

    但是请注意,map文件,分为2大类
    A,城镇地图,比如slough/ slough_down_street.map
    B,副本房间,比如kohlepowerstation/ 18001(1,0)n.map

    对于后者,我不打算多说。一是了解不多,二是很复杂,三是基本上不用改动。

    对于前者,先以slough_down_street.map为例(摘选部分内容)
    [town movable area]
    777 132 107 31 14 1 361 142 97 21 14 3 (实可步行区域)
    [/town movable area]
    每6个数字为1组,第一、二个数字如777 132为坐标

    [virtual movable area]
    38 212 1480 130 377 155 81 69 427 173 58 65 774 140 112 82881 161 81 61 (虚可步行区域)
    [/virtual movable area]
    每4个数字为1组,第一、二个数字如38 212为坐标

    [NPC]
    79 '[right]' 1185 155 0 136 '[right]' 90 196 0 (NPC的ID和坐标)
    [/NPC]

    我们再来看shonan/shonan_gymnasium.map(传送时间门和镇魂曲的关键文件)
    [town movable area]
    1257 119 222 31 11 2 767 348 96 23 11 1 2016 142 97 21 11 349 186 96 23 12 0
    [quest condition]
    4117 (49 186 96 23 12 0这组,有前置任务要求,任务ID是4117)
    [/quest condition]
    2450 186 116 23 13 0
    [quest condition]
    4540 (2450 186 116 23 13 0 这组,也有前置任务要求,任务ID是4540)
    [/quest condition]
    [/town movable area]

    [virtual movable area]
    34 219 2586 115 767 326 95 30 2015 158 99 64 1440 153 71 701267 137 214 90 1508 175 43 47 53 197 94 27
    [quest condition]
    4117 (53 197 94 27这组,有前置任务要求,任务ID也是4117)
    [/quest condition]
    2460 197 94 27
    [quest condition]
    4540 (2460 197 94 27 这组,也有前置任务要求,任务ID也是4540)
    [/quest condition]

    整理一下,我们发现:
    任务4117可以开通坐标49 186(实)和53197(虚)
    任务4540可以开通坐标2450 186(实)和2460197(虚)

    聪明的朋友看出来了吧:
    任务4117开通了左边到时间门的传送
    任务4540开通了右边到雷奎安(镇魂曲)的传送

    把4117和45440改成其他任务ID吧,比如我最爱的101。
    当然,也可以删掉任务要求。
    这样子,从修南到时间门和镇魂曲的传送就开通了。

    但是,请注意,这边只是开通了传送。
    而实际上,我们还需要个图标,也就是光圈,来指示传送的地点。[animation]部分,我们加上
    'Animation/timegate.ani' '[normal]' 91 186 0'Animation/timegate.ani' '[normal]' 2500 186 0
    其作用就是在91 186和2500 186这两个坐标的地方,加上光圈图标。

    8,npc文件夹

    npc其实不是本修改的重点,但是我们这边要修改某个NPC。

    看了上面的内容,有朋友其实已经想到一个问题:如何从悬空海港到工业区。
    因此,我们需要给悬空海港的贝伦,增加一个地区传送功能,用以传送到工业区。

    悬空海港的贝伦,npc/wernvonnegut.npc的文件里面
    [role]
    '[item shop]' 43
    [/role]

    而工业区的贝伦,npc/wernvonnegut_slough.npc的文件里面
    [role]
    '[item shop]' 43 '[move town]' 65
    [/role]

    ‘[move town]’就是传送功能,65是NPC的ID。
    记住了,NPC的传送,是从某个NPC传送到另外一个NPC,以NPC的ID【的原始位置】为目标,而不是城镇ID为目标。

    显然原始文件里,悬空海港的贝伦的传送功能被干掉了。

    那么,我们就改下npc/wernvonnegut.npc
    [role]
    '[item shop]' 43 '[move town]' 136 (136就是工业区贝伦的ID)
    [/role]
    (转于老牛社区)
    勇士!今天也是充满希望的一天哦~!
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
  • TA的每日心情
    郁闷
    2019-9-12 10:37
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    0

    主题

    36

    帖子

    140

    积分

    阿拉德菜鸟

    Rank: 2

    积分
    140
    怒气
    26
    声望
    10
    战力
    58
    沙发
    发表于 2019-8-18 00:09:30 | 只看该作者
    作者能出个视频就好了
    路过的小伙儿,挺帅嘛...
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2025-4-28 07:42 , Processed in 0.112039 second(s), 16 queries , File On.

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

    © 2001-2013 Comsenz Inc.

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