RPGツクールVXはRPGツクールXPのバージョンアップ版とも言えるシステムを持っています。 しかしデフォルトではXPのマップデータをVXにインポートすることはできません。 しかしながら、RGSSの扱うマップデータ(XP:rxdata VX:rvdata)は、配列によってマップデータを保存しています。 これを利用して、XPのマップデータをVXに移植できます。
タイルIDの3次元配列です。Data[X,Y,Z] = TileID
タイルIDの3次元配列です。Data[X,Y,Z] = TileID
---注意---
RPGツクールVXの層は、エディタ内部で勝手に決められています。
(マップチップセットAが第一層とかではなく、草原を配置した瞬間に第1層に平地、第二層に草原を配置、など)
コンバートの際はこれを考慮してTileIDを決める必要があります。
一例です。参考にしてください。
#-------------------------------------------------------------------------- # マップコンバート ファイル処理部 #-------------------------------------------------------------------------- def f_map_convert #マップIDの指定。IDはXPとVXで共通とする map_id = 1 @mapVX = load_data(sprintf("Data/Map%03d.rvdata", map_id)) @mapXP = load_data(sprintf("Data/Map%03d.rxdata", map_id)) dataVX = @mapVX.data dataXP = @mapXP.data #関数により変換実行 f_map_XP2VX(dataXP,dataVX) save_data(@map, sprintf("Data/Map%03d.rvdata", map_id)) end
まずRPGツクールVXのDataフォルダに、RPGツクールXPの変換元マップデータファイル(Map***.rxdata
)
を置いておく必要があります。読み込んだあと変換を行い、関数f_map_XP2VX
で変換します(下に記述)。
save_data
はRGSSの組み込み関数です。
#-------------------------------------------------------------------------- # ● マップコンバート関数XP→VX #-------------------------------------------------------------------------- def f_map_XP2VX(xp,vx) #全データについて変換 for y in 0...xp.ysize for x in 0...xp.xsize #VX側データの初期化 id_vx0 = vx[x,y,0] id_vx1 = vx[x,y,1] #XP側データの読み込み id_xp0 = xp[x,y,0] id_xp1 = xp[x,y,1] id_xp2 = xp[x,y,2] #VX側 2048:海 2816:平地 3200:荒地 case id_xp0 when 1 .. 95 id_vx0 = 2048 when 96 .. 143 id_vx0 = 2816 when 144 .. 191 id_vx0 = 3200 end #VX側 3008:草原 3584:砂漠 3968:雪原 case id_xp1 when 192 .. 239 id_vx1 = 3008 when 240 .. 287 id_vx0 = 3584 when 288 .. 383 id_vx0 = 3968 end #VX側 2912:山 2864:森 case id_xp2 when 336 .. 383 id_vx1 = 2864 when 384 id_vx1 = 2912 end vx[x,y,0] = id_vx0 vx[x,y,1] = id_vx1 end#x end#y end
「海」のタイルIDなどはアニメーションや境界線自動生成があるので1つではありません(XP側:1〜95など)。 そのあたりをタイルIDと照合しつつ、何回か変換する必要があると思います。 不安な場合は、変換前のrvdataファイルのバックアップを取っておくと良いでしょう (可能性は低いですが、マップデータが開けなくなってしまうこともあるかもしれないので)。
RPGツクールVXはタイルIDを調べるイベントコマンドがありません。 データそのものをテキストファイルに書き出してしまう方法(下記)や、 Delusional Field様の ◆ツクールVX タイルIDテーブルが大変参考になります。
#-------------------------------------------------------------------------- # dataファイルをテキストに書き込み #-------------------------------------------------------------------------- def f_csv_write(table_data,name) file = File.open(name + ".txt", 'w') for z in 0...table_data.zsize file.puts "Z=" + z.to_s for y in 0...table_data.ysize str = "" for x in 0...table_data.xsize if x == 0 str = table_data[x,y,z].to_s else str = str + "," + table_data[x,y,z].to_s end end#x file.puts str end#y end#z file.close end
リンク自由
Copyright (c) 2009 - 2010 kazamitori/A-9 & TAMARIBA Members All Rights Reserved.