#============================================================================== # ■ RGSS3 プレイ時間オーバーフロー防止 Ver1.01 by 星潟 #------------------------------------------------------------------------------ # プレイ時間のオーバーフローを防止します。 # Graphics.frame_countが2147483647を超えると-2147483648になってしまう為、 # 通常のフレームレートでの9942時間分の2147472000を超えた時点で # Graphics.frame_countの数字を2147472000引き # Graphics.frame_countでカウントされている値を小さい数に抑えます。 # その上で、Graphics.update時のGraphics.frame_count加算以外のタイミングで # Graphics.frame_countの値を用いる場合は # 抑えられた分の値を加算した値を用います。 #============================================================================== class << Graphics #-------------------------------------------------------------------------- # 更新 #-------------------------------------------------------------------------- unless method_defined?(:update_anti_frame_count_overflow) alias update_anti_frame_count_overflow update def update @play_time_update_now = true if Graphics.frame_count >= 2147472000 if $game_system $game_system.frame_count_hour_add_plus else Graphics.frame_count = 0 end end update_anti_frame_count_overflow @play_time_update_now = nil end end #-------------------------------------------------------------------------- # フレームカウント #-------------------------------------------------------------------------- unless method_defined?(:frame_count_anti_frame_count_overflow) alias frame_count_anti_frame_count_overflow frame_count def frame_count if $game_system && !$game_system.anti_frame_count_hour_add && !@play_time_update_now frame_count_anti_frame_count_overflow + $game_system.frame_count_hour_add * 2147472000 else frame_count_anti_frame_count_overflow end end end end class Game_System attr_accessor :anti_frame_count_hour_add #-------------------------------------------------------------------------- # オーバーフロー対策分のプレイ時間 #-------------------------------------------------------------------------- def frame_count_hour_add @frame_count_hour_add ||= 0 end #-------------------------------------------------------------------------- # オーバーフロー対策分のプレイ時間を更新 #-------------------------------------------------------------------------- def frame_count_hour_add_plus @frame_count_hour_add ||= 0 @frame_count_hour_add += Graphics.frame_count / 2147472000 Graphics.frame_count %= 2147472000 end #-------------------------------------------------------------------------- # セーブ前の処理 #-------------------------------------------------------------------------- alias on_before_save_anti_frame_count_overflow on_before_save def on_before_save @anti_frame_count_hour_add = true on_before_save_anti_frame_count_overflow @anti_frame_count_hour_add = nil end end