#============================================================================== # ■ VX-RGSS2-15 撃破数カウンタ [Ver.1.0.0] by Claimh #------------------------------------------------------------------------------ # 各アクターが倒したエネミーの数をカウントします。 #------------------------------------------------------------------------------ #・ウィンドウ上に表示させる #Widow_Statusなどに追記してください。 #<記述> # draw_defeat_count(actor_id, enemy_id, x, y) #   actor_id   :対象アクターID(0を指定すると全アクター) #   enemy_id   :対象エネミーID(0を指定すると全エネミー) #   x      :横方向の表示位置 #   y      :縦方向の表示位置 #------------------------------------------------------------------------------ #・変数に入れる #イベントのスクリプト上に記述してください。 #<記述> # input_defeat_count(actor_id, enemy_id, variable_id) #   actor_id   :対象アクターID(0を指定すると全アクター) #   enemy_id   :対象エネミーID(0を指定すると全エネミー) #   variable_id :撃破数を入れる変数 #============================================================================== module DefeatCounter ## 他スクリプトとの併用のために残す #-------------------------------------------------------------------------- # ● 指定アクターの撃破数 # actor_id :対象アクターID(0を指定すると全アクター) # enemy_id :対象エネミーID(0を指定すると全エネミー) #-------------------------------------------------------------------------- def self.defeat_count(actor_id=0, enemy_id=0) return $game_actors.defeat(enemy_id, actor_id) end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_defeat_count initialize def initialize(actor_id) initialize_defeat_count(actor_id) @defeat = {} end #-------------------------------------------------------------------------- # ● 撃破数取得 #-------------------------------------------------------------------------- def defeat(enemy_id=0) return defeat_all if enemy_id == 0 @defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id) return @defeat[enemy_id] end #-------------------------------------------------------------------------- # ● 撃破数取得 #-------------------------------------------------------------------------- def defeat_all num = 0 for enemy_id in @defeat.keys num += @defeat[enemy_id] end return num end #-------------------------------------------------------------------------- # ● 撃破数カウント #-------------------------------------------------------------------------- def defeat_cnt(enemy_id) return if enemy_id == 0 @defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id) @defeat[enemy_id] += 1 end end class Game_Actors #-------------------------------------------------------------------------- # ● 撃破数取得 #-------------------------------------------------------------------------- def defeat(enemy_id=0, actor_id=0) return defeat_all(enemy_id) if actor_id == 0 return self.[](actor_id).defeat(enemy_id) end #-------------------------------------------------------------------------- # ● 撃破数取得 #-------------------------------------------------------------------------- def defeat_all(enemy_id=0) num = 0 for id in 1...@data.size next if @data[id].nil? num += @data[id].defeat(enemy_id) end return num end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- alias start_defeat_count start def start start_defeat_count @enemy_defeat = [] for i in 0...$game_troop.members.size @enemy_defeat[i] = false end end #-------------------------------------------------------------------------- # ● ダメージの表示 # target : 対象者 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- alias display_damage_defeat_count display_damage def display_damage(target, obj = nil) display_damage_defeat_count(target, obj) return unless @active_battler.is_a?(Game_Actor) return unless target.is_a?(Game_Enemy) return unless target.dead? return if @enemy_defeat[target.index] # 二重カウントはしない @active_battler.defeat_cnt(target.enemy_id) # 撃破数カウント @enemy_defeat[target.index] = true # 二重カウント防止 end end class Game_Interpreter #-------------------------------------------------------------------------- # ● 指定した変数にアクターの撃破数を格納する # actor_id :対象アクター(0を指定すると全アクター) # enemy_id :対象エネミー(0を指定すると全エネミー) # variable_id :撃破数を格納する変数 #-------------------------------------------------------------------------- def input_defeat_count(actor_id, enemy_id, variable_id) $game_variables[variable_id] = $game_actors.defeat(enemy_id, actor_id) return true end end class Window_Base < Window #-------------------------------------------------------------------------- # ● 指定した変数にアクターの撃破数を表示する # actor_id :対象アクター(0を指定すると全アクター) # enemy_id :対象エネミー(0を指定すると全エネミー) # x :横方向の表示位置 # y :縦方向の表示位置 #-------------------------------------------------------------------------- def draw_defeat_count(actor_id, enemy_id, x, y) defeat_count = $game_actors.defeat(enemy_id, actor_id) self.contents.font.color = normal_color self.contents.draw_text(x, y, 200, WLH, defeat_count.to_s) end end