最近花的时间其实挺多的,但是大部分花在了debug上面
比如上一楼刚强调备份的习惯很重要,结果我备份完之后就跑不出五国,而上一次备份还是添加几十条任务之前,舒展的眉头顿时紧皱起来
不过还好排查之后发现是最新添加的主线任务的问题。这里列两条我最近debug出来的问题:
1.任务里[monster reward item]必须是quest类型的材料,不能是普通掉落材料,否则加载服务端会报Loading quests fail错误;
2.任务[type]`[seeking]`后的[int data]要记得填数量,否则也会报同上条的错误。
这两个问题都不容易排查出来,引以为戒
好了,今天的主题是添加副本,因为最近度娘抽风了上传不了图片,所以我尽量用文字讲清楚。因为一些古早天空之城任务需要打空骨鱼、某水草之类的只在旧版地图出现的怪物,所以我决定还是把旧版天空之城副本加进来。以亚蒙下层为例,这个副本因为并未从pvf里删掉,只是取消了关联,所以加进来相对简单。另外龙鸣版本已经有现成的可以作为参照。
首先在dungeon(副本)/act2文件夹中找到亚蒙下层 amonlow.dgn,在dungeon.lst里将其关联上,我选择了18号编号。对amonlow.dgn代码进行一番研究并与龙人之塔比对,为其加上[background pos]->80,另外发现它有个条目是[worldmap info],而龙人之塔是[worldmap pattern info]。此条目应对应的是选图界面的贴图,1031里应该已经不存在旧版天空之城的贴图了,于是我前往龙鸣寻找贴图,没记错的话是在a1部分加载.NPK里而不是在sprite_worldmap_selectdungeonslot.NPK里。我把贴图提取出来,在1031的sprite_worldmap_selectdungeonslot.NPK新增一个oldskycastle.img,新增6条贴图并一一替换。如果是用NPK修改工具DNF Extractor的话记得调整两个选项,一个是32位贴图,另一个是坐标偏移。完事之后把amonlow.dgn中[worldmap info]项改为[worldmap pattern info]->2->1->`WolrdMap/SelectdungeonSlot/oldskycastle.img`->0。
接下来来看map(房间),可以看到.dgn的代码中[map specification]的房间标号(如1604,1623)对应的map.lst中的房间实际上是龙人之塔而不是亚蒙的,map/amon下也就是亚蒙的房间并没有在lst中关联上。可以通过考古韩服55级版本解包来修复,也可以直接参考龙鸣的做法。因为lst已经使用了1601-1620作为龙人之塔的房间,所以偏移20号从1621开始对应,比如韩服55版本map/amon/b1606.map编号1626,s1601.map编号1601,那么在1031中可以为map/amon/b1606.map编号1646,s1601.map编号1621,以此类推。
房间编号完成后检查房间代码,以map/amon/b1606.map为例,它对应的[dungeon]->11[/dungeon]编号是11龙人之塔,需要对它以及每个16xx.map把11修改为18(因为我给亚蒙下层的编号是18),否则客户端选图会因为没有对应的房间而点不进去,没反应。
然后就是在选择副本页面加上这个副本的位置,以及加上这个副本的接口了。首先在worldmap/ui/skycastle.ui中按顺序加上,也就是第八个副本为18亚蒙下层。220,430是它的坐标,是我参考其它副本的位置随便找的左下角空白。6是照龙鸣的,这个起泡形状我还没有研究,如果按龙人之塔的16应该也没什么问题
[ui controls]
`[balloon]`
`IDC_WORLDMAP_BUTTON8`2204301
`WorldMap/selectdungeon02.img`31618
[common action]
`Action/worldmap_balloon.act`
[/ui controls]
然后是添加接口,在worldmap/skycastle.wdm的[dungeon][/dungeon]条目中加上18 -1即可。
以上就是添加亚蒙下层副本的步骤。其中容易忽略的点就是.map文件中需要修改对应副本编号。经过调试我发现副本中地板贴图不对,而且boss有个技能会造成闪退。这个bug在从前的贴子出现过,应该不难修复。另外我准备把天空之城下方的入口改为旧天空之城,这样就有位置放6个副本了。