close
0.發此貼的目的是給開始嘗試修改地圖的人一些幫助,讓我能玩到更多有特色的遊戲地圖.本人才疏學淺,文中難免有錯漏,輕拍...
1.解包等步驟就不多說了,文件轉換請使用較新版本,省去修改ids文件(其實我也不會...).
地圖文件位置: \MEDIA\DUNGEONS\      具體什麼文件對應什麼地圖,可以根據文件名和轉成txt文件後<TRANSLATE>DISPLAYNAME行查看.
其中以MAP_開頭的是MAPWORK的地圖,就以其中的Map_Estherian_B.DAT為例,逐行分析.
先說一下文件結構吧,以[]框起來的部分是用來說明文件結構的.比如[DUNGEON]和[/DUNGEON]之間的內容為定義這個地圖.內部還嵌套有很多這種結構,從名字上就可以大概知道其中定義的是什麼.
[DUNGEON]  :開始定義地圖
<STRING>NAME:Map_Estherian_B  :地圖名,其它文件中要使用到這個地圖,是需要通過這個名字來做到的.
<BOOL>VOLATILE:false  :字面意思是不穩定的,不過我沒見過true的地圖,所以不知道遊戲內的效果.
<BOOL>BOTTOMLESS:false   :字面意思是無限的,同樣沒見過,應該是可以做成無限地城.
<BOOL>MAP:true  :應該表明這是通過地圖進入的.
<BOOL>REPLAYSCALED:false  :不知道什麼意思.
<INTEGER> PLAYER_LVL_MATCH_MIN:48
<INTEGER> PLAYER_LVL_MATCH_MAX:55  :建議等級,會直接影響內部怪物等級
<STRING> PARENT_DUNGEON:MAPWORKS
<STRING> PARENT_TOWN:MAPWORKS  :表明你出地城和使用回城後到的地方
<TRANSLATE>DISPLAYNAME:Ruined Shrine  :地圖名字,因為這個基本肯定會被漢化,所以只要文件有這一項,就應該會被漢化效果覆蓋,自行解決吧.
<FLOAT>MONSTER_LVL_MULT:1.000000  :沒試過效果,字面看來應該是提高內部怪物等級用的.
<STRING>TYPE: DUNGEON  :地圖類型.
<INTEGER>MINRANDOMAFFIXES:0
<INTEGER>MAXRANDOMAFFIXES:4  :地圖詞綴,也就是MAPWORK地圖附帶的效果
<FLOAT>ENCHANTEDLEVELCHANCE:100.000000  :沒試過,應該和附魔有關
[STRATA0]  :定義第一塊地圖
<STRING>RULESET  :media/layouts/esthshrine/maproom_floor1_a_rules.template :定義這一塊的規則,包括地圖樣式,大小,風景,寶箱等.
<TRANSLATE>NAME_OVERRIDE:Ruined Shrine  :進入地圖後,右上角顯示名字
<INTEGER>FLOORS:1  :這一塊地圖的層數
<STRING>MONSTERSPAWNCLASS:RANDOMMAP_DRAGONTOWER1_SET  :普通怪物組,比如你想讓普通怪物用精英怪替代,只要把冒號後的內容替換成精英怪相應的組別就可以了.這些組別都在\MEDIA \ SPAWNCLASSES內定義.此外這些組的定義都不是必須有的語句,沒有會被默認為NONE.
<FLOAT>MONSTERS_PER_METER_MIN:0.007000
<FLOAT>MONSTERS_PER_METER_MAX:0.007000  :每米怪物組數,決定怪物密度
<STRING>CHAMPIONSPAWNCLASS:ACT3_DRAGONTOWER_1_CHAMPIONS  :精英怪物組
<FLOAT>CHAMPIONS_MIN:2.000000
<FLOAT>CHAMPIONS_MAX:2.000000  :每層精英怪數量範圍
<STRING> PROPSPAWNCLASS:NONE  :沒試過效果
<STRING>NPCSPAWNCLASS:NPCS_DUNGEON_ENCHANTERS_AND_MIMICS  :NPC組,所以理論上其實你可以讓任何NPC出現在地圖裡,初始地圖都是附魔NPC.
<FLOAT>NPCS_MIN:0.000000
<FLOAT>NPCS_MAX:1.000000  :NPC數目範圍
<STRING>CREEPSPAWNCLASS:MINECREEPS  :某種類型的怪物組合...
<FLOAT>CREEPS_PER_METER_MIN:0.001500
<FLOAT>CREEPS_PER_METER_MAX:0.001500  :這種怪物的密度
[/STRATA0]  :第一塊定義完畢
[STRATA1]
...
[/STRATA1]  :第二塊的定義,與第一塊完全相同,有些地圖第一塊有2層,所以沒有這一塊地圖.
[STRATA2]  :此處為BOSS地圖塊
<STRING>RULESET:media/layouts/esthshrine/maproom_bossroom_a_rules.template  :BOSS地圖的規則,貌似會直接決定這裡刷出什麼樣的BOSS
<INTEGER>FLOORS:1
<STRING>MONSTERSPAWNCLASS:NONE
<FLOAT>MONSTERS_PER_METER_MIN:0.000000
<FLOAT>MONSTERS_PER_METER_MAX:0.000000
<STRING> PROPSPAWNCLASS:NONE
<FLOAT>NPCS_MIN:0.000000
<FLOAT>NPCS_MAX:0.000000
<STRING>CREEPSPAWNCLASS:MINECREEPS
<FLOAT>CREEPS_PER_METER_MIN:0.001500
<FLOAT>CREEPS_PER_METER_MAX:0.001500  :與之前一致
<INTEGER>MONSTER_LVL_MIN:52  :貌似在這沒什麼用,可能只是規定BOSS等級至少為52級,也就是只對最低等級的MAPWORK地圖有效.可以嘗試更改這個數值,使其對某塊地圖所有怪物生效,不過我沒試過,歡迎嘗試.
<BOOL>ALLOW_PORTALS:false  :無法使用傳送門
[/STRATA2]  :BOSS地圖塊定義結束
[RANDOMPLAYERAFFIXES]  :開始定義玩家相關隨機詞綴列表
<STRING>AFFIX:MAP_BURNING
<STRING>AFFIX:MAP_PLAYER_EXP_BONUS_5
<STRING>AFFIX:MAP_PLAYER_GOLD_BONUS
<STRING>AFFIX:MAP_PLAYER_HEALTH_REGEN
<STRING>AFFIX:MAP_PLAYER_MF_BONUS_15
<STRING>AFFIX:MAP_PLAYER_REDUCE_MANA_COST
<STRING>AFFIX:MAP_PLAYER_SUMMON_SKULL    :各種詞綴,都在MEDIA\AFFIXES\LEVELS下,我因為怕影響平衡性所以沒改過,理論上可以自己添加定義,然後加到這,所以可以改出各種BUG詞綴...
[/RANDOMPLAYERAFFIXES]  :結束定義玩家相關隨機詞綴列表
[RANDOMMONSTERAFFIXES]
<STRING>AFFIX:MAP_FREEZING
<STRING>AFFIX:MAP_MONSTER_HEALTH_PERCENT_BONUS_15
<STRING>AFFIX:MAP_MONSTER_SPEED_PERCENT_BONUS_10
[/RANDOMMONSTERAFFIXES]  :怪物相關隨機詞綴列表定義與上麵類似
[/DUNGEON]  :結束定義地圖
看到這,你就可以初步修改出你想要的地圖了.


2. 修改怪物組
所謂怪物組,就是隨機產生其中列出的怪物.文件可以新增,比如我增加了關底BOSS組.....
怪物組文件都在\MEDIA\SPAWNCLASSES下
這個文件夾內都是與隨機相關的文件,包括傳奇掉落.
以其中ACT4_DWARVENLABS_CHAMPIONS為例,逐行分析.
[SPAWNCLASS]  : 開始定義
<STRING>NAME:ACT4_DWARVENLABS_CHAMPIONS  :怪物組名字,盡量保證與文件名一致,並且由於hash表的緣故,請盡量使用已有的單詞組合,減少出錯可能.
[OBJECT]  :定義隨機項
<STRING>UNIT: DWARF_BRUTE_CHAMPION  :表示會隨機到DWARF_BRUTE_CHAMPION這種精英怪(雖然我不知道是怎麼產生的,但實際看來是包含其自帶小怪的),具體內容可以在\MEDIA\UNIT下搜索查看,如果想要改BOSS也是類似的
<INTEGER>WEIGHT:5  :權重,也就是隨機到這一項的可能性.真正的概率應該是5/總WEIGHT.
<INTEGER>MINCOUNT:1
<INTEGER>MAXCOUNT:1  :怪物數量範圍,如果設置到2,那麼一次就會出現兩個這種怪物.
[/OBJECT]  :結束此隨機項定義
[OBJECT]
...
[/OBJECT]
[OBJECT]
...
[/OBJECT]  :這些都與上麵類似,不贅述了.
[/SPAWNCLASS]  :結束定義
3.RULE文件:
這類文件我也沒有成功修改,不過如果要增加地圖多樣性,早晚會涉及到這一塊,歡迎大家嘗試.
文件位置:\MEDIA\LAYOUTS下
其實只要把後綴改為.dat就可以轉換成txt文件了.
初步分析了一下,應該是通過地圖塊拼接完成地圖生成,不過我分析不了.LAYOUT和.MPP文件,所以具體原理還不了解.
4.MAPWORK中地圖定義:
文件位置:\MEDIA\UNITS\ITEMS
其它物品,包括藥水,裝備等也在這個目錄下,需要的話可以自行修改,不過添加似乎會有點問題,可能與GUID有關.
以\MEDIA\UNITS\ITEMS\MAPS\EstherianMapB為例分析
[UNIT]  :開始定義物品
<STRING>BASEFILE:media/units/items/base.dat  :父文件,可以暫時認為是把缺省值定義好了的文件
<STRING>NAME:EstherianMapB&​​nbsp; :物品名字
<STRING>RESOURCEDIRECTORY:media/models/items/scroll  :應該是物品模型
<STRING>MESHFILE:scroll  :估計也是類型什麼的定義
<STRING>UNITTYPE:MAP  :物品類型
<TRANSLATE>DESCRIPTION:Enables entry to the Ruined Shrine via the Mapworks  :物品描述,肯定會被漢化,所以自行解決吧
<INTEGER>RARITY:100  :稀有度,越高越不稀有
<INTEGER>VALUE:10  :不知道,與價格相關的參數麼?
<INTEGER>LEVEL:48  :物品等級
<INTEGER>MAXSTACKSIZE:1  :可堆疊數目
<BOOL>SHADOWS:true  :陰影?
<STRING>ICON:map_shrine  :圖標
<STRING>FALL_SOUND:Item Fall
<STRING>TAKE_SOUND:ClothGet
<STRING>LAND_SOUND:ScrollDrop
<STRING>USE_SOUND:TownPortalCast  :各種音效
<INTEGER>MINLEVEL:45
<INTEGER>MAXLEVEL:60  :地圖等級,不清楚實際怎麼發揮作用
<TRANSLATE>DISPLAYNAME:Ruined Shrine Map (L48-55)  :顯示名字
<STRING>DUNGEON:MAP_ESTHERIAN_B  :上面的都無所謂,這個才是重點...........使用後傳送到的地圖名,所以你可以用原本是傳送到地圖A的地圖傳送到地圖B去,我想嘗試使用SPAWNCLASSES來使傳送產生隨機效果,不過沒有成功,歡迎嘗試.
<STRING>USES:0  :沒試過,應該是一次使用消耗幾個
<STRING>UNIT_GUID:8973525946458435083  :唯一標識碼,64位二進制...我不會生成,否則應該可以添加物品了.如果有人成功添加物品,請不吝賜教.
[/UNIT]  :結束定義
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 heido001 的頭像
    heido001

    緣份遊戲網 - 備份站

    heido001 發表在 痞客邦 留言(0) 人氣()