查看: 2191|回复: 1

[已经解决] 详尽帮助脚本与横版战斗脚本冲突的问题

[复制链接]
梦石
0
星屑
50
在线时间
46 小时
注册时间
2013-10-25
回帖
17
发表于 2013-11-23 19:40:26 | 显示全部楼层 |阅读模式

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

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

×
问题说白了很简单,就是冲突问题。
上一次P叔给了我一个链接,然后我仿照他的办法小修改了一把。
说白了我不是将横版里的set_text改为set_text2的,而是去详尽帮助改的(因为P叔的方法改了无用= =)
测试之后,技能可以显示了,除了上面的显示条疑似右半部分到了屏幕外……
不过更重要的问题是,现在物品资料这一行不能用了。
就是无法像原来一样显示物品的资料了。
下面是我用的脚本
[pre lang="ruby" line="1"]
#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
# 原作:xuelong
# 修正:水迭澜
# 移植:禾西
# protosssonny修改版
#==============================================================================
class Window_Help < Window_Base
  #--------------------------------------------------------------------------
  # ● 定義
  #--------------------------------------------------------------------------
  def set
    @phrase,@y= {}, 0
    @scope, @parameter_type = [], []
   #@name_size = 名字文字大小
   #@size = 描述文字大小
   #@WORD = 每行的描述文字數
    @name_size = 18
    @size = 14
    @word = 11
   
    # 不顯示的 屬性 與 狀態 ID
    @unshow_elements = []
    @unshow_states = []
   
    # 基本文字設定
    @phrase[:price]          = "价格"
    @phrase[:elements]       = "攻击属性"
    @phrase[:states]         = "附加状态"
    @phrase[:guard_elements] = "减半属性"
    @phrase[:guard_states]   = "无效化状态"
    #------------------#
    #   物品效果語句   #
    #------------------#
    @phrase[:recover]      = "恢复"
    @phrase[:hp]           = "HP"
    @phrase[:mp]           = "MP"
    @phrase[:plus_states]  = "状态附加"
    @phrase[:minus_states] = "状态解除"
    @phrase[:speed]        = "速度修正"
    @phrase[:consumable]   = "消耗品"
    @phrase[:base_damage]  = "基本伤害"
    #------------------#
    #   特殊效果語句   #
    #------------------#
    @phrase[:special]          = "附带属性"
    @phrase[:two_handed]       = "双手武器"
    @phrase[:fast_attack]      = "回合内先制"
    @phrase[:dual_attack]      = "连续攻击"
    @phrase[:critical_bonus]   = "频繁暴击"
    @phrase[:prevent_critical] = "防止暴击"
    @phrase[:half_mp_cost]     = "消耗MP减半"
    @phrase[:double_exp_gain]  = "取得经验值2倍"
    @phrase[:auto_hp_recover]  = "HP自动恢复"
    @phrase[:physical_attack]  = "物理攻击"
    @phrase[:damage_to_mp]     = "MP伤害"
    @phrase[:absorb_damage]    = "伤害吸收"
    @phrase[:ignore_defense]   = "不可出售"
    #------------------#
    #   技能描述語句   #
    #------------------#
    @phrase[:recovery] = "恢复力"
    @phrase[:mp_cost]  = "消耗MP"
    @phrase[:hit]      = "命中率"
    #------------------#
    #   效果範圍語句   #
    #------------------#
    @phrase[:scope]    = "效果范围"
    @scope[0]  = "无"
    @scope[1]  = "敌人"
    @scope[2]  = "敌全体"
    @scope[3]  = "敌单体 连续"
    @scope[4]  = "一至二人"
    @scope[5]  = "二至四人"
    @scope[6]  = "四至十人"
    @scope[7]  = "我方单体"
    @scope[8]  = "我方全体"
    @scope[9]  = "我方单个死亡者"
    @scope[10] = "我方所有死亡者"
    @scope[11] = "自己"
    #------------------#
    #   效果範圍語句   #
    #------------------#
    @parameter_type[1] = "MaxHP"
    @parameter_type[2] = "MaxMP"
    @parameter_type[3] = $data_system.terms.atk
    @parameter_type[4] = $data_system.terms.def
    @parameter_type[5] = $data_system.terms.spi
    @parameter_type[6] = $data_system.terms.agi
  end
  
  #--------------------------------------------------------------------------
  # ● 初始化對象
  #--------------------------------------------------------------------------
  def initialize
    super(240,0,544,WLH + 32)
    self.opacity = 200
    self.z = 1500
    self.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 設置文本
  #     data  : 窗口顯示的字符串/物品資料
  #     align : 對齊方式 (0..左對齊、1..中間對齊、2..右對齊)
  #--------------------------------------------------------------------------
  def set_text2(data, align=0)
    #------------------------------------------------------------------------
    # ● 當資料爲文字時候
    #------------------------------------------------------------------------
    if data != @text or align != @align
      if data.is_a?(String)
        draw_string(data,align)
      end
    end
    return if data.is_a?(String)
    #------------------------------------------------------------------------
    # ● 當沒有資料時候
    #------------------------------------------------------------------------
    if data.nil?
      self.visible=false
    else
      self.visible=true
    end
    #------------------------------------------------------------------------
    # ● 當資料爲物品/技能時候
    #------------------------------------------------------------------------
    if data != nil && @data != data
      self.width = 210
      self.height = 430
      self.x=0
      self.y=200
      set
      draw_data(data)
    else
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新帮助窗口
  #--------------------------------------------------------------------------
  def draw_string(data,align)
    self.width = 544        #修正寬度
    self.height = WLH + 32  #修正高度
    self.x = 240            #修正 x 坐標
    self.y = 0              #修正 y 坐標
    @text = data            #記錄文本資料
    @align = align          #記錄對齊方式
    @actor = nil            #清空角色資料
    self.contents = Bitmap.new(width - 32, height - 32) if self.contents.nil?
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.font.size = 20
    self.contents.draw_text(4 , 0, self.width - 40, 28, data, align)
    self.visible = true
  end
  #--------------------------------------------------------------------------
  # ● 更新帮助窗口
  #--------------------------------------------------------------------------
  def draw_data(data=@data)
    self.width = 186        #修正寬度
    self.height = 430       #修正高度
    self.x = 0              #修正 x 坐標
    self.y = 150            #修正 y 坐標
    @data = data            #記錄 data 資料
    case @data
    when RPG::Item
      set_item_text2(@data)
    when RPG::Weapon, RPG::Armor
      set_equipment_text2(@data)
    when RPG::Skill
      set_skill_text2(@data)
    end
  end
  #--------------------------------------------------------------------------
  # ● 修正窗口位置
  #--------------------------------------------------------------------------
  def set_pos(x,y,width,oy,index,column_max)
    cursor_width = width / column_max - 32
    xx = index % column_max * (cursor_width + WLH)
    yy = index / column_max * WLH - oy
    self.x = xx + x + 140
    self.y = yy + y + 35
    if self.x + self.width > 544
      self.x = 544 - self.width
    end
    if self.y + self.height > 416
      self.y = 416 - self.height
    end  
  end

  #------------------------------------------------------------------------
  # ● 文字描繪
  #------------------------------------------------------------------------
  def draw_text(text, increase, move=0)
    @y += increase
    self.contents.font.size = @size
    @special_size = 0 if @special_size == nil
    @first_line = 0 if @first_line == nil
    if @special_size > 0 and not @data.is_a?(RPG::Item)
      if @y >= increase * @first_line
        case @special_size
        when 0
          self.contents.font.color = normal_color
        when 1
          self.contents.font.color = text_color(29)
        when 2
          self.contents.font.color = text_color(1)
        when 3
          self.contents.font.color = text_color(27)
        when 4
          self.contents.font.color = text_color(17)
        when 5
          self.contents.font.color = text_color(30)
        when 6
          self.contents.font.color = text_color(18)
        end
      end
      self.contents.draw_text(0+move, @y*@size+5, text.size*6, @size, text, 0)
    else
      self.contents.font.color = normal_color
      self.contents.draw_text(0+move, @y*@size+5, text.size*6, @size, text, 0)
    end
  end

#-------------------------------------#
# 子方法
#-------------------------------------#
  #--------------------------------------------------------------------------
  # ● 裝備幫助窗口
  #--------------------------------------------------------------------------
  def set_equipment_text2(equipment)
    #------------------------------------------------------------------------
    # ● 取得基本質料
    #------------------------------------------------------------------------
   
    #----------------------------#
    # 取得屬性、狀態、說明之副本 #
    #----------------------------#
    element_set = equipment.element_set.clone
    state_set   = equipment.state_set.clone
    description = equipment.description.clone
    phrase      = @phrase
    #----------------------------#
    # 過濾不顯示的屬性與狀態描述 #
    #----------------------------#
    element_set -= @unshow_elements
    state_set   -= @unshow_states
    #----------------#
    # 初始化數據設定 #
    #----------------#
    x, h, move = 0, 0, 0
    #------------------#
    # 取得特殊效果數據 #
    #------------------#
    special = []
    gifts = equipment.gifts
    gifts = [] if gifts.nil?
     s = [
    "攻击 + ",   "攻击 + ",
    "防御 + ",   "防御 + ",
    "魔力 + ",   "魔力 + ",
    "速度 + ",   "速度 + ",
    "最大HP + ", "最大HP + ",
    "最大MP + ", "最大MP + ",
    "命中率 + ",
    "闪避率 + ",
    "暴击率 + ",
    "所有主要属性 + ",
    "抗魔性 + "
    ]
    for g in gifts
      special << s[g.type].sub(/\[s\]/) {g.value}
    end
    #------------------------------------------------------------------------
    # ● 確定背景圖片的高度
    #------------------------------------------------------------------------
    h += (description.size/3/@word)
    h += 1 if (description.size/3%@word) >= 0
    now_h = h
   
    h += 1                                               #價格
    h += 1                                               #装备等级
    h += 1 unless equipment.nodur or PA::USE_DUR == false#耐久度
    h += 1 if equipment.sockets_num > 0                  #孔数
   
    h += 1 unless equipment.atk.zero?                    #攻擊力
    h += 1 unless equipment.def.zero?                    #防禦力
    h += 1 unless equipment.spi.zero?                    #精神力
    h += 1 unless equipment.agi.zero?                    #敏捷力
   
    h += element_set.size + 1 if element_set.size > 0    #屬性
    h += state_set.size   + 1 if state_set.size   > 0    #狀態
    h += special.size     + 2 if special.size     > 0    #特殊效果
    if special.size > 0
    case special.size
    when 1
      @first_line = h-1
    when 2
      @first_line = h-2
    when 3
      @first_line = h-3
    when 4
      @first_line = h-4
    when 5
      @first_line = h-5
    when 6
      @first_line = h-6
    when 7
      @first_line = h-7
    when 8
      @first_line = h-8
    end
    end
    @special_size = special.size
   
    #------------------------------------------------------------------------
    # ● 圖片顯示保證高度
    #------------------------------------------------------------------------
    #h = 6 + now_h if (h - now_h) < 6
    #------------------------------------------------------------------------
    # ● 換算高度
    #------------------------------------------------------------------------
    self.height = h * @size + @name_size + 36
    #------------------------------------------------------------------------
    # ● 生成背景
    #------------------------------------------------------------------------
    self.contents = Bitmap.new(self.width - 32, self.height - 32)
    self.contents.clear
    #------------------------------------------------------------------------
    # ● 名字描繪
    #------------------------------------------------------------------------
    text = equipment.name
    self.contents.font.size = @name_size
    if text.nil?
      self.visible = false
    else
      self.visible = true
      ###self.contents.draw_text(0, 0, text.size*7, @name_size, text, 0)
      #我加的,用case判断颜色
      unless equipment.is_a?(RPG::Item)
        case gifts.size
         when 1
          self.contents.font.color = text_color(29)
        when 2
          self.contents.font.color = text_color(1)
        when 3
          self.contents.font.color = text_color(27)
        when 4
          self.contents.font.color = text_color(17)
        when 5
          self.contents.font.color = text_color(30)
        when 6
          self.contents.font.color = text_color(18)
        end
      else
        self.contents.font.color = text_color(0)
      end  
      self.contents.draw_text(0, 0, contents.width-4, @name_size, text)
    end
    #------------------------------------------------------------------------
    # ● 說明描繪
    #------------------------------------------------------------------------
    x = 0
    @y += 1
    while ((text = description.slice!(/./m)) != nil)
      self.contents.font.color = normal_color
      self.contents.font.size = @size
      self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
      if words_judge(text) == true
        x += 1
      else
        x += 0.5
      end  
      if x == @word or x == @word - 0.5
        x = 0
        @y += 1
      end
    end
    #------------------------------------------------------------------------
    # ● 圖標描繪
    #------------------------------------------------------------------------
    #bitmap = Cache.system("Iconset")
    #rect = Rect.new(equipment.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
    #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
    #------------------------------------------------------------------------
    # ● 價格描繪
    #------------------------------------------------------------------------
    unless equipment.price.zero?
      text = phrase[:price] + ":" + equipment.price.to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 装备等级描繪
    #------------------------------------------------------------------------
    unless equipment.read_note('装备等级') == nil
      text = "角色等级要求:" + equipment.read_note('装备等级').to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 耐久度
    #------------------------------------------------------------------------
    if PA::USE_DUR == true
      unless equipment.nodur
        unless equipment.indesctructible
          if equipment.maxdur == nil
            text = "耐久度:#{equipment.dur} / #{equipment.read_note('耐久度')}"
          else
            text = "耐久度:#{equipment.dur} / #{equipment.maxdur}"
          end
        else
          text = "耐久度:无法破坏"
        end
        draw_text(text, 1, move)
      end
    end
    #------------------------------------------------------------------------
    # ● 孔数
    #------------------------------------------------------------------------
    if equipment.sockets_num > 0
      text = "剩余孔数:#{equipment.sockets_num}"
      draw_text(text, 1, move)
    end  
    #------------------------------------------------------------------------
    # ● 攻擊力
    #------------------------------------------------------------------------
    unless equipment.atk.zero?
      text = $data_system.terms.atk + ":" + equipment.base_atk.to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 防禦力
    #------------------------------------------------------------------------
    unless equipment.def.zero?
      text = $data_system.terms.def + ":" + equipment.base_def.to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 精神力
    #------------------------------------------------------------------------
    unless equipment.spi.zero?
      text = $data_system.terms.spi + ":" + equipment.base_spi.to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 敏捷力
    #------------------------------------------------------------------------
    unless equipment.agi.zero?
      text = $data_system.terms.agi + ":" + equipment.base_agi.to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 屬性
    #------------------------------------------------------------------------
    if element_set.size > 0
      case equipment
      when RPG::Weapon
        text=phrase[:elements]+":"
      when RPG::Armor
        text=phrase[:guard_elements]+":"
      end
      draw_text(text, 1, move)
      element_set.each do |i|
        text = $data_system.elements
        draw_text(text, 1, move + @size)
      end
    end
    #------------------------------------------------------------------------
    # ● 狀態
    #------------------------------------------------------------------------
    if state_set.size > 0
      case equipment
      when RPG::Weapon
        text=phrase[:states]+":"
      when RPG::Armor
        text=phrase[:guard_states]+":"
      end
      draw_text(text, 1, move)
      state_set.each do |i|
        text = $data_states.name
        draw_text(text, 1, move + @size)
      end
    end
    #------------------------------------------------------------------------
    # ● 特殊效果
    #------------------------------------------------------------------------
    if special.size > 0
      kind_text = ["","","",""]
      weapon_gifts = [0,1,4,5,12,14,15]
      armor0_gifts = [2,3,4,5,10,11,15,16]
      armor1_gifts = [2,3,8,9,15,16]
      armor2_gifts = [2,3,6,7,13,15,16]
      kind_text[0] = " 武器" if  weapon_gifts.include?(equipment.gifts[0].type)
      kind_text[1] = " 盾" if  armor0_gifts.include?(equipment.gifts[0].type)
      kind_text[2] = " 盔" if  armor1_gifts.include?(equipment.gifts[0].type)
      kind_text[3] = " 衣" if  armor2_gifts.include?(equipment.gifts[0].type)
      if equipment.is_a?(RPG::Armor) and equipment.base_id == PA::CRYSTAL
        text = "可注入" + kind_text[0] + kind_text[1] + kind_text[2] + kind_text[3]
        draw_text(text, 1, move)
        special.each {|text| draw_text(text, 1, move + @size)}
      else
        text = phrase[:special]+":"
        draw_text(text, 1, move)
        special.each {|text| draw_text(text, 1, move + @size)}
      end
    end
  end
  
#////////////////////////////////////////////////////////////////////////////
  #--------------------------------------------------------------------------
  # ● 物品幫助窗口
  #--------------------------------------------------------------------------
  def set_item_text2(item)
    #----------------------------#
    # 取得屬性、狀態、說明之副本 #
    #----------------------------#
    description = item.description.clone
    element_set = item.element_set.clone
    plus_state_set = item.plus_state_set.clone
    minus_state_set = item.minus_state_set.clone
    # 過濾不顯示的描述
    element_set -= @unshow_elements
    plus_state_set -= @unshow_states
    minus_state_set -= @unshow_states
    # 初始化數據設定
    x, h, move = 0, 0, 0
    phrase = @phrase
    scope = @scope
    parameter_type = @parameter_type
    occasion = @occasion
    # 基本文字設定

   
    #------------------#
    # 取得特殊效果數據 #
    #------------------#
    special = []
    special << phrase[:physical_attack] if item.physical_attack #物理攻撃
    special << phrase[:damage_to_mp]    if item.damage_to_mp    #MPにダメージ
    special << phrase[:absorb_damage]   if item.absorb_damage   #ダメージを吸収
    special << phrase[:ignore_defense]  if item.ignore_defense  #防御力無視
   
    #------------------------------------------------------------------------
    # ● 確定背景圖片的高度
    #------------------------------------------------------------------------
    h += (description.size/3/@word)
    h += 1 if (description.size/3%@word) >= 0
    now_h = h
   
    h += 2 unless scope[item.scope] == "无" #効果範囲
    h += 1 unless item.price == 0           #價格
    h += 1 if item.consumable               #消耗品
    h += 1 unless item.speed.zero?          #速度補正値
   
    h += 1 unless item.hp_recovery_rate==0 and item.hp_recovery==0 #HP 回復
    h += 1 unless item.mp_recovery_rate==0 and item.mp_recovery==0 #MP 回復
   
    h += 1 unless item.parameter_type.zero? #能力値
    h += 1 unless item.base_damage.zero?    #基本ダメージ
   
    h += element_set.size     + 1 if element_set.size     > 0  #屬性
    h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
    h += minus_state_set.size + 2 if minus_state_set.size > 0  #解除狀態
    h += special.size         + 1 if special.size         > 0  #特殊效果
   
    #------------------------------------------------------------------------
    # ● 圖片顯示保證高度
    #------------------------------------------------------------------------
    #h = 6 + now_h if (h - now_h) < 6
    #------------------------------------------------------------------------
    # ● 換算高度
    #------------------------------------------------------------------------
    self.height = h * @size + @name_size + 36
    #------------------------------------------------------------------------
    # ● 生成背景
    #------------------------------------------------------------------------
    self.contents = Bitmap.new(self.width - 32, self.height - 32)
    self.contents.clear
    #------------------------------------------------------------------------
    # ● 名字描繪
    #------------------------------------------------------------------------
    text = item.name
    self.contents.font.color = normal_color#顔色腳本
    self.contents.font.size = @name_size
    if text.nil?
      self.visible = false
    else
      self.visible = true
      self.contents.draw_text(0,0, text.size*7, 20, text, 0)
    end
    #------------------------------------------------------------------------
    # ● 說明描繪
    #------------------------------------------------------------------------
     x = 0
    @y += 1
    while ((text = description.slice!(/./m)) != nil)
      self.contents.font.color = normal_color
      self.contents.font.size = @size
      self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
      if words_judge(text) == true
        x+=1
      else
        x+=0.5
      end  
      if x == @word or x == @word - 0.5
        x = 0
        @y += 1
      end
    end
    #------------------------------------------------------------------------
    # ● 圖標描繪
    #------------------------------------------------------------------------
    #bitmap = Cache.system("Iconset")
    #rect = Rect.new(item.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
    #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
    #------------------------------------------------------------------------
    # ● 效果範圍
    #------------------------------------------------------------------------
    unless scope[item.scope] == "无"
      text = phrase[:scope] +":"
      draw_text(text, 1, move)
      text = scope[item.scope]
      draw_text(text, 1, move + @size)
    end
    #------------------------------------------------------------------------
    # ● 價格
    #------------------------------------------------------------------------
    unless item.price == 0
      text = phrase[:price] + ":" + item.price.to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 消耗品
    #------------------------------------------------------------------------
    if item.consumable
      text = phrase[:consumable]
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 速度補正値
    #------------------------------------------------------------------------
    unless item.speed.zero?
      text = phrase[:speed]
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● HP回復
    #------------------------------------------------------------------------
    unless item.hp_recovery_rate.zero? and item.hp_recovery.zero?
      if item.hp_recovery_rate > 0 and item.hp_recovery > 0
        text = " + "
      else
        text = ""
      end
      
      unless item.hp_recovery_rate.zero?
        text = item.hp_recovery_rate.to_s + "%" + text
      end
      unless item.hp_recovery.zero?
        text += item.hp_recovery.to_s
      end
      text = phrase[:recover] +":"  + text + phrase[:hp]
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● SP回復
    #------------------------------------------------------------------------
    unless item.mp_recovery_rate.zero? and item.mp_recovery.zero?
      if item.mp_recovery_rate > 0 and item.mp_recovery > 0
        text = " + "
      else
        text = ""
      end
      
      unless item.mp_recovery_rate.zero?
        text = item.mp_recovery_rate.to_s + "%" + text
      end
      unless item.mp_recovery.zero?
        text += item.mp_recovery.to_s
      end
      text = phrase[:recover] +":" + text + phrase[:mp]
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 能力值增加
    #------------------------------------------------------------------------
    unless item.parameter_type.zero?
      text = parameter_type[item.parameter_type]+" +"+item.parameter_points.to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 基本ダメージ
    #------------------------------------------------------------------------
    unless item.base_damage.zero?
      #text = phrase[:base_damage] +":" + item.base_damage.to_s
      text = item.base_damage > 0 ? phrase[:base_damage] +":" + item.base_damage.to_s: phrase[:recovery] +":" + (-item.base_damage).to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 屬性
    #------------------------------------------------------------------------
    if element_set.size > 0
      text = phrase[:elements]+":"
      draw_text(text, 1, move)
      element_set.each do |i|
        text = $data_system.elements
        draw_text(text, 1, move + @size)
      end
    end
    #------------------------------------------------------------------------
    # ● 添加狀態
    #------------------------------------------------------------------------
    unless plus_state_set.empty?
      text = phrase[:plus_states]+":"
      draw_text(text, 1, move)
      plus_state_set.each do |i|
        text = $data_states.name
        draw_text(text, 1, move + @size)
      end
    end
    #------------------------------------------------------------------------
    # ● 解除狀態
    #------------------------------------------------------------------------
    unless minus_state_set.empty?
      text = phrase[:minus_states]+":"
      draw_text(text, 1, move)
      minus_state_set.each do |i|
        text = $data_states.name
        draw_text(text, 1, move + @size)
      end
    end
    #------------------------------------------------------------------------
    # ● 特殊效果
    #------------------------------------------------------------------------
    if special.size > 0
      text = phrase[:special]+":"
      draw_text(text, 1, move)
      special.each {|text| draw_text(text, 1, move + @size)}
    end
  end
#////////////////////////////////////////////////////////////////////////////
  #--------------------------------------------------------------------------
  # ● 技能帮助窗口
  #--------------------------------------------------------------------------
  def set_skill_text2(skill)
    #----------------------------#
    # 取得屬性、狀態、說明之副本 #
    #----------------------------#
    description = skill.description.clone
    element_set = skill.element_set.clone
    plus_state_set = skill.plus_state_set.clone
    minus_state_set = skill.minus_state_set.clone
    # 過濾不顯示的描述
    element_set -= @unshow_elements
    plus_state_set -= @unshow_states
    minus_state_set -= @unshow_states
    # 初始化設定
    x ,h, move = 0, 0, 0
    phrase = @phrase
    scope = @scope
    #------------------#
    # 取得特殊效果數據 #
    #------------------#
    special = []
    special << phrase[:physical_attack] if skill.physical_attack #物理攻撃
    special << phrase[:damage_to_mp]    if skill.damage_to_mp    #MPにダメージ
    special << phrase[:absorb_damage]   if skill.absorb_damage   #ダメージを吸収
    special << phrase[:ignore_defense]  if skill.ignore_defense  #防御力無視
    #------------------------------------------------------------------------
    # ● 確定背景圖片的高度
    #------------------------------------------------------------------------
    h += (description.size/3/@word)
    h += 1 if (description.size/3%@word) >= 0
    now_h = h
   
    h += 4                                  #効果範囲,消費MP,命中率
    h += 1 unless skill.speed.zero?         #速度補正値
    h += 1 unless skill.base_damage.zero?   #基本ダメージ
   
   
   
    h += element_set.size     + 1 if element_set.size     > 0  #屬性
    h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
    h += minus_state_set.size + 1 if minus_state_set.size > 0  #解除狀態
    h += special.size         + 1 if special.size         > 0  #特殊效果
    @special_size = nil
    @first_line = nil
    #------------------------------------------------------------------------
    # ● 換算高度
    #------------------------------------------------------------------------
    self.height=(h + 1) * @size + @name_size + 36  
    self.contents = Bitmap.new(self.width - 32,self.height - 32)
    self.contents.clear
   
    #------------------------------------------------------------------------
    # ● 名字描述
    #------------------------------------------------------------------------
    text = skill.name
    self.contents.font.color = Color.new(255, 255, 128, 255)
    self.contents.font.size = @name_size
    if text!=nil
      self.visible = true
      self.contents.draw_text(0,0, text.size*7, @name_size, text, 0)
    else
      self.visible = false
    end
   
    #------------------------------------------------------------------------
    # ● 說明描述(/\\V\[([0-9]+)\]/i)
    #------------------------------------------------------------------------
    x = 0
    @y += 1
    text = description
    text.gsub!(/\\V\[([0-9]+)\]/i){ $game_variables[$1.to_i] }
    while ((text = description.slice!(/./m)) != nil)
      self.contents.font.color = system_color
      self.contents.font.size = @size
      self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
      if words_judge(text) == true
        x+=1
      else
        x+=0.5
      end  
      if x == @word or x == @word - 0.5
        x = 0
        @y += 1
      end
    end
    #------------------------------------------------------------------------
    # ● 攻擊範圍
    #------------------------------------------------------------------------
    self.contents.font.color = normal_color
    text = phrase[:scope] +":"
    draw_text(text, 1, move)
    text = scope[skill.scope]
    draw_text(text, 1, move + @size)
    #------------------------------------------------------------------------
    # ● 基本ダメージ
    #------------------------------------------------------------------------
    unless skill.base_damage .zero?
      text = skill.base_damage > 0 ? phrase[:base_damage] : phrase[:recovery]
      text += ":" + skill.base_damage.abs.to_s
      draw_text(text, 1, move)
    end
    #------------------------------------------------------------------------
    # ● 消費SP描述
    #------------------------------------------------------------------------
    text = phrase[:mp_cost] +":"+ skill.mp_cost.to_s
    if skill.mp_cost == 0 and skill.base_damage .zero? #被动技能调用
      text = phrase[:mp_cost] +":"+ "无消耗技能"
    end
    draw_text(text, 1, move)
    #------------------------------------------------------------------------
    # ● 命中率描述
    #------------------------------------------------------------------------
    text = phrase[:hit] + ":" + skill.hit.to_s + "%"
    draw_text(text, 1, move)
    #------------------------------------------------------------------------
    # ● 屬性
    #------------------------------------------------------------------------
    if element_set.size > 0
      text = phrase[:elements]+":"
      draw_text(text, 1, move)
      element_set.each do |i|
        text = $data_system.elements
        draw_text(text, 1, move + @size)
      end
    end
    #------------------------------------------------------------------------
    # ● 添加狀態
    #------------------------------------------------------------------------
    unless plus_state_set.empty?
      text = phrase[:plus_states]+":"
      draw_text(text, 1, move)
      plus_state_set.each do |i|
        text = $data_states.name
        draw_text(text, 1, move + @size)
      end
    end
    #------------------------------------------------------------------------
    # ● 解除狀態
    #------------------------------------------------------------------------
    unless minus_state_set.empty?
      text = phrase[:minus_states]+":"
      draw_text(text, 1, move)
      minus_state_set.each do |i|
        text = $data_states.name
        draw_text(text, 1, move + @size)
      end
    end
    #------------------------------------------------------------------------
    # ● 特殊效果
    #------------------------------------------------------------------------
    if special.size > 0
      text = phrase[:special]+":"
      draw_text(text, 1, move)
      special.each {|text| draw_text(text, 1, move + @size)}
    end  
  end
  #------------------------------------------------------------------------
  # ● 文字数字判定
  #------------------------------------------------------------------------
  def words_judge(word)
    case word
    when "0","1","2","3","4","5","6","7","8","9","%",".","A","B","C","D","E",\
      "F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W",\
      "X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",\
      "p","q","r","s","t","u","v","w","x","y","z"
      return false
    end
    return true
  end  
end

#==============================================================================
# ■ Window_Item
#------------------------------------------------------------------------------
#  アイテム画面などで、所持アイテムの一覧を表示するウィンドウです。
#==============================================================================

class Window_Item < Window_Selectable
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text2(item)
    #修正窗口位置
    @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  end
end
#==============================================================================
# ■ Window_Skill
#------------------------------------------------------------------------------
#  スキル画面などで、使用できるスキルの一覧を表示するウィンドウです。
#==============================================================================

class Window_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help   
    @help_window.set_text2(skill)
    if skill != nil
      @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
    else
      @help_window.x = 1000  #没有物品时,让帮助窗口出界而看不见
    end
  end
end
#==============================================================================
# ■ Window_Equip
#------------------------------------------------------------------------------
#  装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
#==============================================================================

class Window_Equip < Window_Selectable
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help   
    @help_window.set_text2(item)
    if item != nil
      @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
    else
      @help_window.x = 1000  #没有物品时,让帮助窗口出界而看不见
    end
  end
end
#==============================================================================
# ■ Window_ShopBuy
#------------------------------------------------------------------------------
#  ショップ画面で、購入できる商品の一覧を表示するウィンドウです。
#==============================================================================
class Window_ShopBuy < Window_Selectable
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help   
    @help_window.set_text2(item)
    if item != nil
      @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
    else
      @help_window.x = 1000  #没有物品时,让帮助窗口出界而看不见
    end
  end
end
[/pre]
这是工程链接:http://pan.baidu.com/s/1w1ean

评分

参与人数 1星屑 +30 收起 理由
铃仙·优昙华院·因幡 + 30 塞糖

查看全部评分

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 2013-11-24 10:37:09 | 显示全部楼层
替换你的脚本文件: Scripts.rar (243.23 KB, 下载次数: 72)
凡是吾改过的地方,均有 # P蜀黍改-帮助窗口 标识,全局搜索这个标识可以找到它们。
温馨提示,替换前请备份你现有的脚本文件,以免发生不测。

评分

参与人数 1星屑 +100 梦石 +1 收起 理由
铃仙·优昙华院·因幡 + 100 + 1 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部