Project1

标题: 如何修改战斗显示伤害的样式 [打印本页]

作者: 未命名    时间: 2013-10-25 23:27
标题: 如何修改战斗显示伤害的样式

    如图,显示伤害都是默认这个样式,我想修改比如出现和消失的方式、字体的大小、颜色等,结果没在脚本中找到描绘的地方,甚至不知道“critical”怎么描绘的。可以修改的只有“MISS”。
    所以我想请教如何修改显示伤害的描绘。

    我希望可以自己制作或调整,不希望用现成的。

    另外,我使用了“地图显示伤害”的脚本,希望可以不冲突。
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
#
# 使用方法:
#
# ★、对角色显示伤害,如下3步:
#
# 1、设置伤害内容:$game_player.damage = 数值
#    注意:如果数值是负数,就变成补血的颜色了。
#
# 2、设置是否会心一击:$game_player.critical = true/false
#    如果不是会心一击,就不用这一步了
#
# 3、释放伤害:$game_player.damage_pop = true
#
#
# ★、对普通NPC和事件进行伤害,类似的3步:
#
# 1、设置伤害内容:$game_map.events[事件编号].damage = 数值
#
# 2、设置是否会心一击:$game_map.events[事件编号].critical = true/false
#
# 3、释放伤害:$game_map.events[事件编号].damage_pop = true
#
# 注意,事件编号是事件的ID号,如果目标是“本事件”,那么在事件编号输入@event_id
#
#------------------------------------------------------------------------------
# 预祝有人能早日做出华丽的ARPG来,别忘了到网站发布哦~
#------------------------------------------------------------------------------
class Sprite_Character < RPG::Sprite
  alias carol3_66RPG_damage_pop_update update
  def update
    carol3_66RPG_damage_pop_update
    if @character.damage_pop
      damage(@character.damage, @character.critical)
      @character.damage = nil
      @character.critical = false
      @character.damage_pop = false
    end
    #------------------------------
    # 动画 ID 与当前的情况有差异的情况下
#~    if @character.damage == nil and
#~       @character.state_animation_id != @state_animation_id
#~      @state_animation_id = @character.state_animation_id
#~      loop_animation($data_animations[@state_animation_id])
#~    end
   
    #collapse
    # 明灭
    if @character.blink
      blink_on
    else
      blink_off
    end
    # 白色闪烁
    if @character.white_flash
      whiten
      @character.white_flash = false
    end
    # 死亡
    if @character.dead
      collapse
      @character.dead = false
    end
    #------------------------------
  end  
end
class Game_Character
  attr_accessor :damage_pop
  attr_accessor :damage
  attr_accessor :critical
  attr_accessor :white_flash              # 白色屏幕闪烁标志
  attr_accessor :blink                    # 闪烁标志
  attr_accessor :dead                     # 死亡消失标志
#~  attr_accessor :state_animation_id       # 状态动画ID
  alias carol3_66RPG_damage_pop_initialize initialize
  def initialize
    @damage_pop = false
    @damage = nil
    @critical = false
    carol3_66RPG_damage_pop_initialize
    @white_flash = false
    @blink = false
    @deAd = false
  end
#~  def state_animation_id
#~    return @character.state_animation_id
#~  end
end

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

作者: 芯☆淡茹水    时间: 2013-10-25 23:27
伤害的定义,在 帮助 —> RGSS参考 —> RGSS内部类 —> RPG::Sprite  里面,里面包括了 白色闪烁;动画;伤害;循环动画,,,等。

本人只把伤害的定义贴出来,加以注释,希望LZ能理解并修改。
  1. module RPG
  2.   class Sprite < ::Sprite
  3.    # 伤害(伤害值,会心一击)
  4.     def damage(value, critical)
  5.       #释放伤害
  6.       dispose_damage
  7.       #如果伤害值为数值,取绝对值后转化为字符串,其它直接转化为字符串。
  8.       if value.is_a?(Numeric)
  9.         damage_string = value.abs.to_s
  10.       else
  11.         damage_string = value.to_s
  12.       end
  13.       # 描绘伤害的位图
  14.       bitmap = Bitmap.new(160, 48)
  15.       # 描绘的字体
  16.       bitmap.font.name = "Arial Black"
  17.       # 字体大小
  18.       bitmap.font.size = 32
  19.       # 颜色
  20.       bitmap.font.color.set(0, 0, 0)
  21.       # 动态伤害(上下左右闪动)
  22.       bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  23.       bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  24.       bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  25.       bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  26.       # 如果伤害值是数值并且小于 0 ,字体颜色为(绿色),其它为(白色)。
  27.       if value.is_a?(Numeric) and value < 0
  28.         bitmap.font.color.set(176, 255, 144)
  29.       else
  30.         bitmap.font.color.set(255, 255, 255)
  31.       end
  32.       # 描绘伤害值
  33.       bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  34.       # 如果是 会心一击 ,描绘 CRITICAL 。
  35.       if critical
  36.         bitmap.font.size = 20
  37.         bitmap.font.color.set(0, 0, 0)
  38.         bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  39.         bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  40.         bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  41.         bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  42.         bitmap.font.color.set(255, 255, 255)
  43.         bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  44.       end
  45.       # 显示的精灵(端口)
  46.       @_damage_sprite = ::Sprite.new(self.viewport)
  47.       # 位图
  48.       @_damage_sprite.bitmap = bitmap
  49.       # 原点
  50.       @_damage_sprite.ox = 80
  51.       @_damage_sprite.oy = 20
  52.       # 坐标
  53.       @_damage_sprite.x = self.x
  54.       @_damage_sprite.y = self.y - self.oy / 2
  55.       # Z值
  56.       @_damage_sprite.z = 3000
  57.       # 显示的持续时间(帧)
  58.       @_damage_duration = 40
  59.     end
  60.   end
  61. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1