#============================================================================== # ■ RGSS3 通行チェックスルーチップ Ver1.00b by 星潟 #------------------------------------------------------------------------------ # プレイヤーの上側に配置されるマップチップと同じように # 通行判定を行う際に判定の対象とならなくなるチップを作成可能になります。 # 下側に配置されるマップチップに設定した場合でも # 上側に表示されるという事はありません。 # # 下側に配置されるマップチップでも同じ判定となる為 # 崖の端付近に通行可能タイルを置いた際に崖下から登れてしまう等の # 動作面の事故が起きにくくなるかもしれません。 #============================================================================== module ThroughTip #通行チェックスルー判定用の地形タグを指定。 #,で区切って複数指定可能。 Tag = [7] #読み替え処理をいつ行うかを指定。 #0で初めてそのタイルセットで移動判定が発生した時。 #1でゲームデータを読み込んだ時。 #2は1と同じだが戦闘テストの際も行う。(通常は不要) Timing = 1 end class Game_Map attr_accessor :cp_throughtip #-------------------------------------------------------------------------- # 通行チェック #-------------------------------------------------------------------------- alias check_passage_through_tip check_passage def check_passage(x, y, bit) @cp_throughtip = true r = check_passage_through_tip(x, y, bit) @cp_throughtip = nil r end end class RPG::Tileset #-------------------------------------------------------------------------- # 通行判定 #-------------------------------------------------------------------------- alias flags_through_tip flags unless $! def flags $game_map.cp_throughtip ? tht_flags : flags_through_tip end #-------------------------------------------------------------------------- # 通行チェックスルーチップを反映した通行判定 #-------------------------------------------------------------------------- def tht_flags @tht_flags ||= create_flags_for_through_tip end #-------------------------------------------------------------------------- # 通行チェックスルーチップを反映した通行判定の作成 #-------------------------------------------------------------------------- def create_flags_for_through_tip t = @flags.clone 8192.times {|i| d = @flags[i] if ThroughTip::Tag.include?(d >> 12) f = d.to_s(16) f[-2] = "1" f[-1] = "0" t[i] = eval("0x" + f) end} t end end if ThroughTip::Timing > 0 class << DataManager #-------------------------------------------------------------------------- # 全タイルセットを対象とした通行チェックスルーチップを反映した通行判定の作成 #-------------------------------------------------------------------------- def create_all_tht_flag $data_tilesets.each {|i| i.tht_flags if i} end #-------------------------------------------------------------------------- # 通常のデータベースをロード #-------------------------------------------------------------------------- alias load_normal_database_through_tip load_normal_database def load_normal_database load_normal_database_through_tip create_all_tht_flag end if ThroughTip::Timing > 1 #-------------------------------------------------------------------------- # 戦闘テスト用のデータベースをロード #-------------------------------------------------------------------------- alias load_battle_test_database_through_tip load_battle_test_database def load_battle_test_database load_battle_test_database_through_tip create_all_tht_flag end end end end