查看: 1340|回复: 4

[已经过期] 谁帮我改改这个脚本

[复制链接]
梦石
0
星屑
214
在线时间
66 小时
注册时间
2014-1-23
回帖
31
发表于 2014-2-25 20:56:09 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 铃仙·优昙华院·因幡 于 2014-2-26 10:42 编辑

[pre lang="ruby" line="1"]#==============================================================================
# 装备耐久度 by 沉影不器
# protosssonny修改版
#------------------------------------------------------------------------------
# ① 自定义各个装备耐久度上限
# ② 允许显示"无法破坏"的装备,允许忽略耐久度的装备(如:戒指等装饰类)
# ③ 物理攻击消耗武器耐久度,被打消耗防具耐久度
#    攻击越高,对方防具减耐久度的机率越大,防御越高,对方武器减耐久度的机率越大
# ④ 装备耐久度降为 0 时装备即损坏,该装备能力消失,提供修复耐久度的功能
# ⑤ 修复装备时耐久度上限也会下降,提供同时修复耐久度和上限的功能
# ⑥ 装备卖出价格随耐久度打折
#==============================================================================
module Game_Equip
  ## 耐久度上限(指所有装备耐久度上限不可超过的值)
  MaxDur = 999
  # 忽略耐久度的防具类型(0:盾 1:头盔 2:衣服 3:装饰 4:武器)
  #   非忽略耐久度 且未定义耐久度,则被认为"无法破坏"
  NoDur = [3]
  # 降低耐久度的基本机率最小值和最大值(大于0小于1)
  Dur_BaseDec = [0.25, 0.75]
  # 修复装备时耐久度上限减少量
  MaxDur_Dec = 1
  # 装备耐久度剩余多少比值(0到1)时提示
  Show_If_Lower = 0.5
  # 损坏时装备显示颜色
  BrokenColor = Color.new(255,0,0)
  # 耐久度占总价格比值(0到1)
  Dur_Price = 0.7
end

module RPG
  class BaseItem
    #------------------------------------------------------------------------
    # 是否被破坏
    #------------------------------------------------------------------------
    def broken?
      return false
    end
  end
end

module RPG
  class Weapon < BaseItem
    include Game_Equip
    #------------------------------------------------------------------------
    # 附加属性
    #------------------------------------------------------------------------
    attr_accessor :base_id
    attr_reader   :maxdur
    attr_reader   :dur
    attr_reader   :indesctructible
    #------------------------------------------------------------------------
    # 是否无耐久度
    #------------------------------------------------------------------------
    def nodur
      return NoDur.include? 4
    end
    #------------------------------------------------------------------------
    # 是否被破坏
    #------------------------------------------------------------------------
    def broken?
      return false if dur.nil?
      return true if dur.zero?
    end
    #------------------------------------------------------------------------
    # 是否需修复
    #------------------------------------------------------------------------
    def need_repair?(hyper)
      return false if dur.nil?
      return false if hyper.nil?
      max = hyper ? read_note('耐久度').to_i : maxdur
      return true if max > dur
      return false
    end
    #------------------------------------------------------------------------
    # 耐久度初始化
    #------------------------------------------------------------------------
    def inidur
      d = read_note('耐久度').to_i
      if d.zero?
        @indesctructible = true
      else
        @indesctructible = false
        @maxdur = @dur = [d, MaxDur].min
      end
    end
    #------------------------------------------------------------------------
    # 耐久度损耗
    #------------------------------------------------------------------------
    def decdur(n = 1)
      return if @dur.nil?
      n = [n, maxdur].min
      @dur -= n unless nodur or indesctructible or dur < n
      @dur -= 1
    end
    #------------------------------------------------------------------------
    # 耐久度修复
    #------------------------------------------------------------------------
    def repair
      return false if dur.nil?
      if dur < maxdur and maxdur > 0
        @maxdur -= MaxDur_Dec if @maxdur - @dur > MaxDur_Dec
        @dur = @maxdur
        return true
      else
        return false
      end
    end
    #------------------------------------------------------------------------
    # 耐久度全修复
    #------------------------------------------------------------------------
    def hyper_repair
      return false if dur.nil?
      max = read_note('耐久度').to_i
      if dur < max and max > 0
        @dur = @maxdur = max
        return true
      else
        return false
      end
    end
    #------------------------------------------------------------------------
    # 攻击力
    #------------------------------------------------------------------------
    def atk
      return @atk if dur.nil?
      return dur > 0 ? @atk : 0  
    end
    #------------------------------------------------------------------------
    # 防御力
    #------------------------------------------------------------------------
    def def
      return @def if dur.nil?
      return dur > 0 ? @def : 0  
    end
    #------------------------------------------------------------------------
    # 魔力
    #------------------------------------------------------------------------
    def spi
      return @SPI if dur.nil?
      return dur > 0 ? @SPI : 0  
    end
    #------------------------------------------------------------------------
    # 敏捷
    #------------------------------------------------------------------------
    def agi
      return @agi if dur.nil?
      return dur > 0 ? @agi : 0  
    end
  end
end

module RPG
  class Armor < BaseItem
    include Game_Equip
    #------------------------------------------------------------------------
    # 附加属性
    #------------------------------------------------------------------------
    attr_accessor :base_id
    attr_reader   :maxdur
    attr_reader   :dur
    attr_reader   :indesctructible
    #------------------------------------------------------------------------
    # 是否无耐久度
    #------------------------------------------------------------------------
    def nodur
      return NoDur.include? kind
    end
    #------------------------------------------------------------------------
    # 是否被破坏
    #------------------------------------------------------------------------
    def broken?
      return false if dur.nil?
      return true if dur.zero?
    end
    #------------------------------------------------------------------------
    # 是否需修复
    #------------------------------------------------------------------------
    def need_repair?(hyper)
      return false if dur.nil?
      return false if hyper.nil?
      max = hyper ? read_note('耐久度').to_i : maxdur
      return true if max > dur
      return false
    end
    #------------------------------------------------------------------------
    # 耐久度初始化
    #------------------------------------------------------------------------
    def inidur
      d = read_note('耐久度').to_i
      if d.zero?
        @indesctructible = true
      else
        @indesctructible = false
        @maxdur = @dur = [d, MaxDur].min
      end
    end
    #------------------------------------------------------------------------
    # 耐久度损耗
    #------------------------------------------------------------------------
    def decdur(n = 1)
      return if @dur.nil?
      n = [n, maxdur].min
      n = 0 if PA::USE_DUR == false       #不使用耐久度时,耐久度不减少
      @dur -= n unless nodur or indesctructible or dur < n
    end
    #------------------------------------------------------------------------
    # 耐久度修复
    #------------------------------------------------------------------------
    def repair
      return false if dur.nil?
      if dur < maxdur and maxdur > 0
        @maxdur -= MaxDur_Dec if @maxdur - @dur > MaxDur_Dec
        @dur = @maxdur
        return true
      else
        return false
      end
    end
    #------------------------------------------------------------------------
    # 耐久度全修复
    #------------------------------------------------------------------------
    def hyper_repair
      return false if dur.nil?
      max = read_note('耐久度').to_i
      if dur < max and max > 0
        @dur = @maxdur = max
        return true
      else
        return false
      end
    end
    #------------------------------------------------------------------------
    # 攻击力
    #------------------------------------------------------------------------
    def atk
      return @atk if dur.nil?
      return dur > 0 ? @atk : 0  
    end
    #------------------------------------------------------------------------
    # 防御力
    #------------------------------------------------------------------------
    def def
      return @def if dur.nil?
      return dur > 0 ? @def : 0  
    end
    #------------------------------------------------------------------------
    # 魔力
    #------------------------------------------------------------------------
    def spi
      return @SPI if dur.nil?
      return dur > 0 ? @spi : 0  
    end
    #------------------------------------------------------------------------
    # 敏捷
    #------------------------------------------------------------------------
    def agi
      return @agi if dur.nil?
      return dur > 0 ? @agi : 0  
    end
    #------------------------------------------------------------------------
    # 闪避率
    #------------------------------------------------------------------------
    def eva
      return @eva if dur.nil?
      return dur > 0 ? @eva : 0  
    end
  end
end

#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 判断是否防御
  #--------------------------------------------------------------------------
  def guarding?
    return @action.guard?
  end
  #--------------------------------------------------------------------------
  # ● 反映伤害
  #     user : 特技以及物品的使用者
  #    调用前先设置 @hp_damage、@mp_damage、@absorbed。
  #--------------------------------------------------------------------------
  def execute_damage(user)
    if @hp_damage > 0           # 伤害为正数
      remove_states_shock       # 受到攻击解除的状态
    end
    self.hp -= @hp_damage
    self.mp -= @mp_damage
    if @absorbed                # 吸收的情况
      user.hp += @hp_damage
      user.mp += @mp_damage
    end
  end
  #--------------------------------------------------------------------------
  # ● 应用普通攻击效果
  #     attacker : 攻击者
  #--------------------------------------------------------------------------
  def attack_effect(attacker)
    clear_action_results
    unless attack_effective?(attacker)
      @skipped = true
      return
    end
    if rand(100) >= calc_hit(attacker)            # 判断命中
      @missed = true
      return
    end
    if rand(100) < calc_eva(attacker)             # 判断回避
      @evaded = true
      return
    end
    make_attack_damage_value(attacker)            # 计算伤害
    execute_damage(attacker)                      # 反映伤害
    if @hp_damage == 0                            # 判断物理攻击无效
      return                                    
    end
    ## 处理耐久度
    set_dur(attacker, self)
    apply_state_changes(attacker)                 # 状态变化
  end
  #--------------------------------------------------------------------------
  # ● 应用特技效果
  #     user  : 特技使用者
  #     skill : 特技
  #--------------------------------------------------------------------------
  def skill_effect(user, skill)
    clear_action_results
    unless skill_effective?(user, skill)
      @skipped = true
      return
    end
    if rand(100) >= calc_hit(user, skill)         # 判断命中
      @missed = true
      return
    end
    if rand(100) < calc_eva(user, skill)          # 判断回避
      @evaded = true
      return
    end
    make_obj_damage_value(user, skill)            # 计算伤害
    make_obj_absorb_effect(user, skill)           # 计算吸收效果
    execute_damage(user)                          # 反映伤害
    if skill.physical_attack and @hp_damage == 0  # 判断物理攻击无效
      return                                    
    end
    ## 处理耐久度
    set_dur(user, self, skill)
    apply_state_changes(skill)                    # 状态变化
  end
  #--------------------------------------------------------------------------
  # ● 应用物品效果
  #     user : 物品使用者
  #     item : 物品
  #--------------------------------------------------------------------------
  def item_effect(user, item)
    clear_action_results
    unless item_effective?(user, item)
      @skipped = true
      return
    end
    if rand(100) >= calc_hit(user, item)          # 判断命中
      @missed = true
      return
    end
    if rand(100) < calc_eva(user, item)           # 判断回避
      @evaded = true
      return
    end
    hp_recovery = calc_hp_recovery(user, item)    # 计算 HP 回复量
    mp_recovery = calc_mp_recovery(user, item)    # 计算 MP 回复量
    make_obj_damage_value(user, item)             # 计算伤害
    @hp_damage -= hp_recovery                     # 减去 HP 回复量
    @mp_damage -= mp_recovery                     # 减去 MP 回复量
    make_obj_absorb_effect(user, item)            # 计算吸收效果
    execute_damage(user)                          # 反映伤害
    item_growth_effect(user, item)                # 应用成长效果
    if item.physical_attack and @hp_damage == 0   # 判断物理攻击无效
      return                                    
    end
    ## 处理耐久度
    set_dur(user, self, item)
    apply_state_changes(item)                     # 状态变化
  end
  #--------------------------------------------------------------------------
  # ● 处理耐久度
  #--------------------------------------------------------------------------
  def set_dur(attacker, defender, obj = nil)
    ## 补血时返回
    return if @hp_damage < 0
    atk_f = obj.nil? ? 1.0 : obj.atk_f / 100.0
    w = defender.def / 999.0 * atk_f
    a = attacker.atk / 999.0 * atk_f
    w = [[w, Game_Equip::Dur_BaseDec[0]].max, Game_Equip::Dur_BaseDec[1]].min
    a = [[a, Game_Equip::Dur_BaseDec[0]].max, Game_Equip::Dur_BaseDec[1]].min
    if attacker.actor? and 0.8 > rand
      weapons = attacker.weapons.compact
      return if weapons.empty?
      weapons[rand weapons.size].decdur
    end
    if defender.actor? and 0.8 > rand
      armors = defender.armors.compact
      return if armors.empty?
      armors[rand armors.size].decdur
    end
  end
end

#==============================================================================
# ■ Window_ScrRepair
#==============================================================================
class Window_ScrRepair < Window_Item
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #     x      : 窗口的 X 坐标
  #     y      : 窗口的 Y 坐标
  #     width  : 窗口的宽
  #     height : 窗口的高
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height, hyper_repair)
    super(x, y, width, height)
    @column_max = 1
    self.index = 0
    @hyper_repair = hyper_repair
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 列表中包含的物品
  #     item : 物品
  #--------------------------------------------------------------------------
  def include?(item)
    return true if item == nil
    return false if item.is_a? RPG::Armor and item.base_id == PA::CRYSTAL
    return true if item.is_a? RPG::Weapon and item.need_repair?(@hyper_repair)
    return true if item.is_a? RPG::Armor and item.need_repair?(@hyper_repair)
    return false
  end
  #--------------------------------------------------------------------------
  # ● 是否可以使用物品
  #     item : 物品
  #--------------------------------------------------------------------------
  def enable?(item)
    return true
  end
end

#==============================================================================
# ■ Window_DestRepair #equip add clear items
#==============================================================================
class Window_DestRepair < Window_Base
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :equips
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #     x      : 窗口的 X 坐标
  #     y      : 窗口的 Y 坐标
  #     width  : 窗口的宽
  #     height : 窗口的高
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super(x, y, width, height)
    clear
  end
  #--------------------------------------------------------------------------
  # ● 添加物品
  #--------------------------------------------------------------------------
  def add(item)
    return if item.nil?
    $game_party.lose_item(item, 1)
    @equips << item
    @Index += 1
    draw_item(item)
  end
  #--------------------------------------------------------------------------
  # ● 清除物品
  #--------------------------------------------------------------------------
  def clear
    @equips = []
    @Index = 0
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0,0,self.contents.width-16,WLH,"请放入需修复的装备:")
  end
  #--------------------------------------------------------------------------
  # ● 归还物品
  #--------------------------------------------------------------------------
  def revert
    $game_party.gain_item(@equip, 1)
    @equips.each{|i| $game_party.gain_item(i, 1)}
    clear
  end
  #--------------------------------------------------------------------------
  # ● 描绘项目
  #--------------------------------------------------------------------------
  def draw_item(item)
    rect = Rect.new(4,WLH*@index,self.contents.width-8, WLH)
    if item != nil
      draw_item_name(item, rect.x, rect.y)
      self.contents.draw_text(rect, sprintf(":%2d", 1), 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新帮助文本
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(item == nil ? "" : item.description)
  end
end

#==============================================================================
# ■ Scene_Repair
#==============================================================================
class Scene_Repair < Scene_Base
  include Game_Equip
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #     menu_index : 指令光标初期位置
  #--------------------------------------------------------------------------
  def initialize(hyper_repair = false)
    @hyper_repair = hyper_repair
  end
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    create_command_window
    @name_window = Window_Base.new(0,0,128,56)
    if @hyper_repair == true
      @name_window.contents.draw_text(4,0,544,24,"特殊修理",0)
    else
      @name_window.contents.draw_text(4,0,544,24,"普通修理",0)
    end  
    @help_window = Window_Process_Help.new
    @help_window.contents.draw_text(0,0,352,24,"请选择需要修复的装备,按W确定。", 0)
    @help_window.visible = true
    @scrhelp_window = Window_Help.new
    @gold_window = Window_Gold.new(384, 0)
    @gold_need_window = Window_Gold_Need.new
    @gold_need_window.set_text(0)
    @scr_window = Window_ScrRepair.new(0,112,272,304,@hyper_repair)
    @scr_window.active = true
    @scr_window.help_window = @scrhelp_window
    @dest_window = Window_DestRepair.new(272,112,272,304-56)
    @result_window = Window_Base.new(80,56,384,80)
    @result_window.active = false
    @result_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 结束处理
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    dispose_command_window
    @name_window.dispose
    @gold_need_window.dispose
    @help_window.dispose
    @scrhelp_window.dispose
    @gold_window.dispose
    @scr_window.dispose
    @dest_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    if @command_window.active
      @scr_window.contents_opacity = 128
      @command_window.contents_opacity = 255
      update_command_selection
    elsif @scr_window.active
      @scr_window.contents_opacity = 255
      @command_window.contents_opacity = 128
      update_item_selection
    elsif @result_window.active
      update_result_window
    end
    @command_window.update
    @gold_window.update
    @scr_window.update
    @dest_window.update
    @help_window.update
    @scrhelp_window.update
  end
  #--------------------------------------------------------------------------
  # ● 生成指令窗口
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = "修理"
    s2 = "退出"
    @command_window = Window_Command.new(256, [s1, s2], 4, 0, 8)
    @command_window.x = 128
    @command_window.active = false
    @command_window.contents_opacity = 128
  end
  #--------------------------------------------------------------------------
  # ● 释放指令窗口
  #--------------------------------------------------------------------------
  def dispose_command_window
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 是否满足修复装备条件?
  #--------------------------------------------------------------------------
  def repairable?(equips)
    return false if equips.empty?
    price = 0
    equips.each{|e| price += e.price*Game_Equip::Dur_Price*e.dur/e.maxdur}
    return false if $game_party.gold < evaluate_price
    ## 扣钱
    $game_party.lose_gold(evaluate_price)
    ## 修复
    equips.each{|e| @hyper_repair ? e.hyper_repair : e.repair}
    return true
  end
  #--------------------------------------------------------------------------
  # ● 显示结果(包括处理金钱物品)
  #--------------------------------------------------------------------------
  def show_result
    @result_window.active = true
    @result_window.visible = true
    if @dest_window.equips.empty?
      @result_window.contents.clear
      @result_window.contents.draw_text(0,0,352,24,"请放入装备!", 1)
      return
    end
    if repairable?(@dest_window.equips)
      @result_window.contents.clear
      @result_window.contents.draw_text(0,0,352,24,"指定装备已被修复!", 1)
      @dest_window.revert
      Sound.play_shop
      @gold_window.refresh
      @gold_need_window.set_text(0)
    else
      @result_window.contents.clear
      @result_window.contents.draw_text(0,0,352,24,"金钱不足,无法修复!", 1)
      @dest_window.revert
      Sound.play_actor_collapse
      @gold_window.refresh
      @gold_need_window.set_text(0)
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新帮助文本
  #--------------------------------------------------------------------------
  def update_help(text)
    @help_window.set_text2(text)
  end  
  #--------------------------------------------------------------------------
  # ● 更新指令窗口
  #--------------------------------------------------------------------------
  def update_command_selection
    case @command_window.index
    when 0
      update_help("确定键开始修复装备")
    when 1
      update_help("退出修复界面")
    end
    if Input.trigger?(Input::B)
      ## 重来
      Sound.play_cancel
      @scr_window.active = true
      @command_window.active = false
    elsif Input.trigger?(Input::C)
      case @command_window.index
      when 0  # 修复
        Sound.play_decision
        @command_window.active = false
        @scr_window.active = false
        ######### 显示修复结果,归还物品
        show_result
      when 1  # 退出
        Sound.play_decision
        @dest_window.revert
        $scene = Scene_Map.new
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新选择物品
  #--------------------------------------------------------------------------
  def update_item_selection
    if Input.trigger?(Input::R)
      Sound.play_decision
      @command_window.active = true
      @scr_window.active = false
      return
    end
    if Input.trigger?(Input::B) or Input.trigger?(Input::L)
      Sound.play_cancel
      if @dest_window.equips == []
        @dest_window.revert
        $scene = Scene_Map.new
        return
      end  
      @dest_window.revert
      @scr_window.refresh
      @scr_window.active = true
      @help_window.contents.clear
      @help_window.contents.draw_text(0,0,352,24,"请选择需要修复的装备,按W确定。", 0)
    end  
    if Input.trigger?(Input::C)
      @item = @scr_window.item
      number = $game_party.item_number(@item)
      if @item == nil or number == 0
        Sound.play_buzzer
      else
        Sound.play_shop
        @dest_window.add(@scr_window.item)
        @scr_window.refresh
        @gold_need_window.set_text(evaluate_price)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 修理估价
  #--------------------------------------------------------------------------
  def evaluate_price
    price = 0
    @dest_window.equips.each{|e| price += e.price*Game_Equip::Dur_Price*e.dur/e.maxdur }
    price = price.round  
    return (@hyper_repair == true ? (5 * price) : (1 * price))
  end  
  #--------------------------------------------------------------------------
  # ● 更新结果窗体
  #--------------------------------------------------------------------------
  def update_result_window
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      Sound.play_decision
      @scr_window.refresh
      @scr_window.active = true
      @result_window.active = false
      @result_window.visible = false
    end
  end
end
[/pre]这个脚本有两个需要君解决的问题:
01 怎么让耐久度为零后耐久度不再下降( 原来:居然还有负的)
02 耐久度剩得越少怎么让修复的钱越多( 原来:耐久度剩的越少花钱居然越少,(负数)时居然倒贴钱)
谁能帮忙解决以上问题   感激不尽   

评分

参与人数 1星屑 -20 收起 理由
丿梁丶小柒 -20 你用的标题不对啊!!

查看全部评分

梦石
0
星屑
214
在线时间
66 小时
注册时间
2014-1-23
回帖
31
 楼主| 发表于 2014-2-28 18:37:03 | 显示全部楼层

脚本高手帮帮忙。

  1. #==============================================================================
  2. # 装备耐久度 by 沉影不器
  3. # protosssonny修改版
  4. #------------------------------------------------------------------------------
  5. # ① 自定义各个装备耐久度上限
  6. # ② 允许显示"无法破坏"的装备,允许忽略耐久度的装备(如:戒指等装饰类)
  7. # ③ 物理攻击消耗武器耐久度,被打消耗防具耐久度
  8. #    攻击越高,对方防具减耐久度的机率越大,防御越高,对方武器减耐久度的机率越大
  9. # ④ 装备耐久度降为 0 时装备即损坏,该装备能力消失,提供修复耐久度的功能
  10. # ⑤ 修复装备时耐久度上限也会下降,提供同时修复耐久度和上限的功能
  11. # ⑥ 装备卖出价格随耐久度打折
  12. #==============================================================================
  13. module Game_Equip
  14.   ## 耐久度上限(指所有装备耐久度上限不可超过的值)
  15.   MaxDur = 999
  16.   # 忽略耐久度的防具类型(0:盾 1:头盔 2:衣服 3:装饰 4:武器)
  17.   #   非忽略耐久度 且未定义耐久度,则被认为"无法破坏"
  18.   NoDur = [3]
  19.   # 降低耐久度的基本机率最小值和最大值(大于0小于1)
  20.   Dur_BaseDec = [0.25, 0.75]
  21.   # 修复装备时耐久度上限减少量
  22.   MaxDur_Dec = 1
  23.   # 装备耐久度剩余多少比值(0到1)时提示
  24.   Show_If_Lower = 0.5
  25.   # 损坏时装备显示颜色
  26.   BrokenColor = Color.new(255,0,0)
  27.   # 耐久度占总价格比值(0到1)
  28.   Dur_Price = 0.7
  29. end

  30. module RPG
  31.   class BaseItem
  32.     #------------------------------------------------------------------------
  33.     # 是否被破坏
  34.     #------------------------------------------------------------------------
  35.     def broken?
  36.       return false
  37.     end
  38.   end
  39. end

  40. module RPG
  41.   class Weapon < BaseItem
  42.     include Game_Equip
  43.     #------------------------------------------------------------------------
  44.     # 附加属性
  45.     #------------------------------------------------------------------------
  46.     attr_accessor :base_id
  47.     attr_reader   :maxdur
  48.     attr_reader   :dur
  49.     attr_reader   :indesctructible
  50.     #------------------------------------------------------------------------
  51.     # 是否无耐久度
  52.     #------------------------------------------------------------------------
  53.     def nodur
  54.       return NoDur.include? 4
  55.     end
  56.     #------------------------------------------------------------------------
  57.     # 是否被破坏
  58.     #------------------------------------------------------------------------
  59.     def broken?
  60.       return false if dur.nil?
  61.       return true if dur.zero?
  62.     end
  63.     #------------------------------------------------------------------------
  64.     # 是否需修复
  65.     #------------------------------------------------------------------------
  66.     def need_repair?(hyper)
  67.       return false if dur.nil?
  68.       return false if hyper.nil?
  69.       max = hyper ? read_note('耐久度').to_i : maxdur
  70.       return true if max > dur
  71.       return false
  72.     end
  73.     #------------------------------------------------------------------------
  74.     # 耐久度初始化
  75.     #------------------------------------------------------------------------
  76.     def inidur
  77.       d = read_note('耐久度').to_i
  78.       if d.zero?
  79.         @indesctructible = true
  80.       else
  81.         @indesctructible = false
  82.         @maxdur = @dur = [d, MaxDur].min
  83.       end
  84.     end
  85.     #------------------------------------------------------------------------
  86.     # 耐久度损耗
  87.     #------------------------------------------------------------------------
  88.     def decdur(n = 1)
  89.       return if @dur.nil?
  90.       n = [n, maxdur].min
  91.       @dur -= n unless nodur or indesctructible or dur < n
  92.       @dur -= 1
  93.     end
  94.     #------------------------------------------------------------------------
  95.     # 耐久度修复
  96.     #------------------------------------------------------------------------
  97.     def repair
  98.       return false if dur.nil?
  99.       if dur < maxdur and maxdur > 0
  100.         @maxdur -= MaxDur_Dec if @maxdur - @dur > MaxDur_Dec
  101.         @dur = @maxdur
  102.         return true
  103.       else
  104.         return false
  105.       end
  106.     end
  107.     #------------------------------------------------------------------------
  108.     # 耐久度全修复
  109.     #------------------------------------------------------------------------
  110.     def hyper_repair
  111.       return false if dur.nil?
  112.       max = read_note('耐久度').to_i
  113.       if dur < max and max > 0
  114.         @dur = @maxdur = max
  115.         return true
  116.       else
  117.         return false
  118.       end
  119.     end
  120.     #------------------------------------------------------------------------
  121.     # 攻击力
  122.     #------------------------------------------------------------------------
  123.     def atk
  124.       return [url=home.php?mod=space&uid=101599]@atk[/url] if dur.nil?
  125.       return dur > 0 ? @atk : 0  
  126.     end
  127.     #------------------------------------------------------------------------
  128.     # 防御力
  129.     #------------------------------------------------------------------------
  130.     def def
  131.       return @def if dur.nil?
  132.       return dur > 0 ? @def : 0  
  133.     end
  134.     #------------------------------------------------------------------------
  135.     # 魔力
  136.     #------------------------------------------------------------------------
  137.     def spi
  138.       return [url=home.php?mod=space&uid=87501]@SPI[/url] if dur.nil?
  139.       return dur > 0 ? @spi : 0  
  140.     end
  141.     #------------------------------------------------------------------------
  142.     # 敏捷
  143.     #------------------------------------------------------------------------
  144.     def agi
  145.       return [url=home.php?mod=space&uid=6136]@agi[/url] if dur.nil?
  146.       return dur > 0 ? @agi : 0  
  147.     end
  148.   end
  149. end

  150. module RPG
  151.   class Armor < BaseItem
  152.     include Game_Equip
  153.     #------------------------------------------------------------------------
  154.     # 附加属性
  155.     #------------------------------------------------------------------------
  156.     attr_accessor :base_id
  157.     attr_reader   :maxdur
  158.     attr_reader   :dur
  159.     attr_reader   :indesctructible
  160.     #------------------------------------------------------------------------
  161.     # 是否无耐久度
  162.     #------------------------------------------------------------------------
  163.     def nodur
  164.       return NoDur.include? kind
  165.     end
  166.     #------------------------------------------------------------------------
  167.     # 是否被破坏
  168.     #------------------------------------------------------------------------
  169.     def broken?
  170.       return false if dur.nil?
  171.       return true if dur.zero?
  172.     end
  173.     #------------------------------------------------------------------------
  174.     # 是否需修复
  175.     #------------------------------------------------------------------------
  176.     def need_repair?(hyper)
  177.       return false if dur.nil?
  178.       return false if hyper.nil?
  179.       max = hyper ? read_note('耐久度').to_i : maxdur
  180.       return true if max > dur
  181.       return false
  182.     end
  183.     #------------------------------------------------------------------------
  184.     # 耐久度初始化
  185.     #------------------------------------------------------------------------
  186.     def inidur
  187.       d = read_note('耐久度').to_i
  188.       if d.zero?
  189.         @indesctructible = true
  190.       else
  191.         @indesctructible = false
  192.         @maxdur = @dur = [d, MaxDur].min
  193.       end
  194.     end
  195.     #------------------------------------------------------------------------
  196.     # 耐久度损耗
  197.     #------------------------------------------------------------------------
  198.     def decdur(n = 1)
  199.       return if @dur.nil?
  200.       n = [n, maxdur].min
  201.       n = 0 if PA::USE_DUR == false       #不使用耐久度时,耐久度不减少
  202.       @dur -= n unless nodur or indesctructible or dur < n
  203.     end
  204.     #------------------------------------------------------------------------
  205.     # 耐久度修复
  206.     #------------------------------------------------------------------------
  207.     def repair
  208.       return false if dur.nil?
  209.       if dur < maxdur and maxdur > 0
  210.         @maxdur -= MaxDur_Dec if @maxdur - @dur > MaxDur_Dec
  211.         @dur = @maxdur
  212.         return true
  213.       else
  214.         return false
  215.       end
  216.     end
  217.     #------------------------------------------------------------------------
  218.     # 耐久度全修复
  219.     #------------------------------------------------------------------------
  220.     def hyper_repair
  221.       return false if dur.nil?
  222.       max = read_note('耐久度').to_i
  223.       if dur < max and max > 0
  224.         @dur = @maxdur = max
  225.         return true
  226.       else
  227.         return false
  228.       end
  229.     end
  230.     #------------------------------------------------------------------------
  231.     # 攻击力
  232.     #------------------------------------------------------------------------
  233.     def atk
  234.       return @atk if dur.nil?
  235.       return dur > 0 ? @atk : 0  
  236.     end
  237.     #------------------------------------------------------------------------
  238.     # 防御力
  239.     #------------------------------------------------------------------------
  240.     def def
  241.       return @def if dur.nil?
  242.       return dur > 0 ? @def : 0  
  243.     end
  244.     #------------------------------------------------------------------------
  245.     # 魔力
  246.     #------------------------------------------------------------------------
  247.     def spi
  248.       return @spi if dur.nil?
  249.       return dur > 0 ? @spi : 0  
  250.     end
  251.     #------------------------------------------------------------------------
  252.     # 敏捷
  253.     #------------------------------------------------------------------------
  254.     def agi
  255.       return @agi if dur.nil?
  256.       return dur > 0 ? @agi : 0  
  257.     end
  258.     #------------------------------------------------------------------------
  259.     # 闪避率
  260.     #------------------------------------------------------------------------
  261.     def eva
  262.       return [url=home.php?mod=space&uid=284635]@eva[/url] if dur.nil?
  263.       return dur > 0 ? @eva : 0  
  264.     end
  265.   end
  266. end

  267. #==============================================================================
  268. # ■ Game_Battler
  269. #==============================================================================
  270. class Game_Battler
  271.   #--------------------------------------------------------------------------
  272.   # ● 判断是否防御
  273.   #--------------------------------------------------------------------------
  274.   def guarding?
  275.     return @action.guard?
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● 反映伤害
  279.   #     user : 特技以及物品的使用者
  280.   #    调用前先设置 @hp_damage、@mp_damage、@absorbed。
  281.   #--------------------------------------------------------------------------
  282.   def execute_damage(user)
  283.     if @hp_damage > 0           # 伤害为正数
  284.       remove_states_shock       # 受到攻击解除的状态
  285.     end
  286.     self.hp -= @hp_damage
  287.     self.mp -= @mp_damage
  288.     if @absorbed                # 吸收的情况
  289.       user.hp += @hp_damage
  290.       user.mp += @mp_damage
  291.     end
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ● 应用普通攻击效果
  295.   #     attacker : 攻击者
  296.   #--------------------------------------------------------------------------
  297.   def attack_effect(attacker)
  298.     clear_action_results
  299.     unless attack_effective?(attacker)
  300.       @skipped = true
  301.       return
  302.     end
  303.     if rand(100) >= calc_hit(attacker)            # 判断命中
  304.       @missed = true
  305.       return
  306.     end
  307.     if rand(100) < calc_eva(attacker)             # 判断回避
  308.       @evaded = true
  309.       return
  310.     end
  311.     make_attack_damage_value(attacker)            # 计算伤害
  312.     execute_damage(attacker)                      # 反映伤害
  313.     if @hp_damage == 0                            # 判断物理攻击无效
  314.       return                                    
  315.     end
  316.     ## 处理耐久度
  317.     set_dur(attacker, self)
  318.     apply_state_changes(attacker)                 # 状态变化
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 应用特技效果
  322.   #     user  : 特技使用者
  323.   #     skill : 特技
  324.   #--------------------------------------------------------------------------
  325.   def skill_effect(user, skill)
  326.     clear_action_results
  327.     unless skill_effective?(user, skill)
  328.       @skipped = true
  329.       return
  330.     end
  331.     if rand(100) >= calc_hit(user, skill)         # 判断命中
  332.       @missed = true
  333.       return
  334.     end
  335.     if rand(100) < calc_eva(user, skill)          # 判断回避
  336.       @evaded = true
  337.       return
  338.     end
  339.     make_obj_damage_value(user, skill)            # 计算伤害
  340.     make_obj_absorb_effect(user, skill)           # 计算吸收效果
  341.     execute_damage(user)                          # 反映伤害
  342.     if skill.physical_attack and @hp_damage == 0  # 判断物理攻击无效
  343.       return                                    
  344.     end
  345.     ## 处理耐久度
  346.     set_dur(user, self, skill)
  347.     apply_state_changes(skill)                    # 状态变化
  348.   end
  349.   #--------------------------------------------------------------------------
  350.   # ● 应用物品效果
  351.   #     user : 物品使用者
  352.   #     item : 物品
  353.   #--------------------------------------------------------------------------
  354.   def item_effect(user, item)
  355.     clear_action_results
  356.     unless item_effective?(user, item)
  357.       @skipped = true
  358.       return
  359.     end
  360.     if rand(100) >= calc_hit(user, item)          # 判断命中
  361.       @missed = true
  362.       return
  363.     end
  364.     if rand(100) < calc_eva(user, item)           # 判断回避
  365.       @evaded = true
  366.       return
  367.     end
  368.     hp_recovery = calc_hp_recovery(user, item)    # 计算 HP 回复量
  369.     mp_recovery = calc_mp_recovery(user, item)    # 计算 MP 回复量
  370.     make_obj_damage_value(user, item)             # 计算伤害
  371.     @hp_damage -= hp_recovery                     # 减去 HP 回复量
  372.     @mp_damage -= mp_recovery                     # 减去 MP 回复量
  373.     make_obj_absorb_effect(user, item)            # 计算吸收效果
  374.     execute_damage(user)                          # 反映伤害
  375.     item_growth_effect(user, item)                # 应用成长效果
  376.     if item.physical_attack and @hp_damage == 0   # 判断物理攻击无效
  377.       return                                    
  378.     end
  379.     ## 处理耐久度
  380.     set_dur(user, self, item)
  381.     apply_state_changes(item)                     # 状态变化
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ● 处理耐久度
  385.   #--------------------------------------------------------------------------
  386.   def set_dur(attacker, defender, obj = nil)
  387.     ## 补血时返回
  388.     return if @hp_damage < 0
  389.     atk_f = obj.nil? ? 1.0 : obj.atk_f / 100.0
  390.     w = defender.def / 999.0 * atk_f
  391.     a = attacker.atk / 999.0 * atk_f
  392.     w = [[w, Game_Equip::Dur_BaseDec[0]].max, Game_Equip::Dur_BaseDec[1]].min
  393.     a = [[a, Game_Equip::Dur_BaseDec[0]].max, Game_Equip::Dur_BaseDec[1]].min
  394.     if attacker.actor? and 0.8 > rand
  395.       weapons = attacker.weapons.compact
  396.       return if weapons.empty?
  397.       weapons[rand weapons.size].decdur
  398.     end
  399.     if defender.actor? and 0.8 > rand
  400.       armors = defender.armors.compact
  401.       return if armors.empty?
  402.       armors[rand armors.size].decdur
  403.     end
  404.   end
  405. end

  406. #==============================================================================
  407. # ■ Window_ScrRepair
  408. #==============================================================================
  409. class Window_ScrRepair < Window_Item
  410.   #--------------------------------------------------------------------------
  411.   # ● 初始化对象
  412.   #     x      : 窗口的 X 坐标
  413.   #     y      : 窗口的 Y 坐标
  414.   #     width  : 窗口的宽
  415.   #     height : 窗口的高
  416.   #--------------------------------------------------------------------------
  417.   def initialize(x, y, width, height, hyper_repair)
  418.     super(x, y, width, height)
  419.     @column_max = 1
  420.     self.index = 0
  421.     @hyper_repair = hyper_repair
  422.     refresh
  423.   end
  424.   #--------------------------------------------------------------------------
  425.   # ● 列表中包含的物品
  426.   #     item : 物品
  427.   #--------------------------------------------------------------------------
  428.   def include?(item)
  429.     return true if item == nil
  430.     return false if item.is_a? RPG::Armor and item.base_id == PA::CRYSTAL
  431.     return true if item.is_a? RPG::Weapon and item.need_repair?(@hyper_repair)
  432.     return true if item.is_a? RPG::Armor and item.need_repair?(@hyper_repair)
  433.     return false
  434.   end
  435.   #--------------------------------------------------------------------------
  436.   # ● 是否可以使用物品
  437.   #     item : 物品
  438.   #--------------------------------------------------------------------------
  439.   def enable?(item)
  440.     return true
  441.   end
  442. end

  443. #==============================================================================
  444. # ■ Window_DestRepair #equip add clear items
  445. #==============================================================================
  446. class Window_DestRepair < Window_Base
  447.   #--------------------------------------------------------------------------
  448.   # ● 定义实例变量
  449.   #--------------------------------------------------------------------------
  450.   attr_reader   :equips
  451.   #--------------------------------------------------------------------------
  452.   # ● 初始化对象
  453.   #     x      : 窗口的 X 坐标
  454.   #     y      : 窗口的 Y 坐标
  455.   #     width  : 窗口的宽
  456.   #     height : 窗口的高
  457.   #--------------------------------------------------------------------------
  458.   def initialize(x, y, width, height)
  459.     super(x, y, width, height)
  460.     clear
  461.   end
  462.   #--------------------------------------------------------------------------
  463.   # ● 添加物品
  464.   #--------------------------------------------------------------------------
  465.   def add(item)
  466.     return if item.nil?
  467.     $game_party.lose_item(item, 1)
  468.     @equips << item
  469.     [url=home.php?mod=space&uid=370741]@Index[/url] += 1
  470.     draw_item(item)
  471.   end
  472.   #--------------------------------------------------------------------------
  473.   # ● 清除物品
  474.   #--------------------------------------------------------------------------
  475.   def clear
  476.     @equips = []
  477.     @index = 0
  478.     self.contents.clear
  479.     self.contents.font.color = system_color
  480.     self.contents.draw_text(0,0,self.contents.width-16,WLH,"请放入需修复的装备:")
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ● 归还物品
  484.   #--------------------------------------------------------------------------
  485.   def revert
  486.     $game_party.gain_item(@equip, 1)
  487.     @equips.each{|i| $game_party.gain_item(i, 1)}
  488.     clear
  489.   end
  490.   #--------------------------------------------------------------------------
  491.   # ● 描绘项目
  492.   #--------------------------------------------------------------------------
  493.   def draw_item(item)
  494.     rect = Rect.new(4,WLH*@index,self.contents.width-8, WLH)
  495.     if item != nil
  496.       draw_item_name(item, rect.x, rect.y)
  497.       self.contents.draw_text(rect, sprintf(":%2d", 1), 2)
  498.     end
  499.   end
  500.   #--------------------------------------------------------------------------
  501.   # ● 更新帮助文本
  502.   #--------------------------------------------------------------------------
  503.   def update_help
  504.     @help_window.set_text(item == nil ? "" : item.description)
  505.   end
  506. end

  507. #==============================================================================
  508. # ■ Scene_Repair
  509. #==============================================================================
  510. class Scene_Repair < Scene_Base
  511.   include Game_Equip
  512.   #--------------------------------------------------------------------------
  513.   # ● 初始化对象
  514.   #     menu_index : 指令光标初期位置
  515.   #--------------------------------------------------------------------------
  516.   def initialize(hyper_repair = false)
  517.     @hyper_repair = hyper_repair
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● 开始处理
  521.   #--------------------------------------------------------------------------
  522.   def start
  523.     super
  524.     create_menu_background
  525.     create_command_window
  526.     @name_window = Window_Base.new(0,0,128,56)
  527.     if @hyper_repair == true
  528.       @name_window.contents.draw_text(4,0,544,24,"特殊修理",0)
  529.     else
  530.       @name_window.contents.draw_text(4,0,544,24,"普通修理",0)
  531.     end  
  532.     @help_window = Window_Process_Help.new
  533.     @help_window.contents.draw_text(0,0,352,24,"请选择需要修复的装备,按W确定。", 0)
  534.     @help_window.visible = true
  535.     @scrhelp_window = Window_Help.new
  536.     @gold_window = Window_Gold.new(384, 0)
  537.     @gold_need_window = Window_Gold_Need.new
  538.     @gold_need_window.set_text(0)
  539.     @scr_window = Window_ScrRepair.new(0,112,272,304,@hyper_repair)
  540.     @scr_window.active = true
  541.     @scr_window.help_window = @scrhelp_window
  542.     @dest_window = Window_DestRepair.new(272,112,272,304-56)
  543.     @result_window = Window_Base.new(80,56,384,80)
  544.     @result_window.active = false
  545.     @result_window.visible = false
  546.   end
  547.   #--------------------------------------------------------------------------
  548.   # ● 结束处理
  549.   #--------------------------------------------------------------------------
  550.   def terminate
  551.     super
  552.     dispose_menu_background
  553.     dispose_command_window
  554.     @name_window.dispose
  555.     @gold_need_window.dispose
  556.     @help_window.dispose
  557.     @scrhelp_window.dispose
  558.     @gold_window.dispose
  559.     @scr_window.dispose
  560.     @dest_window.dispose
  561.   end
  562.   #--------------------------------------------------------------------------
  563.   # ● 更新画面
  564.   #--------------------------------------------------------------------------
  565.   def update
  566.     super
  567.     update_menu_background
  568.     if @command_window.active
  569.       @scr_window.contents_opacity = 128
  570.       @command_window.contents_opacity = 255
  571.       update_command_selection
  572.     elsif @scr_window.active
  573.       @scr_window.contents_opacity = 255
  574.       @command_window.contents_opacity = 128
  575.       update_item_selection
  576.     elsif @result_window.active
  577.       update_result_window
  578.     end
  579.     @command_window.update
  580.     @gold_window.update
  581.     @scr_window.update
  582.     @dest_window.update
  583.     @help_window.update
  584.     @scrhelp_window.update
  585.   end
  586.   #--------------------------------------------------------------------------
  587.   # ● 生成指令窗口
  588.   #--------------------------------------------------------------------------
  589.   def create_command_window
  590.     s1 = "修理"
  591.     s2 = "退出"
  592.     @command_window = Window_Command.new(256, [s1, s2], 4, 0, 8)
  593.     @command_window.x = 128
  594.     @command_window.active = false
  595.     @command_window.contents_opacity = 128
  596.   end
  597.   #--------------------------------------------------------------------------
  598.   # ● 释放指令窗口
  599.   #--------------------------------------------------------------------------
  600.   def dispose_command_window
  601.     @command_window.dispose
  602.   end
  603.   #--------------------------------------------------------------------------
  604.   # ● 是否满足修复装备条件?
  605.   #--------------------------------------------------------------------------
  606.   def repairable?(equips)
  607.     return false if equips.empty?
  608.     price = 0
  609.     equips.each{|e| price += e.price*Game_Equip::Dur_Price*e.dur/e.maxdur}
  610.     return false if $game_party.gold < evaluate_price
  611.     ## 扣钱
  612.     $game_party.lose_gold(evaluate_price)
  613.     ## 修复
  614.     equips.each{|e| @hyper_repair ? e.hyper_repair : e.repair}
  615.     return true
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ● 显示结果(包括处理金钱物品)
  619.   #--------------------------------------------------------------------------
  620.   def show_result
  621.     @result_window.active = true
  622.     @result_window.visible = true
  623.     if @dest_window.equips.empty?
  624.       @result_window.contents.clear
  625.       @result_window.contents.draw_text(0,0,352,24,"请放入装备!", 1)
  626.       return
  627.     end
  628.     if repairable?(@dest_window.equips)
  629.       @result_window.contents.clear
  630.       @result_window.contents.draw_text(0,0,352,24,"指定装备已被修复!", 1)
  631.       @dest_window.revert
  632.       Sound.play_shop
  633.       @gold_window.refresh
  634.       @gold_need_window.set_text(0)
  635.     else
  636.       @result_window.contents.clear
  637.       @result_window.contents.draw_text(0,0,352,24,"金钱不足,无法修复!", 1)
  638.       @dest_window.revert
  639.       Sound.play_actor_collapse
  640.       @gold_window.refresh
  641.       @gold_need_window.set_text(0)
  642.     end
  643.   end
  644.   #--------------------------------------------------------------------------
  645.   # ● 更新帮助文本
  646.   #--------------------------------------------------------------------------
  647.   def update_help(text)
  648.     @help_window.set_text2(text)
  649.   end  
  650.   #--------------------------------------------------------------------------
  651.   # ● 更新指令窗口
  652.   #--------------------------------------------------------------------------
  653.   def update_command_selection
  654.     case @command_window.index
  655.     when 0
  656.       update_help("确定键开始修复装备")
  657.     when 1
  658.       update_help("退出修复界面")
  659.     end
  660.     if Input.trigger?(Input::B)
  661.       ## 重来
  662.       Sound.play_cancel
  663.       @scr_window.active = true
  664.       @command_window.active = false
  665.     elsif Input.trigger?(Input::C)
  666.       case @command_window.index
  667.       when 0  # 修复
  668.         Sound.play_decision
  669.         @command_window.active = false
  670.         @scr_window.active = false
  671.         ######### 显示修复结果,归还物品
  672.         show_result
  673.       when 1  # 退出
  674.         Sound.play_decision
  675.         @dest_window.revert
  676.         $scene = Scene_Map.new
  677.       end
  678.     end
  679.   end
  680.   #--------------------------------------------------------------------------
  681.   # ● 更新选择物品
  682.   #--------------------------------------------------------------------------
  683.   def update_item_selection
  684.     if Input.trigger?(Input::R)
  685.       Sound.play_decision
  686.       @command_window.active = true
  687.       @scr_window.active = false
  688.       return
  689.     end
  690.     if Input.trigger?(Input::B) or Input.trigger?(Input::L)
  691.       Sound.play_cancel
  692.       if @dest_window.equips == []
  693.         @dest_window.revert
  694.         $scene = Scene_Map.new
  695.         return
  696.       end  
  697.       @dest_window.revert
  698.       @scr_window.refresh
  699.       @scr_window.active = true
  700.       @help_window.contents.clear
  701.       @help_window.contents.draw_text(0,0,352,24,"请选择需要修复的装备,按W确定。", 0)
  702.     end  
  703.     if Input.trigger?(Input::C)
  704.       @item = @scr_window.item
  705.       number = $game_party.item_number(@item)
  706.       if @item == nil or number == 0
  707.         Sound.play_buzzer
  708.       else
  709.         Sound.play_shop
  710.         @dest_window.add(@scr_window.item)
  711.         @scr_window.refresh
  712.         @gold_need_window.set_text(evaluate_price)
  713.       end
  714.     end
  715.   end
  716.   #--------------------------------------------------------------------------
  717.   # ● 修理估价
  718.   #--------------------------------------------------------------------------
  719.   def evaluate_price
  720.     price = 0
  721.     @dest_window.equips.each{|e| price += e.price*Game_Equip::Dur_Price*e.dur/e.maxdur }
  722.     price = price.round  
  723.     return (@hyper_repair == true ? (5 * price) : (1 * price))
  724.   end  
  725.   #--------------------------------------------------------------------------
  726.   # ● 更新结果窗体
  727.   #--------------------------------------------------------------------------
  728.   def update_result_window
  729.     if Input.trigger?(Input::B) or Input.trigger?(Input::C)
  730.       Sound.play_decision
  731.       @scr_window.refresh
  732.       @scr_window.active = true
  733.       @result_window.active = false
  734.       @result_window.visible = false
  735.     end
  736.   end
  737. end
复制代码
这个脚本有两个需要高手解决的问题:
01 怎么让耐久度为零后耐久度不再下降( 原来:居然还有负的)
02 耐久度剩得越少怎么让修复的钱越多( 原来:耐久度剩的越少花钱居然越少,(负数)时居然倒贴钱)
谁能帮忙解决以上问题   感激不尽  

评分

参与人数 1星屑 -30 收起 理由
铃仙·优昙华院·因幡 -30 意义不明的标题

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部