Permanent
Creation

RPGツクールXP/VX用のRGSS素材です。
一部英語版対応です。 (A few materials can be used for English RPG MAKER XP/VX.)
競合率はルファーの独断と偏見なのでたまにハズレます。


#==============================================================================
# ■ ワイドモード
#------------------------------------------------------------------------------
#  一時的に画面のアスペクト比を16:9っぽくします。って上下に黒帯描くだけだけど。
# (C)     ルファー
# WebSite https://tkoolerlufar.pages.dev/
#==============================================================================

=begin
  =対応RGSS
  1

  =他の素材との競合の可能性
  !.. 大丈夫だと思う、多分

  =導入方法
  Window_Messageより下に新セクションを作成して、
  このプログラムをそこにコピーする

  =使い方
  イベントコマンド「スクリプト」で、
    $game_screen.wide = true
  という処理を入れると、黒帯が出ます。
    $game_screen.wide = nil
  という処理を入れると、黒帯が消えます。

  =備考
  ワイドにすると文章ウィンドウも合わせて移動するようになってます。
  ただし文章ウィンドウ改造系素材を入れている場合はそうならないかもしれません。

  =更新履歴
  2010/04/13 公開

  =再定義しているメソッド (いずれもエイリアス使用)
  Game_Screen#initialize
  Spriteset_Map#initialize
  Spriteset_Map#dispose
  Spriteset_Map#update
  Window_Message#reset_window

  =新規定義しているプロパティ
  Game_Screen#wide
=end
#----------------------------------------------------------------------------
# ◇ Lufar モジュール
#----------------------------------------------------------------------------
module Lufar
  WIDEMODE = nil
end
#----------------------------------------------------------------------------
# ◆ Game_Screen クラス
#----------------------------------------------------------------------------
class Game_Screen
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :wide                    ## 16:9 ワイドフラグ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias _Lufar_PrototypeOfInitialization initialize
  def initialize
    _Lufar_PrototypeOfInitialization()
    @wide = false
  end
end
#----------------------------------------------------------------------------
# ◆ Game_Screen クラス
#----------------------------------------------------------------------------
class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias _Lufar_PrototypeOfInitialization initialize
  def initialize
    black_color = Color.new(0.0, 0.0, 0.0)
    @wide_sprite = Sprite.new()
    @wide_sprite.z = 077777
    @wide_sprite.bitmap = Bitmap.new(640, 480)
    @wide_sprite.bitmap.fill_rect(0,   0, 640, 60, black_color)
    @wide_sprite.bitmap.fill_rect(0, 420, 640, 60, black_color)
    _Lufar_PrototypeOfInitialization()
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias _Lufar_PrototypeOfDisposition dispose
  def dispose
    _Lufar_PrototypeOfDisposition
    @wide_sprite.bitmap.dispose
    @wide_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias _Lufar_PrototypeOfUpdating update
  def update
    _Lufar_PrototypeOfUpdating
    @wide_sprite.visible = $game_screen.wide
  end
end
#----------------------------------------------------------------------------
# ◆ Window_Message クラス
#----------------------------------------------------------------------------
class Window_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # ● ウィンドウの位置と不透明度の設定
  #--------------------------------------------------------------------------
  alias _Lufar_PrototypeOfRw reset_window
  def reset_window
    _Lufar_PrototypeOfRw
    return unless $game_screen.wide
    position = $game_temp.in_battle ? 0 : $game_system.message_position
    case position
    when 0  # 上
      self.y += 60
    when 2  # 下
      self.y -= 60
    end
  end
end

戻る