#============================================================================== # ■ RGSS3 タイル/天候更新操作 Ver1.00a by 星潟 #------------------------------------------------------------------------------ # 水面や滝等の、動くタイルの更新速度と # 天候の更新速度を加速させる設定が可能になります。 # ただし、更新速度を上げる事で、負荷もまた増加するので注意が必要です。 # また、マップに入った瞬間に自動的に天候を変更する機能も持ちます。 # # 例. # 大雨の際にタイル/天候を加速させる等で # 激しく揺れる水面と豪雨を表現できます。 #------------------------------------------------------------------------------ # ★マップに設定する場合(そのマップに入った瞬間に加速)マップのメモ欄に記入。 # # ☆タイル更新加速 # # <タイル加速:1> # # 上記のように記入する事で、加速度1に設定されます。(通常の2倍) # # ☆天候更新加速 # # <天候加速:2> # # 上記のように記入する事で、加速度2に設定されます。(通常の3倍) # # ☆天候設定 # # <天候設定:none,0,0> # # 上記のように記入する事で # 即座に天候が初期化状態に設定されます。 # # <天候設定:rain,9,60> # # 上記のように記入する事で # 「強さ9、切り替わるまで60フレームの雨」に設定されます。 # # <天候設定:storm,5,30> # # 上記のように記入する事で # 「強さ5、切り替わるまで30フレームの嵐」に設定されます。 # # <天候設定:snow,3,0> # # 上記のように記入する事で # 「強さ3、切り替わるまで0フレームの雪」に設定されます。 # # ☆特殊天候設定 # 当方の新天候を利用されている場合のみ使用できます。 # 五色紙吹雪・プリズムレインはVer1.01、多様な光はVer1.02以降のみ # 本スクリプトに対応しています。 # # <天候設定:xxxx,9,60> # # 上記のように記入する事で # 「強さ9、切り替わるまで60フレームの特殊天候」に設定されます。 # # xxxxの部分には、特殊天候指定用のキーワードが入ります。 # 五色紙吹雪・プリズムレインならばcpr1〜cpr6、 # 多様な光ならばstar_w1_i_8等。 # #------------------------------------------------------------------------------ # ★イベントコマンドで設定する場合イベントコマンドのスクリプトで記入。 # # ☆タイル更新加速 # # $game_system.tmu_accel = 3 # # 上記のように記入する事で、加速度3に設定されます。(通常の4倍) # # ☆天候更新加速 # # $game_system.wu_accel = 0 # # 上記のように記入する事で、加速度0に設定されます。(通常の等倍) # # ☆天候設定 # # 普通にイベントコマンドであります。 #------------------------------------------------------------------------------ # ★補足 # # マップに設定されていない場合は、マップ移動時も加速度は維持されます。 # 時と場合に応じて、加速設定を解除する必要があります。 # # デフォルトの加速度は0(通常の等倍)ですので # イベントコマンドで0を指定する事で等倍速度に戻す事が出来ます。 # また、加速度をマイナスや小数点の値に設定する事は出来ません。 #============================================================================== module M_ACCEL #タイル更新を加速させる為の設定用キーワードを指定します。 WORD1 = "タイル加速" #天候更新を加速させる為の設定用キーワードを指定します。 WORD2 = "天候加速" #自動天候設定の設定用キーワードを指定します。 WORD3 = "天候設定" end class Game_System attr_accessor :tmu_accel attr_accessor :wu_accel attr_accessor :auto_weather #-------------------------------------------------------------------------- # 初期設定 #-------------------------------------------------------------------------- alias initialize_e_accel initialize def initialize #本来の処理を実行 initialize_e_accel #追加データを設定する。 @tmu_accel = 0 @wu_accel = 0 @auto_weather = false @weather_blend = false end #-------------------------------------------------------------------------- # タイル更新加速度 #-------------------------------------------------------------------------- def tmu_accelerator #キャッシュが存在しない場合は0にする。 @tmu_accel = 0 if @tmu_accel == nil @tmu_accel end #-------------------------------------------------------------------------- # 天候加速度 #-------------------------------------------------------------------------- def wu_accelerator #キャッシュが存在しない場合は0にする。 @wu_accel = 0 if @wu_accel == nil @wu_accel end #-------------------------------------------------------------------------- # 自動天候設定 #-------------------------------------------------------------------------- def auto_weather #キャッシュが存在しない場合はfalseにする。 @auto_weather = false if @auto_weather == nil @auto_weather end end class Game_Map #-------------------------------------------------------------------------- # セットアップ #-------------------------------------------------------------------------- alias setup_e_accel setup def setup(map_id) #本来の処理を実行する。 setup_e_accel(map_id) #それぞれ、自動更新を実行する。 $game_system.tmu_accel = @map.tmu_accel if @map.tmu_accel $game_system.wu_accel = @map.wu_accel if @map.wu_accel if @map.auto_weather mwt = @map.auto_weather $game_map.screen.change_weather(mwt[0], mwt[1], mwt[2]) end end end class Spriteset_Map #-------------------------------------------------------------------------- # タイルマップの更新 #-------------------------------------------------------------------------- alias update_tilemap_e_accel update_tilemap def update_tilemap #本来の処理を実行する。 update_tilemap_e_accel #更新加速度が0の場合は処理を中断する。 return if $game_system.tmu_accel == 0 #更新加速度の分だけ更新を繰り返す。 $game_system.tmu_accel.times {@tilemap.update} end #-------------------------------------------------------------------------- # 天候の更新 #-------------------------------------------------------------------------- alias update_weather_e_accel update_weather def update_weather #本来の処理を実行する。 update_weather_e_accel #更新加速度が0の場合は処理を中断する。 return if $game_system.wu_accel == 0 #更新加速度の分だけ更新を繰り返す。 $game_system.wu_accel.times {@weather.update} end end class RPG::Map #-------------------------------------------------------------------------- # タイル更新加速度 #-------------------------------------------------------------------------- def tmu_accel #キャッシュがある場合はキャッシュを返す。 return @tmu_accel if @tmu_accel != nil #メモ欄からデータを取得。 memo = self.note.scan(/<#{M_ACCEL::WORD1}[::](\d+)>/).flatten #データを数字に変換する。 #データを取得出来無かった場合はfalseとする。 @tmu_accel = memo != nil && !memo.empty? ? memo[0].to_i : false #データを返す return @tmu_accel end #-------------------------------------------------------------------------- # 天候加速度 #-------------------------------------------------------------------------- def wu_accel #キャッシュがある場合はキャッシュを返す。 return @wu_accel if @wu_accel != nil #メモ欄からデータを取得。 memo = self.note.scan(/<#{M_ACCEL::WORD2}[::](\d+)>/).flatten #データを数字に変換する。 #データを取得出来無かった場合はfalseとする。 @wu_accel = memo != nil && !memo.empty? ? memo[0].to_i : false #データを返す return @wu_accel end #-------------------------------------------------------------------------- # 自動天候設定 #-------------------------------------------------------------------------- def auto_weather #キャッシュがある場合はキャッシュを返す。 return @auto_weather if @auto_weather != nil #メモ欄からデータを取得。 memo = self.note.scan(/<#{M_ACCEL::WORD3}[::](\S+),(\d+),(\d+)>/).flatten #データをシンボル及び数字2種に変換する。 #データを取得出来無かった場合や3以上の値の場合はfalseを返す。 @auto_weather = memo != nil && !memo.empty? ? [memo[0].to_sym,memo[1].to_i,memo[2].to_i] : false #データを返す return @auto_weather end end