#============================================================================== # ■ マップ表示限定 ver 1.00 #------------------------------------------------------------------------------ #  配布元: # 白の魔 http://izumiwhite.web.fc2.com/ # #  利用規約: # RPGツクールVXの正規の登録者のみご利用になれます。 # 利用報告・著作権表示とかは必要ありません。 # 改造もご自由にどうぞ。 # 何か問題が発生しても責任は持ちません。 #============================================================================== #-------------------------------------------------------------------------- # ★ 初期設定。 # 各余白のセル数の設定。 #-------------------------------------------------------------------------- module WD_mapscreenchop_ini # Left_blank + Right_blank < 16 となるように設定 Left_blank = 0 #左側の余白(0〜16) Right_blank = 0 #右側の余白(0〜16) # Top_blank + Bottom_blank < 12 となるように設定 Top_blank = 0 #上側の余白(0〜12) Bottom_blank = 4 #下側の余白(0〜12) end #-------------------------------------------------------------------------- # ★ 初期設定おわり #-------------------------------------------------------------------------- class Game_Map #-------------------------------------------------------------------------- # ● 遠景表示 X 座標の計算(再定義) # bitmap : 遠景ビットマップ #-------------------------------------------------------------------------- def calc_parallax_x(bitmap) if bitmap == nil return 0 elsif @parallax_loop_x return @parallax_x / 16 elsif loop_horizontal? return 0 else w1 = bitmap.width - (544+WD_mapscreenchop_ini::Left_blank*32-WD_mapscreenchop_ini::Right_blank*32) w2 = @map.width * 32 - (544+WD_mapscreenchop_ini::Left_blank*32-WD_mapscreenchop_ini::Right_blank*32) if w1 <= 0 or w2 <= 0 return 0 else return @parallax_x * w1 / w2 / 8 end end end #-------------------------------------------------------------------------- # ● 遠景表示 Y 座標の計算(再定義) # bitmap : 遠景ビットマップ #-------------------------------------------------------------------------- def calc_parallax_y(bitmap) if bitmap == nil return 0 elsif @parallax_loop_y return @parallax_y / 16 elsif loop_vertical? return 0 else h1 = bitmap.height - (416+WD_mapscreenchop_ini::Top_blank*32-WD_mapscreenchop_ini::Bottom_blank*32) h2 = @map.height * 32 - (416+WD_mapscreenchop_ini::Top_blank*32-WD_mapscreenchop_ini::Bottom_blank*32) if h1 <= 0 or h2 <= 0 return 0 else return @parallax_y * h1 / h2 / 8 end end end #-------------------------------------------------------------------------- # ● 下にスクロール(再定義) # distance : スクロールする距離 #-------------------------------------------------------------------------- def scroll_down(distance) if loop_vertical? @display_y += distance @display_y %= @map.height * 256 @parallax_y += distance else last_y = @display_y @display_y = [@display_y + distance, (height - (13 - WD_mapscreenchop_ini::Top_blank - WD_mapscreenchop_ini::Bottom_blank)) * 256].min @parallax_y += @display_y - last_y end end #-------------------------------------------------------------------------- # ● 右にスクロール(再定義) # distance : スクロールする距離 #-------------------------------------------------------------------------- def scroll_right(distance) if loop_horizontal? @display_x += distance @display_x %= @map.width * 256 @parallax_x += distance else last_x = @display_x @display_x = [@display_x + distance, (width - (17 - WD_mapscreenchop_ini::Left_blank - WD_mapscreenchop_ini::Right_blank)) * 256].min @parallax_x += @display_x - last_x end end end class Game_Player < Game_Character #-------------------------------------------------------------------------- # ● 定数(再定義) #-------------------------------------------------------------------------- CENTER_X = ((544 - WD_mapscreenchop_ini::Left_blank*32 - WD_mapscreenchop_ini::Right_blank*32) / 2 - 16) * 8 # 画面中央の X 座標 * 8 CENTER_Y = ((416 - WD_mapscreenchop_ini::Top_blank*32 - WD_mapscreenchop_ini::Bottom_blank*32) / 2 - 16) * 8 # 画面中央の Y 座標 * 8 #-------------------------------------------------------------------------- # ● 画面中央に来るようにマップの表示位置を設定(再定義) # x : X 座標 # y : Y 座標 #-------------------------------------------------------------------------- def center(x, y) display_x = x * 256 - CENTER_X # 座標を計算 unless $game_map.loop_horizontal? # 横にループしない? max_x = ($game_map.width - (17 - WD_mapscreenchop_ini::Left_blank - WD_mapscreenchop_ini::Right_blank)) * 256 # 最大値を計算 display_x = [0, [display_x, max_x].min].max # 座標を修正 end display_y = y * 256 - CENTER_Y # 座標を計算 unless $game_map.loop_vertical? # 縦にループしない? max_y = ($game_map.height - (13 - WD_mapscreenchop_ini::Top_blank - WD_mapscreenchop_ini::Bottom_blank)) * 256 # 最大値を計算 display_y = [0, [display_y, max_y].min].max # 座標を修正 end $game_map.set_display_pos(display_x, display_y) # 表示位置変更 end end class Spriteset_Map #-------------------------------------------------------------------------- # ● ビューポートの作成(再定義) #-------------------------------------------------------------------------- def create_viewports @viewport1 = Viewport.new(WD_mapscreenchop_ini::Left_blank*32, WD_mapscreenchop_ini::Top_blank*32, 544-(WD_mapscreenchop_ini::Left_blank+WD_mapscreenchop_ini::Right_blank)*32, 416-(WD_mapscreenchop_ini::Top_blank+WD_mapscreenchop_ini::Bottom_blank)*32) @viewport2 = Viewport.new(0, 0, 544, 416) @viewport3 = Viewport.new(0, 0, 544, 416) @viewport2.z = 50 @viewport3.z = 100 end end