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

Project1

 找回密码
 注册会员
搜索
查看: 1350|回复: 1
打印 上一主题 下一主题

[已经过期] 血糟问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
182
在线时间
0 小时
注册时间
2010-8-12
帖子
4
跳转到指定楼层
1
发表于 2010-8-12 22:26:04 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 gukukuku 于 2010-8-12 22:28 编辑

我用的战斗系统是RTAB
可以用什么样的血糟
用这个血糟会出现问题
#========================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#========================================================================


# —————————————————————————————————

# ▼▲▼ XRXS_BP 2. HP,SPメーター表示 ▼▲▼
# by 桜雅 在土

#========================================================================
# ■ Window_BattleStatus
#========================================================================
class Window_BattleStatus < Window_Base
  #-----------------------------------------------------------------------
  # ● 初始化
  #-----------------------------------------------------------------------
  alias xrxs_bp2_refresh refresh
  def refresh
    xrxs_bp2_refresh
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      actor_x = i * 160 + 4
      draw_actor_hp_meter(actor, actor_x, 32, 120)
      draw_actor_sp_meter(actor, actor_x, 64, 120)
    end
  end
end
#========================================================================
# ■ Window_Base
#========================================================================
class Window_Base < Window
  #-----------------------------------------------------------------------
  # ● HP描画
  #-----------------------------------------------------------------------
  def draw_actor_hp_meter(actor, x, y, width = 156, type = 0)
    if type == 1 and actor.hp == 0
      return
    end
    self.contents.font.color = system_color
    self.contents.fill_rect(x-1, y+38, width+3,6, Color.new(0, 0, 0, 255))
    w = width * actor.hp / [actor.maxhp,1].max
    self.contents.fill_rect(x, y+38, w,1, Color.new(255, 96, 96, 255))
    self.contents.fill_rect(x, y+39, w,1, Color.new(255, 0, 0, 255))
    self.contents.fill_rect(x, y+40, w,1, Color.new(200, 0, 0, 255))
    self.contents.fill_rect(x, y+41, w,1, Color.new(165, 0, 0, 255))
    self.contents.fill_rect(x, y+42, w,1, Color.new(128, 0, 0, 255))
    self.contents.fill_rect(x, y+43, w,1, Color.new(0, 0, 0, 255))
  end
  #-----------------------------------------------------------------------
  # ● SP描画
  #-----------------------------------------------------------------------
  def draw_actor_sp_meter(actor, x, y, width = 156, type = 0)
    if type == 1 and actor.hp == 0
      return
    end
    self.contents.font.color = system_color
    self.contents.fill_rect(x-1, y+34, width+3,6, Color.new(0, 0, 0, 255))
    w = width * actor.sp / [actor.maxsp,1].max
    self.contents.fill_rect(x, y+34, w,1, Color.new(128, 100, 255, 255))
    self.contents.fill_rect(x, y+35, w,1, Color.new(0, 100, 255, 255))
    self.contents.fill_rect(x, y+36, w,1, Color.new(0, 100, 230, 255))
    self.contents.fill_rect(x, y+37, w,1, Color.new(0, 100, 215, 255))
    self.contents.fill_rect(x, y+38, w,1, Color.new(0, 100, 192, 255))
    self.contents.fill_rect(x, y+39, w,1, Color.new(0, 0, 0, 255))
  end
end


#========================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#========================================================================



Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2007-6-3
帖子
801
2
发表于 2010-8-12 23:19:00 | 只看该作者
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中全部窗口的超级类。
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     x      : 窗口的 X 坐标
  #     y      : 窗口的 Y 坐标
  #     width  : 窗口的宽
  #     height : 窗口的宽
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super()
    @windowskin_name = $game_system.windowskin_name
    self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.z = 100
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    # 如果窗口的内容已经被设置就被释放
    if self.contents != nil
      self.contents.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● 获取文字色
  #     n : 文字色编号 (0~7)
  #--------------------------------------------------------------------------
  def text_color(n)
    case n
    when 0
      return Color.new(255, 255, 255, 255)
    when 1
      return Color.new(128, 128, 255, 255)
    when 2
      return Color.new(255, 128, 128, 255)
    when 3
      return Color.new(128, 255, 128, 255)
    when 4
      return Color.new(128, 255, 255, 255)
    when 5
      return Color.new(255, 128, 255, 255)
    when 6
      return Color.new(255, 255, 128, 255)
    when 7
      return Color.new(192, 192, 192, 255)
    else
      normal_color
    end
  end
  #--------------------------------------------------------------------------
  # ● 获取普通文字色
  #--------------------------------------------------------------------------
  def normal_color
    return Color.new(255, 255, 255, 255)
  end
  #--------------------------------------------------------------------------
  # ● 获取无效文字色
  #--------------------------------------------------------------------------
  def disabled_color
    return Color.new(255, 255, 255, 150)
  end
  #--------------------------------------------------------------------------
  # ● 获取系统文字色
  #--------------------------------------------------------------------------
  def system_color
    return Color.new(192, 224, 255, 255)
  end
  #--------------------------------------------------------------------------
  # ● 获取危机文字色
  #--------------------------------------------------------------------------
  def crisis_color
    return Color.new(255, 255, 64, 255)
  end
  #--------------------------------------------------------------------------
  # ● 获取战斗不能文字色
  #--------------------------------------------------------------------------
  def knockout_color
    return Color.new(255, 64, 0)
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    super
    # 如果窗口的外观被变更了、再设置
    if $game_system.windowskin_name != @windowskin_name
      @windowskin_name = $game_system.windowskin_name
      self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    end
  end
  #--------------------------------------------------------------------------
  # ● 图形的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_graphic(actor, x, y)
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
    cw = bitmap.width / 4
    ch = bitmap.height / 4
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
  #--------------------------------------------------------------------------
  # ● 名称的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_name(actor, x, y, pic=false)
    if pic == true
    bitmap = RPG::Cache.picture("System/name")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.contents.blt(x-4, y-1, bitmap, src_rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(x+60, y, 120, 32, actor.name)
    else
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 120, 32, actor.name)
    end
  end
  #--------------------------------------------------------------------------
  # ● RANK的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_rank(actor, x, y)
    self.contents.font.color = normal_color
    case actor.id
    when 1 #这个要特别修改tabris--------------=================
$wi = $game_system.victory_count
$es = $game_system.escape_count
$ex = $game_variables[43]
$game_variables[42] = 0
if $wi >= 300 and $ex >= 100
$game_variables[42] = 1
end
if $game_actors[1].level >= 40
if $wi >= 700 and $ex >= 300 and $es < 100
$game_variables[42] = 2
end
end
if $game_actors[1].level >= 50
if $wi >= 1000 and $ex >= 500 and $es < 100
$game_variables[42] = 3
end
end
if $game_actors[1].level >= 70
if $wi >= 2000 and $ex >= 1000 and $es < 50
$game_variables[42] = 4
end
end
case $game_variables[42]
when 0
  self.contents.draw_text(x, y, 120, 32, "C")
when 1
  self.contents.draw_text(x, y, 120, 32, "B")  
when 2
  self.contents.draw_text(x, y, 120, 32, "A")
when 3
  self.contents.draw_text(x, y, 120, 32, "S")
when 4
  self.contents.draw_text(x, y, 90, 32, "Fairytale")
end
      
    when 5 , 7 , 12 , 17 , 18 , 22 , 27
      self.contents.draw_text(x, y, 120, 32, "S")
    when 24 , 15 , 14 , 28 , 29 , 9
      self.contents.draw_text(x, y, 120, 32, "A")
    when 2 , 23 , 25 , 13 , 30 , 19 , 20 , 8 , 10
      self.contents.draw_text(x, y, 120, 32, "B")
    when 3
      self.contents.draw_text(x, y, 120, 32, "C")
    else
      self.contents.draw_text(x, y, 120, 32, "-")      
    end
  end
  #--------------------------------------------------------------------------
  # ● 职业的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_class(actor, x, y)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 236, 32, actor.class_name)
  end
  def draw_actor_class2(actor, x, y)
    self.contents.font.color = normal_color
    case actor.class2
    when 1
    self.contents.draw_text(x, y, 236, 32, "见习勇士")      
    when 2
    self.contents.draw_text(x, y, 236, 32, "战士")
    when 3
    self.contents.draw_text(x, y, 236, 32, "游侠")
    when 4
    self.contents.draw_text(x, y, 236, 32, "战斗大师")
    when 5
    self.contents.draw_text(x, y, 236, 32, "圣光骑士")
    when 6
    self.contents.draw_text(x, y, 236, 32, "魔法祭司")
    when 7
    self.contents.draw_text(x, y, 236, 32, "影子猎手")
    end
  end
  #--------------------------------------------------------------------------
  # ● 等级的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_level(actor, x, y,dis=false)
    bitmap = RPG::Cache.picture("System/level")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.contents.blt(x-2, y+1, bitmap, src_rect)
    self.contents.font.color = normal_color
    if dis==true
    self.contents.draw_text(x + 60, y, 24, 32, actor.level.to_s, 2)
    else
    self.contents.draw_text(x + 40, y, 24, 32, actor.level.to_s, 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成描绘用的状态字符串
  #     actor       : 角色
  #     width       : 描画目标的宽度
  #     need_normal : [正常] 是否为必须 (true / false)
  #--------------------------------------------------------------------------
  def make_battler_state_text(battler, width, need_normal)
    # 获取括号的宽
    brackets_width = self.contents.text_size("[]").width
    # 生成状态名字符串
    text = ""
    for i in battler.states
      if $data_states[i].rating >= 1
        if text == ""
          text = $data_states[i].name
        else
          new_text = text + "/" + $data_states[i].name
          text_width = self.contents.text_size(new_text).width
          if text_width > width - brackets_width
            break
          end
          text = new_text
        end
      end
    end
    # 状态名空的字符串是 "[正常]" 的情况下
    if text == ""
      if need_normal
        text = "[正常]"
      end
    else
      # 加上括号
      text = "[" + text + "]"
    end
    # 返回完成后的文字类
    return text
  end
  
  
  
def draw_actor_battle_graphic(actor,x,y)
      bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
      self.contents.blt(x,y,bitmap,Rect.new(0,0,bitmap.width,bitmap.height ))
end
  
  
  #--------------------------------------------------------------------------
  # ● 描绘状态
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_state(actor, x, y, width = 120)
    text = make_battler_state_text(actor, width, true)
    self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
    self.contents.draw_text(x, y, width, 32, text)
  end
  #--------------------------------------------------------------------------
  # ● 描绘 EXP
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_exp(actor, x, y)
    bitmap = RPG::Cache.picture("System/next")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.contents.blt(x-2, y+3, bitmap, src_rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 60, y, 84, 32, actor.next_rest_exp_s, 2)
#   self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
#   self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
  end
  #--------------------------------------------------------------------------
  # ● 描绘 HP
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_hp(actor, x, y, width = 144)
    # 描绘字符串 "HP"
    bitmap = RPG::Cache.picture("System/hp")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.contents.blt(x-2, y+3, bitmap, src_rect)
    # 计算描绘 MaxHP 所需的空间
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    # 描绘 HP
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
    # 描绘 MaxHP
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
    end
  end

  #--------------------------------------------------------------------------
  # ● 描绘 SP
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_sp(actor, x, y, width = 144)
    bitmap = RPG::Cache.picture("System/sp")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.contents.blt(x, y+3, bitmap, src_rect)
    # 计算描绘 MaxSP 所需的空间
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    # 描绘 SP
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
    self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
    # 描绘 MaxSP
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
    end
  end
  #--------------------------------------------------------------------------
  def up_color
    return Color.new(255, 255, 255)
  end
  def down_color
    return Color.new(200,200,200)
  end
  #--------------------------------------------------------------------------
  # ● 描绘能力值
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     type  : 能力值种类 (0~6)
  #--------------------------------------------------------------------------
  def draw_actor_parameter(actor, x, y, type)
    case type
    when 0
      parameter_name = $data_system.words.atk
      parameter_value = actor.atk
    bitmap = RPG::Cache.picture("System/atk")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    when 1
      parameter_name = $data_system.words.pdef
      parameter_value = actor.pdef
    bitmap = RPG::Cache.picture("System/pdef")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    when 2
      parameter_name = $data_system.words.mdef
      parameter_value = actor.mdef
    bitmap = RPG::Cache.picture("System/mdef")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    when 3
      parameter_name = $data_system.words.str
      parameter_value = actor.str
    bitmap = RPG::Cache.picture("System/str")
    src_rect = Rect.new(-3, 0, bitmap.width, bitmap.height)
    when 4
      parameter_name = $data_system.words.dex
      parameter_value = actor.dex
    bitmap = RPG::Cache.picture("System/dex")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    when 5
      parameter_name = $data_system.words.agi
      parameter_value = actor.agi
    bitmap = RPG::Cache.picture("System/agi")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    when 6
      parameter_name = $data_system.words.int
      parameter_value = actor.int
    bitmap = RPG::Cache.picture("System/int")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    ###############################################################
    when 7
      parameter_name = "回避"
      parameter_value = actor.eva
    end
    self.contents.blt(x-2, y+1, bitmap, src_rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # ● 描绘物品名
  #     item : 物品
  #     x    : 描画目标 X 坐标
  #     y    : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
#  def draw_item_name(item, x, y)
   # if item == nil
     # return
  #  end
   # bitmap = RPG::Cache.icon(item.icon_name)
#    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
#    self.contents.font.color = text_color(item.name_color_66RPG)
   # self.contents.draw_text(x + 28, y, 212, 32, item.name)
# end
  #--------------------------------------------------------
  # ● HP ゲージの描画
  #--------------------------------------------------
  # オリジナルのHP描画を draw_actor_hp_original と名前変更
  alias :draw_actor_hp_original :draw_actor_hp
  def draw_actor_hp(actor, x, y, width = 144)
    if actor.maxhp != 0
      rate = actor.hp.to_f / actor.maxhp
    else
      rate = 0
    end
    plus_x = 0
    rate_x = 0
    plus_y = 25
    plus_width = 0
    rate_width = 100
    height = 10
    align1 = 1
    align2 = 2
    align3 = 0
    grade1 = 1
    grade2 = 0
    color1 = Color.new(0, 0, 0, 192)
    color2 = Color.new(255, 255, 192, 192)
    color3 = Color.new(0, 0, 0, 192)
    color4 = Color.new(64, 0, 0, 192)
    color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
    color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
    # 変数spに描画するゲージの幅を代入
    if actor.maxhp != 0
      hp = (width + plus_width) * actor.hp * rate_width / 100 / actor.maxhp
    else
      hp = 0
    end
    # ゲージの描画
    gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
                width, plus_width + width * rate_width / 100,
                height, hp, align1, align2, align3,
                color1, color2, color3, color4, color5, color6, grade1, grade2)
    # オリジナルのHP描画処理を呼び出し
    draw_actor_hp_original(actor, x, y, width)
  end
  
  #--------------------------------------------------------------
  # ● SP ゲージの描画
  #------------------------------------------------------------
  # オリジナルのSP描画を draw_actor_sp_original と名前変更
  alias :draw_actor_sp_original :draw_actor_sp
  def draw_actor_sp(actor, x, y, width = 144)
    # 変数rateに 現在のSP/MSPを代入
    if actor.maxsp != 0
      rate = actor.sp.to_f / actor.maxsp
    else
      rate = 1
    end
    plus_x = 0
    rate_x = 0
    plus_y = 25
    plus_width = 0
    rate_width = 100
    height = 10
    align1 = 1
    align2 = 2
    align3 = 0
    grade1 = 1
    grade2 = 0
    color1 = Color.new(0, 0, 0, 192)
    color2 = Color.new(255, 255, 192, 192)
    color3 = Color.new(0, 0, 0, 192)
    color4 = Color.new(0, 64, 0, 192)
    color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
    color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
    if actor.maxsp != 0
      sp = (width + plus_width) * actor.sp * rate_width / 100 / actor.maxsp
    else
      sp = (width + plus_width) * rate_width / 100
    end
    # ゲージの描画
    gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
                width, plus_width + width * rate_width / 100,
                height, sp, align1, align2, align3,
                color1, color2, color3, color4, color5, color6, grade1, grade2)
    # オリジナルのSP描画処理を呼び出し
    draw_actor_sp_original(actor, x, y, width)
  end
  


  #--------------------------------------------------------------------------
  # ● 描绘 CP **************************************************************
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_cp(actor, x, y, width = 144)
    bitmap = RPG::Cache.picture("System/cp")
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.contents.blt(x-4, y+3, bitmap, src_rect)
    # 计算描绘 MaxCP 所需的空间
    if width - 32 >= 108
      cp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      cp_x = x + width - 48
      flag = false
    end
    # 描绘 SP
    self.contents.font.color = actor.xp == 0 ? knockout_color :
      actor.xp <= actor.maxxp / 4 ? crisis_color : normal_color
    self.contents.draw_text(cp_x, y, 48, 32, actor.xp.to_s, 2)
    # 描绘 MaxSP
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(cp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(cp_x + 60, y, 48, 32, actor.maxxp.to_s)
    end
  end
  #--------------------------------------------------------------
  # ● XP ゲージの描画
  #------------------------------------------------------------
  alias :draw_actor_cp_original :draw_actor_cp
  def draw_actor_cp(actor, x, y, width = 144)
    # 変数rateに 現在のcp/Mcpを代入
    if actor.maxxp != 0
      rate = actor.xp.to_f / actor.maxxp
    else
      rate = 1
    end
    plus_x = 0
    rate_x = 0
    plus_y = 25
    plus_width = 0
    rate_width = 100
    height = 10
    align1 = 1
    align2 = 2
    align3 = 0
    grade1 = 1
    grade2 = 0
    color1 = Color.new(0, 0, 0, 192)
    color2 = Color.new(255, 255, 192, 192)
    color3 = Color.new(0, 0, 0, 192)
    color4 = Color.new(0, 64, 0, 192)
    color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
    color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
    if actor.maxxp != 0
      cp = (width + plus_width) * actor.xp * rate_width / 100 / actor.maxxp
    else
      cp = (width + plus_width) * rate_width / 100
    end
    gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
                width, plus_width + width * rate_width / 100,
                height, cp, align1, align2, align3,
                color1, color2, color3, color4, color5, color6, grade1, grade2)
    draw_actor_cp_original(actor, x, y, width)
  end
  
  #--------------------------------------------------------
  # ● EXP ゲージの描画
  #----------------------------------------------------------
  alias :draw_actor_exp_original :draw_actor_exp
  def draw_actor_exp(actor, x, y, width = 204)
    if actor.next_exp != 0
      rate = actor.now_exp.to_f / actor.next_exp
    else
      rate = 1
    end
    plus_x = 0
    rate_x = 0
    plus_y = 25
    plus_width = 0
    rate_width = 100
    height = 10
    align1 = 1
    align2 = 2
    align3 = 0
    grade1 = 1
    grade2 = 0
    color1 = Color.new(0, 0, 0, 192)
    color2 = Color.new(255, 255, 192, 192)
    color3 = Color.new(0, 0, 0, 192)
    color4 = Color.new(64, 0, 0, 192)
    color5 = Color.new(80 * rate, 80 - 80 * rate ** 2, 80 - 80 * rate, 192)
    color6 = Color.new(240 * rate, 240 - 240 * rate ** 2, 240 - 240 * rate, 192)
    if actor.next_exp != 0
      exp = (width + plus_width) * actor.now_exp * rate_width /
                                                          100 / actor.next_exp
    else
      exp = (width + plus_width) * rate_width / 100
    end
    # ゲージの描画
    gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
                width, plus_width + width * rate_width / 100,
                height, exp, align1, align2, align3,
                color1, color2, color3, color4, color5, color6, grade1, grade2)
    # オリジナルのEXP描画処理を呼び出し
    draw_actor_exp_original(actor, x, y)
  end
  #---------------------------------------------------------
  # ● ゲージの描画
  #-----------------------------------------------------
  def gauge_rect(x, y, rect_width, width, height, gauge, align1, align2, align3,
                color1, color2, color3, color4, color5, color6, grade1, grade2)
    case align1
    when 1
      x += (rect_width - width) / 2
    when 2
      x += rect_width - width
    end
    case align2
    when 1
      y -= height / 2
    when 2
      y -= height
    end
    # 枠描画
    self.contents.fill_rect(x, y, width, height, color1)
    self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color2)
    if align3 == 0
      if grade1 == 2
        grade1 = 3
      end
      if grade2 == 2
        grade2 = 3
      end
    end
    if (align3 == 1 and grade1 == 0) or grade1 > 0
      color = color3
      color3 = color4
      color4 = color
    end
    if (align3 == 1 and grade2 == 0) or grade2 > 0
      color = color5
      color5 = color6
      color6 = color
    end
    # 空ゲージの描画
    self.contents.gradation_rect(x + 2, y + 2, width - 4, height - 4,
                                  color3, color4, grade1)
    if align3 == 1
      x += width - gauge
    end
    # 実ゲージの描画
    self.contents.gradation_rect(x + 2, y + 2, gauge - 4, height - 4,
                                  color5, color6, grade2)
    end

   
   
    def draw_actor_hp2(actor, x, y, width = 144)
    self.contents.font.color = system_color
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    self.contents.font.size = 16   
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_frame_text(hp_x+10, y+4, 48, 32, actor.hp.to_s, 2)
    self.contents.font.size = Font.default_size
   end   
   
    alias :draw_actor_hp_original2 :draw_actor_hp2
  def draw_actor_hp2(actor, x, y, width = 144)
    if actor.maxhp != 0
      rate = actor.hp.to_f / actor.maxhp
    else
      rate = 0
    end
    plus_x = 0
    rate_x = 0
    plus_y = 25
    plus_width = 0
    rate_width = 100
    height = 7
    align1 = 1
    align2 = 2
    align3 = 0
    grade1 = 1
    grade2 = 0
    color1 = Color.new(0, 0, 0, 255)
    color2 = Color.new(255, 255, 255, 255)
    color3 = Color.new(0, 0, 0, 255)
    color4 = Color.new(64, 0, 0, 255)
    color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 255)
    color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 255)
    if actor.maxhp != 0
      hp = (width + plus_width) * actor.hp * rate_width / 100 / actor.maxhp
    else
      hp = 0
    end
    gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
                width, plus_width + width * rate_width / 100,
                height, hp, align1, align2, align3,
                color1, color2, color3, color4, color5, color6, grade1, grade2)
    draw_actor_hp_original2(actor, x, y, width)
  end
   
   
    def draw_actor_sp2(actor, x, y, width = 144)
    self.contents.font.color = system_color
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    self.contents.font.size = 16
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
    self.contents.draw_frame_text(sp_x+5, y+4, 48, 32, actor.sp.to_s, 2)
    self.contents.font.size = Font.default_size
    end   
  alias :draw_actor_sp_original2 :draw_actor_sp2
  def draw_actor_sp2(actor, x, y, width = 144)
    if actor.maxsp != 0
      rate = actor.sp.to_f / actor.maxsp
    else
      rate = 1
    end
    plus_x = 0
    rate_x = 0
    plus_y = 25
    plus_width = 0
    rate_width = 100
    height = 7
    align1 = 1
    align2 = 2
    align3 = 0
    grade1 = 1
    grade2 = 0
    color1 = Color.new(0, 0, 0, 255)
    color2 = Color.new(255, 255, 192, 255)
    color3 = Color.new(0, 0, 0, 255)
    color4 = Color.new(0, 64, 0, 255)
    color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 255)
    color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 255)
    if actor.maxsp != 0
      sp = (width + plus_width) * actor.sp * rate_width / 100 / actor.maxsp
    else
      sp = (width + plus_width) * rate_width / 100
    end
    gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
                width, plus_width + width * rate_width / 100,
                height, sp, align1, align2, align3,
                color1, color2, color3, color4, color5, color6, grade1, grade2)
    draw_actor_sp_original2(actor, x, y, width)
  end
  
    def draw_actor_cp2(actor, x, y, width = 144)
    self.contents.font.color = system_color
    if width - 32 >= 108
      cp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      cp_x = x + width - 48
      flag = false
    end
    self.contents.font.size = 16
    self.contents.font.color = actor.xp == 0 ? knockout_color :
      actor.xp <= actor.maxxp / 4 ? crisis_color : normal_color
    self.contents.draw_frame_text(cp_x+10, y+4, 48, 32, actor.xp.to_s, 2)
    self.contents.font.size = Font.default_size

    end
   
    alias :draw_actor_cp_original2 :draw_actor_cp2
  def draw_actor_cp2(actor, x, y, width = 144)
    if actor.maxxp != 0
      rate = actor.xp.to_f / actor.maxxp
    else
      rate = 1
    end
    plus_x = 0
    rate_x = 0
    plus_y = 25
    plus_width = 0
    rate_width = 100
    height = 7
    align1 = 1
    align2 = 2
    align3 = 0
    grade1 = 1
    grade2 = 0
    color1 = Color.new(0, 0, 0, 255)
    color2 = Color.new(255, 255, 192, 255)
    color3 = Color.new(0, 0, 0, 255)
    color4 = Color.new(0, 64, 0, 255)
    color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 255)
    color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 255)
    if actor.maxxp != 0
      cp = (width + plus_width) * actor.xp * rate_width / 100 / actor.maxxp
    else
      cp = (width + plus_width) * rate_width / 100
    end
    gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
                width, plus_width + width * rate_width / 100,
                height, cp, align1, align2, align3,
                color1, color2, color3, color4, color5, color6, grade1, grade2)
    draw_actor_cp_original2(actor, x, y, width)
  end  
  end  

试试……
无签名,不解释
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-28 07:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表