Project1

标题: 关于伤害效果美化单方面的修改。 [打印本页]

作者: zyq11321    时间: 2008-10-26 04:49
标题: 关于伤害效果美化单方面的修改。
这是伤害美化脚本及图片:

  1. module RPG

  2.   class Sprite < ::Sprite

  3.     #--------------------------------------------------------------------------

  4.     # ● 伤害值描画

  5.     #--------------------------------------------------------------------------

  6.     def damage(value, critical)

  7.       # 释放伤害

  8.       dispose_damage

  9.       # 如果伤害值是数值

  10.       if value.is_a?(Numeric)

  11.         # 绝对值转为字符串

  12.         damage_string = value.abs.to_s

  13.       else

  14.         # 转为字符串

  15.         damage_string = value.to_s

  16.       end

  17.       # 初始化位图

  18.       bitmap = Bitmap.new(162, 64)

  19.       bitmap.font.name = "Arial Black"

  20.       bitmap.font.size = 32

  21.       # 伤害值是数值的情况下

  22.       if value.is_a?(Numeric)

  23.         # 分割伤害值字符串

  24.         damage_array = damage_string.scan(/./)

  25.         damage_x = 81 - damage_string.size * 9

  26.         # 伤害值为负的情况下

  27.         if value < 0

  28.           # 调用回复数字表

  29.           rect_y = 32

  30.         else

  31.           # 调用伤害数字表

  32.           rect_y = 0

  33.         end

  34.         # 循环伤害值字符串

  35.         for char in damage_array

  36.           number = char.to_i

  37.           # 显示伤害数字

  38.           bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),

  39.             Rect.new(number * 18, rect_y, 18, 32))

  40.           # 后移一位

  41.           damage_x += 18

  42.         end

  43.       # 伤害值不是数值的情况

  44.       else

  45.         # 如果伤害值不是 Miss

  46.         unless value == "Miss"

  47.           # 系统默认描画字符串

  48.           bitmap.font.color.set(0, 0, 0)

  49.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)

  50.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)

  51.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)

  52.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)

  53.           bitmap.font.color.set(255, 255, 255)

  54.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)

  55.         # Miss 的情况下

  56.         else

  57.           # 显示未击中图画

  58.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))

  59.         end

  60.       end

  61.       # 会心一击标志打开的情况

  62.       if critical

  63.         # 显示会心一击图画

  64.         bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))

  65.       end

  66.       # 伤害值定位

  67.       @_damage_sprite = ::Sprite.new(self.viewport)

  68.       @_damage_sprite.bitmap = bitmap

  69.       @_damage_sprite.ox = 81

  70.       @_damage_sprite.oy = 20

  71.       @_damage_sprite.x = self.x

  72.       @_damage_sprite.y = self.y - self.oy / 2

  73.       @_damage_sprite.z = 3000

  74.       @_damage_duration = 40

  75.     end

  76.   end

  77. end
复制代码




当伤害是MISS的情况下,会显示上图MISS效果的图片,其他情况其他均
保持RGSS默认的数据。
伤害美化怎么只修改Miss部分的图片?
[LINE]1,#dddddd[/LINE]此贴于 2008-10-28 14:59:33 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:版主帮忙结贴~
作者: 虚幻死神    时间: 2008-10-26 05:54
話說.....LZ不要用QQ空間來轉圖.....看不到的說~
作者: 天圣的马甲    时间: 2008-10-27 10:35
是这个意思?只美化miss字串么?
if value == "Miss"
bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
作者: 小夜楼风    时间: 2008-10-27 20:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: 大地的雨    时间: 2008-10-27 20:48
我不是美工,所以没调整什么,只是应要求。用以下脚本吧。
  1. module RPG
  2.   class Sprite < ::Sprite
  3.     def damage(value, critical)
  4.       dispose_damage
  5.       if value.is_a?(Numeric)
  6.         damage_string = value.abs.to_s
  7.       else
  8.         damage_string = value.to_s
  9.       end
  10.       bitmap = Bitmap.new(160, 48)
  11.       if damage_string != "Miss"
  12.         bitmap.font.name = "Arial Black"
  13.         bitmap.font.size = 32
  14.         bitmap.font.color.set(0, 0, 0)
  15.         bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  16.         bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  17.         bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  18.         bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  19.         if value.is_a?(Numeric) and value < 0
  20.           bitmap.font.color.set(176, 255, 144)
  21.         else
  22.           bitmap.font.color.set(255, 255, 255)
  23.         end
  24.         bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  25.         if critical
  26.           bitmap.font.size = 20
  27.           bitmap.font.color.set(0, 0, 0)
  28.           bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  29.           bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  30.           bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  31.           bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  32.           bitmap.font.color.set(255, 255, 255)
  33.           bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  34.         end
  35.       else
  36.         bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  37.       end
  38.       @_damage_sprite = ::Sprite.new(self.viewport)
  39.       @_damage_sprite.bitmap = bitmap
  40.       @_damage_sprite.ox = 80
  41.       @_damage_sprite.oy = 20
  42.       @_damage_sprite.x = self.x
  43.       @_damage_sprite.y = self.y - self.oy / 2
  44.       @_damage_sprite.z = 3000
  45.       @_damage_duration = 40
  46.     end
  47.   end
  48. end
复制代码
[LINE]1,#dddddd[/LINE]系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~




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