设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

跟随光标移动的帮助窗口插件版(更新)

2008-2-8 12:26| 发布者: Eclair| 查看: 2913| 评论: 0|原作者: 水迭澜|来自: 点此进入发布帖

摘要: #==============================================================================# ■ Window_Help#------------------------------------------------------------------------------#  特技及物品的说明、角色的状态显示的窗口。#  

#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
#  特技及物品的说明、角色的状态显示的窗口。
#   若要更改属性,请搜索element_set={1=>"火",2=>"冰",3=>"光",4=>"暗"} 改成对应属性即可
#==============================================================================

UNSHOW_STATE=[1,2,3,4,5]#记录不显示的状态数组
UNSHOW_ELEMENT=[1,2,3,4,5]#记录不显示的属性数组

class Window_Help < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(150,200, 180, 430)
    self.opacity = 150
    self.z=150
    self.visible = false
    self.contents = Bitmap.new(width - 32, height - 32)
    description=""
    @item=nil
    @armor=nil
    @weapon=nil
  end
  #--------------------------------------------------------------------------
  # ● 设置文本
  #     text  : 窗口显示的字符串
  #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  #--------------------------------------------------------------------------
  def set_text(data, align=nil)
    # 如果文本和对齐方式的至少一方与上次的不同
    if align != nil
        # 再描绘窗口和文本
      self.width = 640
      self.height = 64
      self.x=0
      self.y=0
      self.contents = Bitmap.new(width - 32, height - 32)
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.font.size = 20
      self.contents.draw_text(4, 0, self.width - 48, 32, data, align)
      self.visible = true
      return
    end
    if data == nil
      self.visible=false
      @data = nil
    end
    if data != nil && @data != data
      @data=data
      self.visible=true
      self.width = 180
      self.height = 200
      self.x=180
      self.y=430
      self.contents = Bitmap.new(width - 32, height - 32)
      case @data
      when RPG::Item
        set_item_text(@data)
      when RPG::Weapon
        set_weapon_text(@data)
      when RPG::Armor
        set_armor_text(@data)
      when RPG::Skill
        set_skill_text(@data)
      end
    else
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置敌人
  #     enemy : 要显示名字和状态的敌人
  #--------------------------------------------------------------------------
  def set_enemy(enemy)
    text = enemy.name
    state_text = make_battler_state_text(enemy, 0, false)
    if state_text != ""
      text += "  " + state_text
    end
    set_text(text, 1)
    @data=nil
  end
  #--------------------------------------------------------------------------
  # ● 设置角色
  #     actor : 要显示状态的角色
  #--------------------------------------------------------------------------
  def set_actor(actor)
    if actor != @actor
        self.width = 640
        self.height = 64
        self.x=0
        self.y=0
        self.contents = Bitmap.new(width - 32, height - 32)
        self.contents.clear
        self.contents.font.size=20
        self.contents.font.color = normal_color
      draw_actor_name(actor, 4, 0)
      draw_actor_state(actor, 140, 0)
      draw_actor_hp(actor, 284, 0)
      draw_actor_sp(actor, 460, 0)
      @actor = actor
      @text = nil
      self.visible = true
    end
  end
  #--------------------------------------------------------------------------
  # ● 校正帮助窗口位置
  #--------------------------------------------------------------------------
  def set_pos(x,y,width,oy,index,column_max)
    #光标坐标
    cursor_width = width / column_max - 32
    xx = index % column_max * (cursor_width + 32)
    yy = index / column_max * 32 - oy
    self.x=xx+x+150
    self.y=yy+y+30
    if self.x+self.width>640
      self.x=640-self.width
    end
    if self.y+self.height>480
      self.y=480-self.height
    end 
  end
end

class Window_Help < Window_Base
  #--------------------------------------------------------------------------
  # ● 物品帮助窗口
  #--------------------------------------------------------------------------
  def set_item_text(item)
    @item=item
    description=""
   
[email protected]
    x=0
    y=0
       # 取得屬性、附加狀態、解除狀態之副本
   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_ELEMENT
   plus_state_set -= UNSHOW_STATE
   minus_state_set -= UNSHOW_STATE
    height=1     #依要显示的内容确定高
    #由描叙确定高
    height+=description.size/3/10
    if description.size%10!=0
      height+=1
    end
    height+=3  #空行,效果范围,价格
    if @item.recover_hp_rate!=0 #HP 回复率。
      height+=1
    end  
    if @item.recover_hp!=0 #HP 回复量。
      height+=1
    end
    if @item.recover_sp_rate!=0 #SP 回复率。
      height+=1
    end
    if @item.recover_sp!=0 #SP 回复量。
      height+=1
    end
    if @item.parameter_type!=0 #增加能力值
      height+=1
    end     
    if element_set.empty?!=true  #属性。为属性 ID 的数组
      height+=1
    end
    if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
      height+=plus_state_set.size 
    end
    if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
      height+=minus_state_set.size  
    end    
    self.height=height*15+40+15  
    self.contents = Bitmap.new(self.width - 32,self.height - 32)
    self.contents.clear
    #描绘名字
   
[email protected]
    self.contents.font.color =text_color(6)
    self.contents.font.size=18
    if text!=nil
      self.visible = true
      self.contents.draw_text(0,0, @item.name.size*7, 20, text, 0)
    else
      self.visible = false
    end
    x=0
    y+=1
    text=description
    #描绘描叙
    while ((text = description.slice!(/./m)) != nil)
      self.contents.font.color = normal_color
      self.contents.font.size=14
      self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
      x+=1
      if x==10#每行10个字
        x=0
        y+=1      
      end
    end
    #由特技属性确定高
    #效果范围
    scope = {0=>"特殊物品",1=>"敌单体",2=>"敌全体",3=>"己方单体",4=>"己方全体",5=>"己方昏死单体",6=>"己方昏死全体",7=>"使用者"}#HASH表
    text="范围:"+scope[@item.scope]
    x=0
    y+=2  #空一行
    self.contents.font.color = normal_color
    self.contents.font.size=14
    self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    #价格
      x=0
      y+=1     
      text="价格:"
[email protected]_s
      self.contents.font.color = normal_color
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
   
    #HP 回复率  
    if @item.recover_hp_rate!=0
      x=0
      y+=1     
      text="回复HP:"
[email protected]_hp_rate.to_s+"%"
      self.contents.font.color = normal_color
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)     
    end
    #HP回复量
    if @item.recover_hp!=0
      x=0
      y+=1     
      text="回复HP:"
[email protected]_hp.to_s
      self.contents.font.color = normal_color
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end
     #SP 回复率
    if @item.recover_sp_rate!=0
      x=0
      y+=1     
      text="回复SP:"
[email protected]_sp_rate.to_s+"%"
      self.contents.font.color = normal_color
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end
    #SP 回复量
    if @item.recover_sp!=0
      x=0
      y+=1     
      text="回复SP:"
[email protected]_sp.to_s
      self.contents.font.color = normal_color
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end
    #增加能力值
    if @item.parameter_type!=0
      parameter_type={1=>"MaxHP",2=>"MaxSP",3=>$data_system.words.str,4=>$data_system.words.dex,5=>$data_system.words.agi,6=>$data_system.words.int}
      x=0
      y+=1
      if @item.parameter_points>0
        text="增益:"+parameter_type[@item.parameter_type]+" +"
[email protected]_points.to_s
      else
        text="减少:"+parameter_type[@item.parameter_type][email protected]_points.to_s
      end
      self.contents.font.color = normal_color
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end     
   
    #物品属性   
    if element_set.empty?!=true  #属性。为属性 ID 的数组
      text="属性:"
      for i in 0...element_set.size
        text+=$data_system.elements[element_set[i]]+" "
      end
      x=0
      y+=1
      self.contents.font.color = normal_color
      self.contents.font.size=14
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end
    #附加状态
    if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
      text="附加状态:"
      x=0
      y+=1
      self.contents.font.color = normal_color
      self.contents.font.size=14
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
      y-=1
      x+=text.size*5     
      for i in 0...plus_state_set.size
        y+=1
        text=$data_states[plus_state_set[i]].name       
        self.contents.font.color = normal_color
        self.contents.font.size=14
        self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)       
      end 
    end
    #解除状态
    if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
      text="解除状态:"
      x=0
      y+=1
      self.contents.font.color = normal_color
      self.contents.font.size=14
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
      y-=1
      x+=text.size*5     
      for i in 0...minus_state_set.size
        y+=1
        text=$data_states[minus_state_set[i]].name       
        self.contents.font.color = normal_color
        self.contents.font.size=14
        self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)       
      end 
    end    
  end
end

class Window_Help < Window_Base
    #--------------------------------------------------------------------------
  # ● 武器帮助窗口
  #--------------------------------------------------------------------------
 
  def set_weapon_text(weapon)
    @weapon=weapon
    description=""
   
[email protected]
   # 取得屬性、附加狀態、解除狀態之副本
   element_set = @weapon.element_set.clone
   plus_state_set = @weapon.plus_state_set.clone
   minus_state_set = @weapon.minus_state_set.clone
   # 過濾不顯示的描述
   element_set -= UNSHOW_ELEMENT
   plus_state_set -= UNSHOW_STATE
   minus_state_set -= UNSHOW_STATE

    x=0
    y=0
    height=1     #依要显示的内容确定高
    #由描叙确定高
    height+=description.size/3/10
    if description.size%10!=0
      height+=1
    end
    height+=4  #2个空行,攻击,价格
    if @weapon.pdef!=0 #物理防御
      height+=1
    end      
    if @weapon.mdef!=0 #魔法防御
      height+=1
    end
    if @weapon.str_plus!=0 #力量
      height+=1
    end
    if @weapon.dex_plus!=0#体质
      height+=1
    end
    if @weapon.agi_plus!=0#敏捷
      height+=1
    end
    if @weapon.int_plus!=0 #智力
      height+=1
    end     
    if element_set.empty?!=true  #属性。为属性 ID 的数组
      height+=1
    end 
    if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
      height+=plus_state_set.size 
    end
    if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
      height+=minus_state_set.size  
    end    
    self.height=height*15+40+15  
    self.contents = Bitmap.new(self.width - 32,self.height - 32)
    self.contents.clear
    #描绘名字
   
[email protected]
    self.contents.font.color = text_color(6)#颜色脚本
    self.contents.font.size=18
    if text!=nil
      self.visible = true
      self.contents.draw_text(0,0, @weapon.name.size*7, 20, text, 0)
    else
      self.visible = false
    end
    x=0
    y+=1
    text=description
    #描绘描叙
    while ((text = description.slice!(/./m)) != nil)
      self.contents.font.color = normal_color
      self.contents.font.size=14
      self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
      x+=1
      if x==10#每行10个字
        x=0
        y+=1      
      end
    end
    #由特技属性确定高
    #攻击
      x=0
      y+=2 #空行    
      text="攻击:"
[email protected]_s
      self.contents.font.color = text_color(6)#颜色脚本
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)     
    #价格
      x=0
      y+=1     
      text="价格:"
[email protected]_s
      self.contents.font.color = normal_color
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    if @weapon.pdef!=0 #物理防御
      x=0
      y+=1     
      text="物理防御:"
[email protected]_s
      self.contents.font.color = text_color(6)#颜色脚本
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end      
    if @weapon.mdef!=0 #魔法防御
      x=0
      y+=1     
      text="魔法防御:"
[email protected]_s
      self.contents.font.color = text_color(6)#颜色脚本
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end

    #武器属性   
    if element_set.empty? != true  #属性。为属性 ID 的数组
      text="属性:"
      for i in 0...element_set.size
        text+=$data_system.elements[element_set[i]]+" "
      end
      x=0
      y+=1
      self.contents.font.color = normal_color
      self.contents.font.size=14
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end
    #附加状态
    if plus_state_set.empty? != true  #附加状态。为状态 ID 的数组
      text="附加状态:"
      x=0
      y+=1
      self.contents.font.color = normal_color
      self.contents.font.size=14
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
      y-=1
      x+=text.size*5     
      for i in 0...plus_state_set.size
        y+=1
        text=$data_states[plus_state_set[i]].name       
        self.contents.font.color = normal_color
        self.contents.font.size=14
        self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)       
      end 
    end
    #解除状态
    if minus_state_set.empty? != true  #解除状态。为状态 ID 的数组
      text="解除状态:"
      x=0
      y+=1
      self.contents.font.color = normal_color
      self.contents.font.size=14
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
      y-=1
      x+=text.size*5     
      for i in 0...minus_state_set.size
        y+=1
        text=$data_states[minus_state_set[i]].name       
        self.contents.font.color = normal_color
        self.contents.font.size=14
        self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)       
      end 
    end
    y+=1 #空行
    if @weapon.str_plus!=0 #力量
      x=0
      y+=1
      if @weapon.str_plus > 0
        text=$data_system.words.str+"  + "
[email protected]_plus.to_s
      else
       
[email protected]_plus
        text=$data_system.words.str+"  - "+str_minus.to_s
      end
      self.contents.font.color = text_color(6)#颜色脚本
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end
    if @weapon.dex_plus!=0#体质
      x=0
      y+=1     
      if @weapon.dex_plus > 0
        text=$data_system.words.dex+"  + "
[email protected]_plus.to_s
      else
       
[email protected]_plus
        text=$data_system.words.dex+"  - "+dex_minus.to_s
      end
      self.contents.font.color = text_color(6)#颜色脚本
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end
    if @weapon.agi_plus!=0#敏捷
      x=0
      y+=1     
      if @weapon.agi_plus > 0
        text=$data_system.words.agi+"  + "
[email protected]_plus.to_s
      else
       
[email protected]_plus
        text=$data_system.words.agi+"  - "+agi_minus.to_s
      end
      self.contents.font.color = text_color(6)#颜色脚本
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end
    if @weapon.int_plus!=0 #智力
      x=0
      y+=1     
      if @weapon.int_plus > 0
        text=$data_system.words.int+"  + "
[email protected]_plus.to_s
      else
       
[email protected]_plus
        text=$data_system.words.int+"  - "+int_minus.to_s
      end
      self.contents.font.color = text_color(6)#颜色脚本
      self.contents.font.size=14  
      self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
    end
  end
end

class Window_Help < Window_Base
    #--------------------------------------------------------------------------
  # ● 防具帮助窗口
  #--------------------------------------------------------------------------
    def set_armor_text(armor)
    @armor=armor
    description=""
   
[email protected]
   # 取得屬性、附加狀態、解除狀態之副本
   element_set = @armor.guard_element_set.clone
   guard_sta

1

鲜花

刚表态过的朋友 (1 人)

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-5 16:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部