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.