仙剑之十里坡

标题: 伤害美化~使用方法不解释 [打印本页]

作者: BlackFeather    时间: 2010-3-27 18:39
标题: 伤害美化~使用方法不解释
本帖最后由 白爪子的黑猫 于 2010-3-26 22:40 编辑
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================


  4. # ============================================================================
  5. # 伤害效果美化 v1.0 by SailCat
  6. # ============================================================================

  7. # 脚本使用说明:

  8. # 1.使用时需要将Damage.png复制到你的游戏的Graphics/Pictures目录下

  9. # 2.Damage.png文件的格式:

  10. #   大小为180 x 96

  11. #   (0, 0) - (179, 31)为伤害值的数字表,其中每个数字宽18,高32

  12. #   (0, 32) - (179, 63)为回复值(伤害负值)的数字表,其中每个数字宽18,高32

  13. #   (0, 64) - (89, 95)为会心一击标记的图画,长宽为90 x 32

  14. #   (90, 64) - (179, 95)为未命中标记的图画,长宽为90 x 32

  15. # ============================================================================

  16. module RPG

  17.   class Sprite < ::Sprite
  18.     #--------------------------------------------------------------------------
  19.     # ● 伤害值描画
  20.     #--------------------------------------------------------------------------
  21.     def damage(value, critical, sp_damage = false)

  22.      # 释放伤害
  23.       dispose_damage
  24.       # 如果伤害值是数值
  25.       if value.is_a?(Numeric)
  26.         # 绝对值转为字符串
  27.         damage_string = value.abs.to_s
  28.       else
  29.         # 转为字符串
  30.         damage_string = value.to_s
  31.       end
  32.       # 初始化位图
  33.       bitmap = Bitmap.new(162, 64)
  34.       bitmap.font.name = "Arial Black"
  35.       bitmap.font.size = 32
  36.       # 伤害值是数值的情况下
  37.       if value.is_a?(Numeric)
  38.         # 分割伤害值字符串
  39.         damage_array = damage_string.scan(/./)
  40.         damage_x = 81 - damage_string.size * 9
  41.         # 伤害值为负的情况下
  42.         if value < 0
  43.           # 调用回复数字表
  44.           rect_y = 32
  45.         else
  46.           # 调用伤害数字表
  47.           rect_y = 0
  48.         end
  49.         # 循环伤害值字符串

  50.        for char in damage_array
  51.          number = char.to_i
  52.           # 显示伤害数字
  53.        if sp_damage
  54.          bitmap.blt(damage_x, 32, RPG::Cache.picture("Damagesp"),
  55.          Rect.new(number * 18, rect_y, 18, 32))
  56.          damage_x += 18
  57.       else
  58.          bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
  59.          Rect.new(number * 18, rect_y, 18, 32))
  60.          damage_x += 18
  61.       end
  62. end
  63.       # 伤害值不是数值的情况
  64.       else
  65.         # 如果伤害值不是 Miss
  66.         unless value == "Miss"
  67.           # 系统默认描画字符串
  68.           bitmap.font.color.set(0, 0, 0)
  69.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
  70.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
  71.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
  72.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
  73.           bitmap.font.color.set(255, 255, 255)
  74.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
  75.         # Miss 的情况下
  76.         else
  77.           # 显示未击中图画
  78.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  79.         end
  80.       end
  81.       # 会心一击标志打开的情况
  82.       if critical
  83.         # 显示会心一击图画
  84.         bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))
  85.       end
  86.       # 伤害值定位
  87.       @_damage_sprite = ::Sprite.new(self.viewport)
  88.       @_damage_sprite.bitmap = bitmap
  89.       @_damage_sprite.ox = 81
  90.       @_damage_sprite.oy = 20
  91.       @_damage_sprite.x = self.x
  92.       @_damage_sprite.y = self.y - self.oy / 2
  93.       @_damage_sprite.z = 3000
  94.       @_damage_duration = 40
  95.     end
  96.   end
  97. end

  98. #==============================================================================
  99. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  100. #==============================================================================
复制代码





欢迎光临 仙剑之十里坡 (http://palslp.com/bbs/) Powered by Discuz! X2.5