#============================================================================== # ■ RGSS3 マップデータのタイルID一斉置換 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # マップデータのマップ上の指定したタイルIDについて # 別のタイルIDに置き換えて保存します。 # どうしてもタイルセット側の変更ではなく # マップデータ側の変更で問題を解決したい場合のスクリプトとなります。 #------------------------------------------------------------------------------ # ★使い方★ # # 導入・マップIDの指定や置換前後のタイルID設定後に # テストプレイを起動する事で置換が発生します。 # 置換後はゲームウィンドウが自動的に閉じますので # そのまま余計な操作をしたり再保存をせず、一度VXAceを閉じ、再起動して下さい。 # 置換出来ている事を確認したら、速やかにこのスクリプトを削除して下さい。 # (残しておくと、テストプレイを起動する度に置換処理が行われてしまいます) # # タイルIDについては # 当サイト内のグラフィック素材→その他諸々の中にある # VX/VXAceタイルID確認用エクセルファイルを確認してください。 #------------------------------------------------------------------------------ # ★要注意★ # # データの置き換えが発生する都合上 # 場合によってはプロジェクトデータが破損に繋がる可能性もありますので # 必ずVXAceを起動していない状態でプロジェクトデータのバックアップをとった上で # スクリプトの設定及び実行を行って下さい。 #============================================================================== module MapTileReplace #空のハッシュを用意(変更不要) R = {} #タイルID置き換えの対象となるマップIDを指定 Target_MapID = [2] #以降に設定を指定。 #例として2つ設定しています。使用前に削除して下さい。 R[1] = 2#タイルID1が配置されていた場合、タイルID2に配置し直す R[3] = 4#タイルID3が配置されていた場合、タイルID4に配置し直す end if $TEST #対象となっているマップ全てに対して繰り返す MapTileReplace::Target_MapID.each {|map_id| #マップをロードする fn = sprintf("Data/Map%03d.rvdata2", map_id) map = load_data(fn) #タイルIDが格納されているテーブルを走査し、条件を満たす場合は置換する w = map.width h = map.height w.times {|x| h.times {|y| 3.times {|i| MapTileReplace::R.each {|k,v| map.data[x,y,i] = v if map.data[x,y,i] == k}}}} #マップを上書きする save_data(map, fn)} #処理が終えた後、自動的にゲームウィンドウを閉じる exit end