Project1

标题: 如何显示SP回复和SP伤害? [打印本页]

作者: 飘过~    时间: 2015-2-28 10:09
标题: 如何显示SP回复和SP伤害?
我用的是这样的伤害优化脚本,想让SP伤害和SP回复可以显示出来,有什么办法呢?
还有如何设置反击、HPSP回复伤害状态?我请教过一次,但是反击可能和脚本有冲突,HP回复显示的和受了伤害一样,为这个很头疼。。希望可以得到大神解答{:2_263:}
RUBY 代码复制
  1. #==============================================================================
  2. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  3. #==============================================================================
  4.  
  5.  
  6. # ============================================================================
  7. # 伤害效果美化 v1.0 by SailCat
  8. # ============================================================================
  9.  
  10. # 脚本使用说明:
  11.  
  12. # 1.使用时需要将Damage.png复制到你的游戏的Graphics/Pictures目录下
  13.  
  14. # 2.Damage.png文件的格式:
  15.  
  16. #   大小为180 x 96
  17.  
  18. #   (0, 0) - (179, 31)为伤害值的数字表,其中每个数字宽18,高32
  19.  
  20. #   (0, 32) - (179, 63)为回复值(伤害负值)的数字表,其中每个数字宽18,高32
  21.  
  22. #   (0, 64) - (89, 95)为会心一击标记的图画,长宽为90 x 32
  23.  
  24. #   (90, 64) - (179, 95)为未命中标记的图画,长宽为90 x 32
  25.  
  26. # ============================================================================
  27.  
  28. module RPG
  29.  
  30.   class Sprite < ::Sprite
  31.  
  32.     #--------------------------------------------------------------------------
  33.  
  34.     # ● 伤害值描画
  35.  
  36.     #--------------------------------------------------------------------------
  37.  
  38.     def damage(value, critical)
  39.  
  40.       # 释放伤害
  41.  
  42.       dispose_damage
  43.  
  44.       # 如果伤害值是数值
  45.  
  46.       if value.is_a?(Numeric)
  47.  
  48.         # 绝对值转为字符串
  49.  
  50.         damage_string = value.abs.to_s
  51.  
  52.       else
  53.  
  54.         # 转为字符串
  55.  
  56.         damage_string = value.to_s
  57.  
  58.       end
  59.  
  60.       # 初始化位图
  61.  
  62.       bitmap = Bitmap.new(162, 64)
  63.  
  64.       bitmap.font.name = "Arial Black"
  65.  
  66.       bitmap.font.size = 32
  67.  
  68.       # 伤害值是数值的情况下
  69.  
  70.       if value.is_a?(Numeric)
  71.  
  72.         # 分割伤害值字符串
  73.  
  74.         damage_array = damage_string.scan(/./)
  75.  
  76.         damage_x = 81 - damage_string.size * 9
  77.  
  78.         # 伤害值为负的情况下
  79.  
  80.         if value < 0
  81.  
  82.           # 调用回复数字表
  83.  
  84.           rect_y = 32
  85.  
  86.         else
  87.  
  88.           # 调用伤害数字表
  89.  
  90.           rect_y = 0
  91.  
  92.         end
  93.  
  94.         # 循环伤害值字符串
  95.  
  96.         for char in damage_array
  97.  
  98.           number = char.to_i
  99.  
  100.           # 显示伤害数字
  101.  
  102.           bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
  103.  
  104.             Rect.new(number * 18, rect_y, 18, 32))
  105.  
  106.           # 后移一位
  107.  
  108.           damage_x += 18
  109.  
  110.         end
  111.  
  112.       # 伤害值不是数值的情况
  113.  
  114.       else
  115.  
  116.         # 如果伤害值不是 Miss
  117.  
  118.         unless value == "Miss"
  119.  
  120.           # 系统默认描画字符串
  121.  
  122.           bitmap.font.color.set(0, 0, 0)
  123.  
  124.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
  125.  
  126.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
  127.  
  128.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
  129.  
  130.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
  131.  
  132.           bitmap.font.color.set(255, 255, 255)
  133.  
  134.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
  135.  
  136.         # Miss 的情况下
  137.  
  138.         else
  139.  
  140.           # 显示未击中图画
  141.  
  142.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  143.  
  144.         end
  145.  
  146.       end
  147.  
  148.       # 会心一击标志打开的情况
  149.  
  150.       if critical
  151.  
  152.         # 显示会心一击图画
  153.  
  154.         bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))
  155.  
  156.       end
  157.  
  158.       # 伤害值定位
  159.  
  160.       @_damage_sprite = ::Sprite.new(self.viewport)
  161.  
  162.       @_damage_sprite.bitmap = bitmap
  163.  
  164.       @_damage_sprite.ox = 81
  165.  
  166.       @_damage_sprite.oy = 20
  167.  
  168.       @_damage_sprite.x = self.x
  169.  
  170.       @_damage_sprite.y = self.y - self.oy / 2
  171.       if self.is_a?(Sprite_Battler)
  172.         if self.battler.is_a?(Game_Actor)
  173.           @_damage_sprite.y -= 70 #此处您随意~
  174.         end
  175.       end
  176.       @_damage_sprite.z = 3000
  177.  
  178.       @_damage_duration = 40
  179.  
  180.     end
  181.  
  182.   end
  183.  
  184. end
  185.  
  186. #==============================================================================
  187. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  188. #==============================================================================





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