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

Project1

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

[已经解决] 有事求教

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
75 小时
注册时间
2012-4-29
帖子
3
跳转到指定楼层
1
发表于 2014-2-3 07:10:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 fux2 于 2014-2-3 19:23 编辑

各位看帖的大大,我是新手,太难的脚本不会看,我用了论坛的脚本,发现一个问题,如图

左上角为我方受到的伤害数字,如何移动到箭头所指的地方?
范例工程点我下载 Project1.rar (1.43 MB, 下载次数: 61) ,有哪位大大能帮我弄一下,在此谢谢了。可以的话麻烦帮我#注释一下修改的地方


以下是脚本
  1. #==============================================================================
  2. # 功能:战斗中显示怪物受到的伤害和回复
  3. # 适用:RMVX Ace
  4. # 作者:殇殃 2012.3.13 改自 后知后觉的横版战斗模板v1.7  2012-02-09
  5. # 使用方法:复制整个脚本插入到Main之前
  6. #==============================================================================
  7. # ■ Sprite_Damage (新增类)
  8. #==============================================================================
  9. class Sprite_Damage < Sprite
  10.   #--------------------------------------------------------------------------
  11.   # ● 获取/生成伤害值源图
  12.   #--------------------------------------------------------------------------
  13.   @@obmp = nil
  14.   def self.obmp
  15.     if @@obmp.nil? or @@obmp.disposed?
  16.       @@obmp = Bitmap.new(180, 256)
  17.       #@@obmp.font.bold = true #粗黑体
  18.       #@@obmp.font.shadow = false #阴影
  19.       #@@obmp.font.outline = true #数字外围边框
  20.       @@obmp.font.out_color = Color.new(255, 255, 255, 255)
  21.       @@obmp.font.size = 32
  22.       colors = []
  23.       colors.push(Color.new(255,   0,   0, 255))#HP伤害颜色(红)
  24.       colors.push(Color.new(  0, 224,  96, 255))#HP回复颜色(亮绿)
  25.       colors.push(Color.new(  0,   0, 255, 255))#MP伤害颜色(蓝)
  26.       colors.push(Color.new(255, 255,  64, 255))#MP回复颜色(亮黄)
  27.       colors.push(Color.new(  0,   0,   0, 255))#TP伤害颜色(深黑)
  28.       colors.push(Color.new(255, 255, 255, 255))#TP回复颜色(白)
  29.       #Graphics/System/damage.png伤害图8行10列180×256
  30.       #第 1 行 HP 伤害数字0~9
  31.       #第 2 行 HP 回复数字0~9
  32.       #第 3 行 MP 伤害数字0~9
  33.       #第 4 行 MP 回复数字0~9
  34.       #第 5 行 TP 伤害数字0~9
  35.       #第 6 行 TP 回复数字0~9
  36.       #第 7 行 左边暴击(Critical)右边 攻击落空(Miss)
  37.       #第 8 行 左边闪避(Evasion) 右边 留空
  38.       colors.each_with_index do |color, hi| #每个数字占18×32
  39.         @@obmp.font.color = color
  40.         for wi in 0..9
  41.           @@obmp.draw_text(wi * 18, hi * 32, 18, 32, "#{wi}", 1)
  42.         end
  43.       end
  44.       @@obmp.font.size = 24 #字体大小
  45.       #@@obmp.font.italic = true #斜体
  46.       @@obmp.font.out_color = Color.new(0, 0, 0, 255)
  47.       @@obmp.font.color = Color.new(255,   0, 255, 255)#暴击等文字的颜色(亮粉红)
  48.       @@obmp.draw_text( 0, 192, 90, 32, "暴击", 1)
  49.       @@obmp.draw_text(90, 192, 90, 32, "Miss", 1)
  50.       @@obmp.draw_text( 0, 224, 90, 32, "闪避", 1)
  51.       #@@obmp.hue_change(0)# 设置伤害值图形的色相 取值范围 0~360
  52.     end
  53.     return @@obmp
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 初始化
  57.   #--------------------------------------------------------------------------
  58.   def initialize(viewport, args)
  59.     super(viewport)
  60.     @type = args[0] #伤害类型hp、mp、tp
  61.     @value = args[1] #伤害值
  62.     @critical = args[2] #是否暴击
  63.     self.x = args[4]
  64.     self.y = args[5]
  65.     self.z = args[6] + Graphics.height * 5
  66.     make_move(args[3])
  67.     refresh
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 生成移动数据
  71.   #--------------------------------------------------------------------------
  72.   def make_move(battler_obj_class)
  73.     @move = []
  74.     case battler_obj_class
  75.     when :actor
  76.       make_move_actor
  77.     when :enemy
  78.       make_move_enemy
  79.     else
  80.       make_move_default
  81.     end
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 生成移动数据 默认
  85.   #--------------------------------------------------------------------------
  86.   def make_move_default
  87.     45.times do |n|
  88.       if n % 3 == 0
  89.         ady = n < 21 ? -6 : -1
  90.         opa = n < 21 ? 255 : 255-(n-21)*6
  91.         @move.push([0, ady, opa])
  92.       else
  93.         @move.push([0, 0, -1])
  94.       end
  95.     end
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 生成移动数据 角色
  99.   #--------------------------------------------------------------------------
  100.   def make_move_actor
  101.     make_move_default
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 生成移动数据 敌人
  105.   #--------------------------------------------------------------------------
  106.   def make_move_enemy
  107.     make_move_default
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 描绘
  111.   #--------------------------------------------------------------------------
  112.   def refresh
  113.     if not self.bitmap.nil?
  114.       self.bitmap.dispose
  115.       self.bitmap = nil
  116.     end
  117.     begin
  118.       @obmp = Cache.system("damage")
  119.     rescue Errno::ENOENT
  120.       @obmp = Sprite_Damage.obmp #找不到伤害值显示图则使用自建的代替图
  121.     end
  122.     @numw = @obmp.width / 10
  123.     @numh = @obmp.height / 8
  124.     @strw = @obmp.width / 2
  125.     case @value
  126.     when Numeric #伤害值是数字
  127.       blt_obmp_numeric
  128.     when Symbol #伤害值是文字
  129.       blt_obmp_text
  130.     end
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 通过源图描绘数字
  134.   #--------------------------------------------------------------------------
  135.   def blt_obmp_numeric
  136.     nums = @value.to_i.abs.to_s.split("")
  137.     nbmpw = nums.size * @numw
  138.     bmph = @numh
  139.     cbmpw = 0
  140.     crect = nil
  141.     dy = 0
  142.     if @critical
  143.       cbmpw = @strw
  144.       bmph *= 2
  145.       crect = Rect.new(0, @numh * 6, @strw, @numh)
  146.       dy = @numh
  147.     end
  148.     self.bitmap = Bitmap.new([nbmpw, cbmpw, 32].max, [bmph, 32].max)
  149.     self.ox = bitmap.width / 2
  150.     self.oy = bmph /2
  151.     bitmap.blt((bitmap.width - cbmpw) / 2, 0, @obmp, crect) if crect
  152.     dx = (bitmap.width - nbmpw) / 2
  153.     ry = 0
  154.     case @type
  155.     when :hp
  156.       ry = @value >= 0 ? 0 : @numh
  157.     when :mp
  158.       ry = @value >= 0 ? @numh * 2 : @numh * 3
  159.     when :tp
  160.       ry = @value >= 0 ? @numh * 4 : @numh * 5
  161.     else
  162.       return
  163.     end
  164.     rect = Rect.new(0, ry, @numw, @numh)
  165.     nums.each_with_index do |str, i|
  166.       rect.x = str.to_i * @numw
  167.       bitmap.blt(dx, dy, @obmp, rect)
  168.       dx += @numw
  169.     end
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 通过源图描绘文字
  173.   #--------------------------------------------------------------------------
  174.   def blt_obmp_text
  175.     self.bitmap = Bitmap.new([@strw, 32].max, [@numh, 32].max)
  176.     self.ox = @strw / 2
  177.     self.oy = @numh / 2
  178.     rx = ry = 0
  179.     case @type
  180.     when :miss
  181.       rx = @strw
  182.       ry = @numh * 6
  183.     when :eva
  184.       ry = @numh * 7
  185.     else
  186.       return
  187.     end
  188.     rect = Rect.new(rx, ry, @strw, @numh)
  189.     bitmap.blt(0, 0, @obmp, rect)
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ● 释放
  193.   #--------------------------------------------------------------------------
  194.   def dispose
  195.     bitmap.dispose if bitmap
  196.     super
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ● 移动中判定
  200.   #--------------------------------------------------------------------------
  201.   def moving?
  202.     return (not @move.empty?)
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 刷新
  206.   #--------------------------------------------------------------------------
  207.   def update
  208.     super
  209.     if moving?
  210.       ary = @move.shift
  211.       self.x += ary[0]
  212.       self.y += ary[1]
  213.       self.opacity = ary[2] if ary[2] >= 0
  214.     end
  215.   end
  216. end

  217. #==============================================================================
  218. # ■ Window_BattleLog
  219. #==============================================================================
  220. class Window_BattleLog < Window_Selectable
  221.   #--------------------------------------------------------------------------
  222.   # ● 显示 MISS (追加定义)
  223.   #--------------------------------------------------------------------------
  224.   alias hzhj_old_display_miss_for_display_damage_wnd_btlog display_miss
  225.   def display_miss(target, item)
  226.     target.damage_for_show = [:miss, :miss, false]
  227.     hzhj_old_display_miss_for_display_damage_wnd_btlog(target, item)
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 显示回避 (追加定义)
  231.   #--------------------------------------------------------------------------
  232.   alias hzhj_old_display_evasion_for_display_damage_wnd_btlog display_evasion
  233.   def display_evasion(target, item)
  234.     target.damage_for_show = [:eva, :evasion, false]
  235.     hzhj_old_display_evasion_for_display_damage_wnd_btlog(target, item)
  236.   end
  237.   #--------------------------------------------------------------------------
  238.   # ● 显示 HP 伤害 (追加定义)
  239.   #--------------------------------------------------------------------------
  240.   alias hzhj_old_display_hp_damage_for_display_damage_wnd_btlog display_hp_damage
  241.   def display_hp_damage(target, item)
  242.     return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
  243.     value = target.result.hp_damage
  244.     critical = target.result.critical
  245.     target.damage_for_show = [:hp, value, critical]
  246.     hzhj_old_display_hp_damage_for_display_damage_wnd_btlog(target, item)
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● 显示 MP 伤害 (追加定义)
  250.   #--------------------------------------------------------------------------
  251.   alias hzhj_old_display_mp_damage_for_display_damage_wnd_btlog display_mp_damage
  252.   def display_mp_damage(target, item)
  253.     return if target.dead? || target.result.mp_damage == 0
  254.     value = target.result.mp_damage
  255.     critical = target.result.critical
  256.     target.damage_for_show = [:mp, value, critical]
  257.     hzhj_old_display_mp_damage_for_display_damage_wnd_btlog(target, item)
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 显示 TP 伤害 (追加定义)
  261.   #--------------------------------------------------------------------------
  262.   alias hzhj_old_display_tp_damage_for_display_damage_wnd_btlog display_tp_damage
  263.   def display_tp_damage(target, item)
  264.     return if target.dead? || target.result.tp_damage == 0
  265.     value = target.result.tp_damage
  266.     critical = target.result.critical
  267.     target.damage_for_show = [:tp, value, critical]
  268.     hzhj_old_display_tp_damage_for_display_damage_wnd_btlog(target, item)
  269.   end
  270. end

  271. #==============================================================================
  272. # ■ Sprite_Base
  273. #==============================================================================
  274. class Sprite_Base < Sprite
  275.   #--------------------------------------------------------------------------
  276.   # ● 初始化(追加定义)
  277.   #--------------------------------------------------------------------------
  278.   alias hzhj_old_init_for_display_damage_spr_base initialize
  279.   def initialize(*args)
  280.     hzhj_old_init_for_display_damage_spr_base(*args)
  281.     @damage_num_sprites = []
  282.   end
  283.   #--------------------------------------------------------------------------
  284.   # ● 释放(追加定义)
  285.   #--------------------------------------------------------------------------
  286.   alias hzhj_old_dispose_for_display_damage_spr_base dispose
  287.   def dispose
  288.     hzhj_old_dispose_for_display_damage_spr_base
  289.     dispose_damage
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ● 判断是否有伤害在显示(新增定义)
  293.   #--------------------------------------------------------------------------
  294.   def damage?
  295.     return (not @damage_num_sprites.empty?)
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● 开始显示伤害(新增定义)
  299.   #--------------------------------------------------------------------------
  300.   def start_damage(args)
  301.     args[4] = x - ox + width / 2
  302.     args[5] = y - oy + height / 2
  303.     args[6] = z
  304.     @damage_num_sprites.push(Sprite_Damage.new(viewport, args))
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● 释放所有伤害显示(新增定义)
  308.   #--------------------------------------------------------------------------
  309.   def dispose_damage
  310.     return unless damage?
  311.     @damage_num_sprites.each{|sprite|sprite.dispose}
  312.     @damage_num_sprites.clear
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ● 刷新(追加定义)
  316.   #--------------------------------------------------------------------------
  317.   alias hzhj_old_update_for_display_damage_spr_base update
  318.   def update
  319.     hzhj_old_update_for_display_damage_spr_base
  320.     update_damage
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● 刷新显示伤害(新增定义)
  324.   #--------------------------------------------------------------------------
  325.   def update_damage
  326.     return unless damage?
  327.     @damage_num_sprites.each_with_index do |sprite, i|
  328.       if sprite.moving?
  329.         sprite.update
  330.       else
  331.         sprite.dispose
  332.         @damage_num_sprites[i] = nil
  333.       end
  334.     end
  335.     @damage_num_sprites.delete(nil)
  336.   end
  337. end

  338. #==============================================================================
  339. # ■ Sprite_Battler
  340. #==============================================================================
  341. class Sprite_Battler < Sprite_Base
  342.   #--------------------------------------------------------------------------
  343.   # ● 刷新(追加定义)
  344.   #--------------------------------------------------------------------------
  345.   alias hzhj_old_update_for_display_damage_spr_battler update
  346.   def update
  347.     hzhj_old_update_for_display_damage_spr_battler
  348.     if @battler
  349.       if not @battler.damage_for_show.empty?
  350.         #unless @battler.damage_section_displayed
  351.           args = @battler.damage_for_show.clone
  352.           args[3] = @battler.actor? ? :actor : (@battler.enemy? ? :enemy : nil)
  353.           start_damage(args)
  354.         #end
  355.         @battler.damage_for_show.clear
  356.       end
  357.     end
  358.   end
  359.   
  360. end

  361. #==============================================================================
  362. # ■ Game_BattlerBase
  363. #==============================================================================
  364. class Game_BattlerBase
  365.   #--------------------------------------------------------------------------
  366.   # ● 实例变量(新增定义)
  367.   #--------------------------------------------------------------------------
  368.   attr_accessor :damage_for_show #hzhj_damage
  369.   #--------------------------------------------------------------------------
  370.   # ● 初始化(追加定义)
  371.   #--------------------------------------------------------------------------
  372.   alias hzhj_old_init_for_display_damage_game_battler_base initialize
  373.   def initialize
  374.     @damage_for_show = []
  375.     hzhj_old_init_for_display_damage_game_battler_base
  376.   end
  377. end
复制代码

Lv1.梦旅人

梦石
0
星屑
50
在线时间
75 小时
注册时间
2012-4-29
帖子
3
2
 楼主| 发表于 2014-2-3 07:14:06 | 只看该作者
沙发自己坐,消灭0回复

点评

小小警告一下,技术区不允许这样的。  发表于 2014-2-3 19:23
請注意,這裡不允許不必要地連帖  发表于 2014-2-3 08:36
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6182
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
3
发表于 2014-2-3 12:30:07 | 只看该作者
本帖最后由 正太君 于 2014-2-3 12:37 编辑

搜索正太君可以找到所有被修改的脚本
下面是修改成品、效果图和脚本...{:2_282:}
请版主大人们检阅...@protosssonny @fux2 @Sion @76213585
Project1.rar (1.43 MB, 下载次数: 64)

RUBY 代码复制
  1. #==============================================================================
  2. # 功能:战斗中显示怪物受到的伤害和回复
  3. # 适用:RMVX Ace
  4. # 作者:殇殃 2012.3.13 改自 后知后觉的横版战斗模板v1.7  2012-02-09
  5. # 使用方法:复制整个脚本插入到Main之前
  6. #==============================================================================
  7. # ■ Sprite_Damage (新增类)
  8. #==============================================================================
  9. class Sprite_Damage < Sprite
  10.   #--------------------------------------------------------------------------
  11.   # ● 获取/生成伤害值源图
  12.   #--------------------------------------------------------------------------
  13.   @@obmp = nil
  14.   def self.obmp
  15.     if @@obmp.nil? or @@obmp.disposed?
  16.        @@obmp = Bitmap.new(180, 256)
  17.       #@@obmp = Bitmap.new(180, 256)
  18.       #@@obmp.font.bold = true #粗黑体
  19.       #@@obmp.font.shadow = false #阴影
  20.       #@@obmp.font.outline = true #数字外围边框
  21.       @@obmp.font.out_color = Color.new(255, 255, 255, 255)
  22.       @@obmp.font.size = 32#32
  23.       colors = []
  24.       colors.push(Color.new(255,   0,   0, 255))#HP伤害颜色(红)
  25.       colors.push(Color.new(  0, 224,  96, 255))#HP回复颜色(亮绿)
  26.       colors.push(Color.new(  0,   0, 255, 255))#MP伤害颜色(蓝)
  27.       colors.push(Color.new(255, 255,  64, 255))#MP回复颜色(亮黄)
  28.       colors.push(Color.new(  0,   0,   0, 255))#TP伤害颜色(深黑)
  29.       colors.push(Color.new(255, 255, 255, 255))#TP回复颜色(白)
  30.       #Graphics/System/damage.png伤害图8行10列180×256
  31.       #第 1 行 HP 伤害数字0~9
  32.       #第 2 行 HP 回复数字0~9
  33.       #第 3 行 MP 伤害数字0~9
  34.       #第 4 行 MP 回复数字0~9
  35.       #第 5 行 TP 伤害数字0~9
  36.       #第 6 行 TP 回复数字0~9
  37.       #第 7 行 左边暴击(Critical)右边 攻击落空(Miss)
  38.       #第 8 行 左边闪避(Evasion) 右边 留空
  39.       colors.each_with_index do |color, hi| #每个数字占18×32
  40.         @@obmp.font.color = color
  41.         for wi in 0..9
  42.           @@obmp.draw_text(wi * 18, hi * 32, 18, 32, "#{wi}", 1)
  43.         end
  44.       end
  45.       @@obmp.font.size = 24#24 #字体大小
  46.       #@@obmp.font.italic = true #斜体
  47.       @@obmp.font.out_color = Color.new(0, 0, 0, 255)
  48.       @@obmp.font.color = Color.new(255,   0, 255, 255)#暴击等文字的颜色(亮粉红)
  49.       @@obmp.draw_text( 0, 192, 90, 32, "暴击", 1)
  50.       @@obmp.draw_text(90, 192, 90, 32, "Miss", 1)
  51.       @@obmp.draw_text( 0, 224, 90, 32, "闪避", 1)
  52.       #@@obmp.hue_change(0)# 设置伤害值图形的色相 取值范围 0~360
  53.     end
  54.     return @@obmp
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 初始化
  58.   #--------------------------------------------------------------------------
  59.   def initialize(viewport, args)
  60.     super(viewport)
  61.     @type = args[0] #伤害类型hp、mp、tp
  62.     @value = args[1] #伤害值
  63.     @critical = args[2] #是否暴击
  64.     self.x = args[4]
  65.     self.y = args[5]
  66.     self.z = args[6] + Graphics.height * 5
  67.     make_move(args[3])
  68.     refresh
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 生成移动数据
  72.   #--------------------------------------------------------------------------
  73.   def make_move(battler_obj_class)
  74.     @move = []
  75.     case battler_obj_class
  76.     when :actor
  77.       make_move_actor
  78.     when :enemy
  79.       make_move_enemy
  80.     else
  81.       make_move_default
  82.     end
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 生成移动数据 默认
  86.   #--------------------------------------------------------------------------
  87.   def make_move_default
  88.     45.times do |n|
  89.       if n % 3 == 0
  90.         ady = n < 21 ? -6 : -1
  91.         opa = n < 21 ? 255 : 255-(n-21)*6
  92.         @move.push([0, ady, opa])
  93.       else
  94.         @move.push([0, 0, -1])
  95.       end
  96.     end
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 生成移动数据 角色
  100.   #--------------------------------------------------------------------------
  101.   def make_move_actor
  102.     make_move_default
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 生成移动数据 敌人
  106.   #--------------------------------------------------------------------------
  107.   def make_move_enemy
  108.     make_move_default
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 描绘
  112.   #--------------------------------------------------------------------------
  113.   def refresh
  114.     if not self.bitmap.nil?
  115.       self.bitmap.dispose
  116.       self.bitmap = nil
  117.     end
  118.     begin
  119.       @obmp = Cache.system("damage")
  120.     rescue Errno::ENOENT
  121.       @obmp = Sprite_Damage.obmp #找不到伤害值显示图则使用自建的代替图
  122.     end
  123.     @numw = @obmp.width / 10
  124.     @numh = @obmp.height / 8
  125.     @strw = @obmp.width / 2
  126.     case @value
  127.     when Numeric #伤害值是数字
  128.       blt_obmp_numeric
  129.     when Symbol #伤害值是文字
  130.       blt_obmp_text
  131.     end
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 通过源图描绘数字
  135.   #--------------------------------------------------------------------------
  136.   def blt_obmp_numeric
  137.     nums = @value.to_i.abs.to_s.split("")
  138.     nbmpw = nums.size * @numw
  139.     bmph = @numh
  140.     cbmpw = 0
  141.     crect = nil
  142.     dy = 0
  143.     if @critical
  144.       cbmpw = @strw
  145.       bmph *= 2
  146.       crect = Rect.new(0, @numh * 6, @strw, @numh)
  147.       dy = @numh
  148.     end
  149.     self.bitmap = Bitmap.new([nbmpw, cbmpw, 32].max, [bmph, 32].max)
  150.     self.ox = bitmap.width / 2
  151.     self.oy = bmph /2
  152.     bitmap.blt((bitmap.width - cbmpw) / 2, 0, @obmp, crect) if crect
  153.     dx = (bitmap.width - nbmpw) / 2
  154.     ry = 0
  155.     case @type
  156.     when :hp
  157.       ry = @value >= 0 ? 0 : @numh
  158.     when :mp
  159.       ry = @value >= 0 ? @numh * 2 : @numh * 3
  160.     when :tp
  161.       ry = @value >= 0 ? @numh * 4 : @numh * 5
  162.     else
  163.       return
  164.     end
  165.     rect = Rect.new(0, ry, @numw, @numh)
  166.     nums.each_with_index do |str, i|
  167.       rect.x = str.to_i * @numw
  168.       bitmap.blt(dx, dy, @obmp, rect)
  169.       dx += @numw
  170.     end
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 通过源图描绘文字
  174.   #--------------------------------------------------------------------------
  175.   def blt_obmp_text
  176.     self.bitmap = Bitmap.new([@strw, 32].max, [@numh, 32].max)
  177.     self.ox = @strw / 2
  178.     self.oy = @numh / 2
  179.     rx = ry = 0
  180.     case @type
  181.     when :miss
  182.       rx = @strw
  183.       ry = @numh * 6
  184.     when :eva
  185.       ry = @numh * 7
  186.     else
  187.       return
  188.     end
  189.     rect = Rect.new(rx, ry, @strw, @numh)
  190.     bitmap.blt(0, 0, @obmp, rect)
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 释放
  194.   #--------------------------------------------------------------------------
  195.   def dispose
  196.     bitmap.dispose if bitmap
  197.     super
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 移动中判定
  201.   #--------------------------------------------------------------------------
  202.   def moving?
  203.     return (not @move.empty?)
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 刷新
  207.   #--------------------------------------------------------------------------
  208.   def update
  209.     super
  210.     if moving?
  211.       ary = @move.shift
  212.       self.x += ary[0]
  213.       self.y += ary[1]
  214.       self.opacity = ary[2] if ary[2] >= 0
  215.     end
  216.   end
  217. end
  218.  
  219. #==============================================================================
  220. # ■ Window_BattleLog
  221. #==============================================================================
  222. class Window_BattleLog < Window_Selectable
  223.   #--------------------------------------------------------------------------
  224.   # ● 显示 MISS (追加定义)
  225.   #--------------------------------------------------------------------------
  226.   alias hzhj_old_display_miss_for_display_damage_wnd_btlog display_miss
  227.   def display_miss(target, item)
  228.     target.damage_for_show = [:miss, :miss, false]
  229.     hzhj_old_display_miss_for_display_damage_wnd_btlog(target, item)
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 显示回避 (追加定义)
  233.   #--------------------------------------------------------------------------
  234.   alias hzhj_old_display_evasion_for_display_damage_wnd_btlog display_evasion
  235.   def display_evasion(target, item)
  236.     target.damage_for_show = [:eva, :evasion, false]
  237.     hzhj_old_display_evasion_for_display_damage_wnd_btlog(target, item)
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ● 显示 HP 伤害 (追加定义)
  241.   #--------------------------------------------------------------------------
  242.   alias hzhj_old_display_hp_damage_for_display_damage_wnd_btlog display_hp_damage
  243.   def display_hp_damage(target, item)
  244.     return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
  245.     value = target.result.hp_damage
  246.     critical = target.result.critical
  247.     target.damage_for_show = [:hp, value, critical]
  248.     hzhj_old_display_hp_damage_for_display_damage_wnd_btlog(target, item)
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 显示 MP 伤害 (追加定义)
  252.   #--------------------------------------------------------------------------
  253.   alias hzhj_old_display_mp_damage_for_display_damage_wnd_btlog display_mp_damage
  254.   def display_mp_damage(target, item)
  255.     return if target.dead? || target.result.mp_damage == 0
  256.     value = target.result.mp_damage
  257.     critical = target.result.critical
  258.     target.damage_for_show = [:mp, value, critical]
  259.     hzhj_old_display_mp_damage_for_display_damage_wnd_btlog(target, item)
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● 显示 TP 伤害 (追加定义)
  263.   #--------------------------------------------------------------------------
  264.   alias hzhj_old_display_tp_damage_for_display_damage_wnd_btlog display_tp_damage
  265.   def display_tp_damage(target, item)
  266.     return if target.dead? || target.result.tp_damage == 0
  267.     value = target.result.tp_damage
  268.     critical = target.result.critical
  269.     target.damage_for_show = [:tp, value, critical]
  270.     hzhj_old_display_tp_damage_for_display_damage_wnd_btlog(target, item)
  271.   end
  272. end
  273.  
  274. #==============================================================================
  275. # ■ Sprite_Base
  276. #==============================================================================
  277. class Sprite_Base < Sprite
  278.   #--------------------------------------------------------------------------
  279.   # ● 初始化(追加定义)
  280.   #--------------------------------------------------------------------------
  281.   alias hzhj_old_init_for_display_damage_spr_base initialize
  282.   def initialize(*args)
  283.     hzhj_old_init_for_display_damage_spr_base(*args)
  284.     @damage_num_sprites = []
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # ● 释放(追加定义)
  288.   #--------------------------------------------------------------------------
  289.   alias hzhj_old_dispose_for_display_damage_spr_base dispose
  290.   def dispose
  291.     hzhj_old_dispose_for_display_damage_spr_base
  292.     dispose_damage
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ● 判断是否有伤害在显示(新增定义)
  296.   #--------------------------------------------------------------------------
  297.   def damage?
  298.     return (not @damage_num_sprites.empty?)
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● 开始显示伤害(新增定义)正太君修改
  302.   #--------------------------------------------------------------------------
  303.   def start_damage(args)
  304.     if[x,y] == [0,0]
  305.       args[4] = @damage_x
  306.       args[5] = @damage_y
  307.     else  
  308.       args[4] = x - ox + width / 2
  309.       args[5] = y - oy + height / 2
  310.     end  
  311.     args[6] = z
  312.     if @viewport_damage.nil?
  313.       @viewport_damage = Viewport.new
  314.       @viewport_damage.z = 1000
  315.     end
  316.     @damage_num_sprites.push(Sprite_Damage.new(@viewport_damage, args))
  317.     #@damage_num_sprites.push(Sprite_Damage.new(viewport, args))
  318.   end
  319.   #--------------------------------------------------------------------------
  320.   # ● 释放所有伤害显示(新增定义)
  321.   #--------------------------------------------------------------------------
  322.   def dispose_damage
  323.     return unless damage?
  324.     @damage_num_sprites.each{|sprite|sprite.dispose}
  325.     @damage_num_sprites.clear
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● 刷新(追加定义)
  329.   #--------------------------------------------------------------------------
  330.   alias hzhj_old_update_for_display_damage_spr_base update
  331.   def update
  332.     hzhj_old_update_for_display_damage_spr_base
  333.     update_damage
  334.   end
  335.   #--------------------------------------------------------------------------
  336.   # ● 刷新显示伤害(新增定义)
  337.   #--------------------------------------------------------------------------
  338.   def update_damage
  339.     return unless damage?
  340.     @damage_num_sprites.each_with_index do |sprite, i|
  341.       if sprite.moving?
  342.         sprite.update
  343.       else
  344.         sprite.dispose
  345.         @damage_num_sprites[i] = nil
  346.       end
  347.     end
  348.     @damage_num_sprites.delete(nil)
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● 正太君增加定义
  352.   #--------------------------------------------------------------------------
  353.   def actor_location(battler)
  354.     order = 0
  355.     xy = []
  356.     for i in 0...$game_party.members.size
  357.       if $game_party.members[i] == battler
  358.         order = i
  359.         break
  360.       end
  361.     end
  362.     status_window = SceneManager.scene.instance_variable_get(:@status_window)
  363.     @damage_x = 272
  364.     @damage_y = 288 + status_window.item_rect_for_text(order).y
  365.   end
  366. end
  367.  
  368. #==============================================================================
  369. # ■ Sprite_Battler
  370. #==============================================================================
  371. class Sprite_Battler < Sprite_Base
  372.   #--------------------------------------------------------------------------
  373.   # ● 刷新(追加定义)
  374.   #--------------------------------------------------------------------------
  375.   alias hzhj_old_update_for_display_damage_spr_battler update
  376.   def update
  377.     hzhj_old_update_for_display_damage_spr_battler
  378.     if @battler
  379.       if not @battler.damage_for_show.empty?
  380.         #unless @battler.damage_section_displayed
  381.           args = @battler.damage_for_show.clone
  382.           args[3] = @battler.actor? ? :actor : (@battler.enemy? ? :enemy : nil)
  383.           actor_location(@battler) # 正太君增加
  384.           start_damage(args)
  385.         #end
  386.         @battler.damage_for_show.clear
  387.       end
  388.     end
  389.   end
  390.  
  391. end
  392.  
  393. #==============================================================================
  394. # ■ Game_BattlerBase
  395. #==============================================================================
  396. class Game_BattlerBase
  397.   #--------------------------------------------------------------------------
  398.   # ● 实例变量(新增定义)
  399.   #--------------------------------------------------------------------------
  400.   attr_accessor :damage_for_show #hzhj_damage
  401.   #--------------------------------------------------------------------------
  402.   # ● 初始化(追加定义)
  403.   #--------------------------------------------------------------------------
  404.   alias hzhj_old_init_for_display_damage_game_battler_base initialize
  405.   def initialize
  406.     @damage_for_show = []
  407.     hzhj_old_init_for_display_damage_game_battler_base
  408.   end
  409. end
  

点评

这个还是楼主评定比较好,我们也无法替代楼主满意- -  发表于 2014-2-3 19:22
@170136386  发表于 2014-2-3 15:52
正太君的答题风格越来越像吾了!!!话说VA区这边一般是S叔管,吾是主管VX区那边,如果S叔没有来的话吾再来看看喵~小黄鸡好像有时亦会来管喵~  发表于 2014-2-3 12:35
噗 请检阅……  发表于 2014-2-3 12:32

评分

参与人数 1星屑 +50 收起 理由
fux2 + 50 认可答案,只改一个坐标的话- -就50了(怪P.

查看全部评分

聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
75 小时
注册时间
2012-4-29
帖子
3
4
 楼主| 发表于 2014-2-3 17:44:48 | 只看该作者
效果很好 谢谢正太君
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 18:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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