#============================================================================== # ■ RGSS3 タイルチップ転送イベント Ver1.01 by 星潟 #------------------------------------------------------------------------------ # 現在マップの指定位置から特定範囲のマップチップやリージョン・影情報を # 他マップの指定位置の同範囲から転送するイベントコマンドを使用できます。 # (同じIDを指定すれば、同一マップ同士で呼ぶ事も出来ます) # ただし、マップ間でタイルセットが異なる場合は # コピーしても現在マップのタイルセットIDの物が配置されます。 # # また、マップ移動等でマップが再セットアップされると # 全て元に戻るので注意が必要です。 #------------------------------------------------------------------------------ # ★使用例(イベントコマンドのスクリプトを使用) #------------------------------------------------------------------------------ # m_change_rect(7, 8, 2, 1, 1, 3, 3) # # 現在マップのX座標7、Y座標8を左上とした3×3の範囲を # マップID2のX座標1、Y座標1を左上とした3×3の範囲で描き変える。 #------------------------------------------------------------------------------ # m_change_rect(12, 14, 5, 3, 4, 6, 7) # # 現在マップのX座標12、Y座標14を左上とした6×7の範囲を # マップID5のX座標3、Y座標4を左上とした6×7の範囲で描き変える。 #------------------------------------------------------------------------------ # ★実際に使う場合の雛型はこちら(先頭の# を抜いて使用して下さい) #------------------------------------------------------------------------------ # 指定範囲内を全てコピーする場合 #------------------------------------------------------------------------------ # m_change_rect( # 12,#X座標 # 14,#Y座標 # 5,#別マップのID # 3,#別マップのX座標 # 4,#別マップのY座標 # 6,#X方向範囲 # 7 #Y方向範囲 # ) #------------------------------------------------------------------------------ # 指定範囲内の特定レイヤーのみコピーする場合 # レイヤー配列の場所のみ、単純な数字ではなく配列を記述する。 # 例えば[2,3]の場合、通常、B〜Eタイルが配置されるレイヤーと # リージョンと影の情報をコピーする。 # 例えば[0,1]の場合、通常、A1〜A5タイルが配置されるレイヤーと # A1〜A5のカウンター等が配置されるレイヤーをコピーする。 #------------------------------------------------------------------------------ # m_change_rect( # 12,#X座標 # 14,#Y座標 # 5,#別マップのID # 3,#別マップのX座標 # 4,#別マップのY座標 # 6,#X方向範囲 # 7,#Y方向範囲 # [2,3],#レイヤー配列 # ) #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # タイルチップ転送 #-------------------------------------------------------------------------- def m_change_rect(x1, y1, map_id, x2, y2, x3, y3, type = [0,1,2,3]) $game_map.m_change_rect(x1, y1, map_id, x2, y2, x3, y3, type) end end class Game_Map #-------------------------------------------------------------------------- # タイルチップ転送 #-------------------------------------------------------------------------- def m_change_rect(x1, y1, map_id, x2, y2, x3, y3, type = [0,1,2,3]) md = load_data(sprintf("Data/Map%03d.rvdata2", map_id)).data hash1 = {} hash2 = {} x3.times {|i1| y3.times {|i2| hash1[hash1.size] = [x1 + i1, y1 + i2] hash2[hash2.size] = [x2 + i1, y2 + i2]}} type.each {|i| hash1.size.times {|s| next if !valid?(hash1[s][0], hash1[s][1]) next if !valid?(hash2[s][0], hash2[s][1]) $game_map.data[hash1[s][0], hash1[s][1], i] = md[hash2[s][0], hash2[s][1], i]}} end end