#============================================================================== # ■ RGSS3 ターンカウンター表示 Ver1.02 by 星潟 #------------------------------------------------------------------------------ # 戦闘中、現在ターン数をウィンドウに表示、 # 又は画像とその画像に重ねる数字を表示します。 # 画像を表示する場合、画像は自分で用意して頂く必要がありますのでご注意ください。 #============================================================================== module TurnCounter #★★★ここから共通設定★★★ #タイプを指定。 #trueでウィンドウタイプ、falseで画像表示タイプ。 Type = true #ターンカウンターを表示するビューポートを文字列で指定。(後でevalする) #意味がよく分からない場合は変更しない。 Viewport = "@viewport2" #強制非表示化スイッチIDを指定。 #このスイッチがONの時、強制的に非表示化される。 #0の時、この機能は無効化される。 SWID = 0 #イベント中は非表示にするか否かを指定。 #trueで非表示、falseで表示。 TRIP = true #0ターン目という表示を許容しないようにするかを指定。 #trueで0ターン目の場合1ターン目の表示、falseで0ターン目の場合0ターン目と表示。 NZ = true #ターン終了処理〜ターン開始処理までのターン数表示を+1するか否かを指定。 #trueで+1する。falseでしない。 AD = true #ターンカウンター用数字描写時のフォントサイズを指定。 FS = 24 #ターン数の数字描写を太字化を有効にするかを指定。 #trueで有効、falseで無効。 BL = false #ターン数の数字描写をイタリックを有効にするかを指定。 #trueで有効、falseで無効。 IT = false #ターン数の数字描写の縁取り文字を有効にするかを指定。 #trueで有効、falseで無効。 OU = true #ターン数の数字描写の影付き文字化を有効にするかを指定。 #trueで有効、falseで無効。 SH = false #ターンカウンターが非表示状態になる際の消える速度を指定。 HS = 8 #ターンカウンターが表示状態になる際の現れる速度を指定。 SS = 8 #最初から不透明度最大値で表示するかを指定。 #trueで不透明度255、falseで不透明度0。 BF = false #通常メッセージ表示中も表示するかを指定。 MV = false #ターンの行動中も表示するかを指定。 TV = false #ターンカウンターの数字の表示最大数を指定。 CS = 999 #★★★ここまで共通設定★★★ #☆☆☆ここから『ウィンドウ表示』タイプの設定☆☆☆ WX = 0 WY = 248 WZ = 0 WW = 128 WH = 48 WT = "" WE = "ターン" #☆☆☆ここまで『ウィンドウ表示』タイプの設定☆☆☆ #★★★ここから『画像表示』タイプの設定★★★ #ターンカウンター用画像ファイルを指定。 #画像ファイルはGraphicsのSystemに入れる。 PN = "TurnCounter" #ターンカウンター用画像のX座標を指定。 PX = 0 #ターンカウンター用画像のY座標を指定。 PY = 144 #ターンカウンター用画像のZ座標を指定。 PZ = 0 #ターンカウンター用数字描写ビットマップのX座標を指定。 #(数字はこちらに描写し、ターンカウンター用画像ファイルの上から重ねる) TX = 0 #ターンカウンター用数字描写ビットマップのY座標を指定。 TY = 144 #ターンカウンター用数字描写ビットマップのZ座標を指定。 TZ = 0 #ターンカウンター用数字描写ビットマップの横幅を指定。 TW = 96 #ターンカウンター用数字描写ビットマップの縦幅を指定。 TH = 60 #ターンカウンター用数字描写ビットマップのアライメントを指定。 #(0で左寄せ、1で中央寄せ、2で右寄せ) AL = 1 #★★★ここまで『画像表示』タイプの設定★★★ end class Window_TurnCounter < Window_Base #-------------------------------------------------------------------------- # 初期化 #-------------------------------------------------------------------------- def initialize super(TurnCounter::WX,TurnCounter::WY,TurnCounter::WW,TurnCounter::WH) self.z = TurnCounter::WZ contents.font.size = TurnCounter::FS contents.font.bold = TurnCounter::BL contents.font.italic = TurnCounter::IT contents.font.outline = TurnCounter::OU contents.font.shadow = TurnCounter::SH self.opacity = 0 if !TurnCounter::BF self.contents_opacity = 0 if !TurnCounter::BF update end #-------------------------------------------------------------------------- # 更新 #-------------------------------------------------------------------------- def update super if $game_troop.turn_counter_visible self.opacity += TurnCounter::SS if self.opacity <= 255 self.contents_opacity += TurnCounter::SS if self.contents_opacity <= 255 else self.opacity -= TurnCounter::HS if self.opacity > 0 self.contents_opacity -= TurnCounter::HS if self.contents_opacity > 0 end turn_count = $game_troop.turn_count_for_display if @turn_count != turn_count @turn_count = turn_count contents.clear cw = contents_width ch = contents_height r = Rect.new(0,0,cw,ch) draw_text(r,TurnCounter::WT) draw_text(r,@turn_count.to_s + TurnCounter::WE,2) end end end class Sprite_TurnCounter < Sprite_Base #-------------------------------------------------------------------------- # 初期化 #-------------------------------------------------------------------------- def initialize(viewport = nil) super(viewport) self.bitmap = turn_counter_bitmap self.opacity = 0 if !TurnCounter::BF self.x = turn_counter_x self.y = turn_counter_y self.z = turn_counter_z update end #-------------------------------------------------------------------------- # 更新 #-------------------------------------------------------------------------- def update super if $game_troop.turn_counter_visible self.opacity += TurnCounter::SS if self.opacity <= 255 else self.opacity -= TurnCounter::HS if self.opacity > 0 end end #-------------------------------------------------------------------------- # ビットマップ #-------------------------------------------------------------------------- def turn_counter_bitmap "" end #-------------------------------------------------------------------------- # X座標 #-------------------------------------------------------------------------- def turn_counter_x 0 end #-------------------------------------------------------------------------- # Y座標 #-------------------------------------------------------------------------- def turn_counter_y 0 end #-------------------------------------------------------------------------- # Z座標 #-------------------------------------------------------------------------- def turn_counter_z 0 end end class Sprite_TurnCounterPicture < Sprite_TurnCounter #-------------------------------------------------------------------------- # ビットマップ #-------------------------------------------------------------------------- def turn_counter_bitmap Cache.system(TurnCounter::PN) end #-------------------------------------------------------------------------- # X座標 #-------------------------------------------------------------------------- def turn_counter_x TurnCounter::PX end #-------------------------------------------------------------------------- # Y座標 #-------------------------------------------------------------------------- def turn_counter_y TurnCounter::PY end #-------------------------------------------------------------------------- # Z座標 #-------------------------------------------------------------------------- def turn_counter_z TurnCounter::PZ end end class Sprite_TurnCounterNumber < Sprite_TurnCounter #-------------------------------------------------------------------------- # 更新 #-------------------------------------------------------------------------- def update super turn_count = $game_troop.turn_count_for_display if @turn_count != turn_count @turn_count = turn_count self.bitmap.clear self.bitmap.draw_text(0,0,self.bitmap.width,self.bitmap.height,@turn_count,TurnCounter::AL) end end #-------------------------------------------------------------------------- # 解放 #-------------------------------------------------------------------------- def dispose self.bitmap.dispose super end #-------------------------------------------------------------------------- # ビットマップ #-------------------------------------------------------------------------- def turn_counter_bitmap bitmap = Bitmap.new(TurnCounter::TW,TurnCounter::TH) bitmap.font.size = TurnCounter::FS bitmap.font.bold = TurnCounter::BL bitmap.font.italic = TurnCounter::IT bitmap.font.outline = TurnCounter::OU bitmap.font.shadow = TurnCounter::SH bitmap end #-------------------------------------------------------------------------- # X座標 #-------------------------------------------------------------------------- def turn_counter_x TurnCounter::TX end #-------------------------------------------------------------------------- # Y座標 #-------------------------------------------------------------------------- def turn_counter_y TurnCounter::TY end #-------------------------------------------------------------------------- # Z座標 #-------------------------------------------------------------------------- def turn_counter_z TurnCounter::TZ end end class Spriteset_Battle #-------------------------------------------------------------------------- # タイマースプライトの作成 #-------------------------------------------------------------------------- alias create_timer_turn_counter create_timer def create_timer create_timer_turn_counter viewport = eval(TurnCounter::Viewport) if TurnCounter::Type @turn_counter_window = Window_TurnCounter.new @turn_counter_window.viewport = viewport else @turn_counter_picture_sprite = Sprite_TurnCounterPicture.new(viewport) @turn_counter_number_sprite = Sprite_TurnCounterNumber.new(viewport) end end #-------------------------------------------------------------------------- # タイマースプライトの解放 #-------------------------------------------------------------------------- alias dispose_timer_turn_counter dispose_timer def dispose_timer dispose_timer_turn_counter if TurnCounter::Type @turn_counter_window.dispose else @turn_counter_picture_sprite.dispose @turn_counter_number_sprite.dispose end end #-------------------------------------------------------------------------- # タイマースプライトの更新 #-------------------------------------------------------------------------- alias update_timer_turn_counter update_timer def update_timer update_timer_turn_counter if TurnCounter::Type @turn_counter_window.update else @turn_counter_picture_sprite.update @turn_counter_number_sprite.update end end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ターン開始 #-------------------------------------------------------------------------- alias turn_start_turn_counter turn_start def turn_start if @in_turn_end_for_turn_counter @anti_plus_one_in_turn_end_for_turn_counter = true end $game_troop.turn_count_count_plus_one = nil if TurnCounter::AD turn_start_turn_counter end #-------------------------------------------------------------------------- # ターン終了 #-------------------------------------------------------------------------- alias turn_end_turn_counter turn_end def turn_end @in_turn_end_for_turn_counter = true turn_end_turn_counter @in_turn_end_for_turn_counter = nil if !@anti_plus_one_in_turn_end_for_turn_counter $game_troop.turn_count_count_plus_one = true if TurnCounter::AD end @anti_plus_one_in_turn_end_for_turn_counter = nil end end class Game_Troop < Game_Unit attr_accessor :turn_count_count_plus_one #-------------------------------------------------------------------------- # クリア #-------------------------------------------------------------------------- alias clear_turn_counter clear def clear clear_turn_counter @turn_count_count_plus_one = nil end #-------------------------------------------------------------------------- # 表示用ターンカウント #-------------------------------------------------------------------------- def turn_count_for_display v = @turn_count v += 1 if @turn_count_count_plus_one && TurnCounter::AD v = 1 if TurnCounter::NZ && v == 0 v = TurnCounter::CS if v > TurnCounter::CS v end #-------------------------------------------------------------------------- # ターンカウンター可視状態 #-------------------------------------------------------------------------- def turn_counter_visible return false if TurnCounter::TRIP && @interpreter.running? return false if TurnCounter::SWID != 0 && $game_switches[TurnCounter::SWID] return false if !TurnCounter::MV && $game_message.busy? return false if !TurnCounter::TV && (BattleManager.in_turn? or BattleManager.turn_end?) true end end