#============================================================================== # ■ VXAce-RGSS3-6 击破数计算器 [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 #-------------------------------------------------------------------------- # ● object初期化 #-------------------------------------------------------------------------- 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 @defeat.keys.inject(0) { |n, id| n += @defeat[id] } 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) @data.inject(0) { |n, actor| n += (actor.nil? ? 0 : actor.defeat(enemy_id)) } end end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● 伤害处理 # 在调用之前 @result.hp_damage @result.mp_damage @result.hp_drain # @result.mp_drain 已被设置。 #-------------------------------------------------------------------------- alias execute_damage_defeat execute_damage def execute_damage(user) execute_damage_defeat(user) return if actor? or !dead? or user.enemy? return if $game_troop.enable_dead_count?(self.index) $game_troop.defeat_dead_count(self.index) user.defeat_cnt(self.enemy_id) end end #============================================================================== # ■ Game_Troop #============================================================================== class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # ● 建立[set up] #-------------------------------------------------------------------------- alias setup_defeat setup def setup(troop_id) setup_defeat(troop_id) @enemy_defeat = [] end #-------------------------------------------------------------------------- # ● 击破時的计算 #-------------------------------------------------------------------------- def defeat_dead_count(index) @enemy_defeat[index] = true end #-------------------------------------------------------------------------- # ● 已完成计算? #-------------------------------------------------------------------------- def enable_dead_count?(index) @enemy_defeat[index] || false 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) draw_text(x, y, 200, line_height, $game_actors.defeat(enemy_id, actor_id), 2) end end
无标题.jpg (205.61 KB, 下载次数: 24)
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |