查看: 4041|回复: 10

[已经解决] 如何删除伤害显示文本

[复制链接]
梦石
0
星屑
80
在线时间
19 小时
注册时间
2017-2-27
回帖
17
发表于 2017-6-24 10:57:19 | 显示全部楼层 |阅读模式

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

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

×
此外,能不能提供一个VX的伤害显示脚本

如图所示

如图所示
梦石
0
星屑
80
在线时间
19 小时
注册时间
2017-2-27
回帖
17
 楼主| 发表于 2017-6-24 11:02:01 | 显示全部楼层
下图是VA的Damage Popup脚本,有没有类似的VX脚本

就像这样

就像这样
回复

使用道具 举报

梦石
0
星屑
80
在线时间
19 小时
注册时间
2017-2-27
回帖
17
 楼主| 发表于 2017-6-24 11:05:21 | 显示全部楼层
我在Yanfly的VX专区里也没有找到,6R上也没有,哪位大神帮忙提供一个~
回复

使用道具 举报

梦石
0
星屑
80
在线时间
19 小时
注册时间
2017-2-27
回帖
17
 楼主| 发表于 2017-6-24 11:50:37 | 显示全部楼层
VA的方法我会,求教VX的方法!!!
回复

使用道具 举报

梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2017-6-24 19:22:42 | 显示全部楼层
本帖最后由 张咚咚 于 2017-6-24 19:27 编辑

[pre lang="ruby"]
class Scene_Battle < Scene_Base
  alias new_start start
  def start
    new_start
    @damage_ = Sprite_Damage.new
  end
  alias new_terminate terminate
  def terminate
    new_terminate
    @damage_.dispose
  end
  alias new_update_basic update_basic
  def update_basic(main = false)
    new_update_basic(main)
    @damage_.update
  end
  alias new_display_hp_damage display_hp_damage
  def display_hp_damage(target, obj = nil)
    @damage_.start_damage(target.screen_x, target.screen_y - 30, target.hp_damage, "")
    new_display_hp_damage(target, obj)
  end
end


class Sprite_Damage < Sprite_Base
  
  def initialize
    super(Viewport.new(0, 0, 544, 416))
    @xxx = 0
    @yyy = 0
    @_damage_duration = 0
  end
  
  def start_damage(xxx, yyy, value, damage_type)
    dispose
    @xxx = xxx
    @yyy = yyy
    if value.is_a?(Numeric)
      damage_string = value.abs.to_s
    else
      damage_string = value.to_s
    end
    bitmap = Bitmap.new(160, 48)
    bitmap.font.name = "方正粗圆简体"
    #暴击
    if damage_type == "Critical"
      #设置数值
      bitmap.font.size = 22
      bitmap.font.color.set(180, 0, 0)
      bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
      bitmap.font.color.set(255, 0, 0)
      bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      #设置文本
      bitmap.font.size = 18
      bitmap.font.color.set(180, 0, 0)
      bitmap.draw_text(-1, -1, 160, 20, "暴击", 1)
      bitmap.draw_text(+1, -1, 160, 20, "暴击", 1)
      bitmap.draw_text(-1, +1, 160, 20, "暴击", 1)
      bitmap.draw_text(+1, +1, 160, 20, "暴击", 1)
      bitmap.font.color.set(255, 0, 0)
      bitmap.draw_text(0, 0, 160, 20, "暴击", 1)
    #伤害
    elsif damage_type == ""
      bitmap.font.size = 22
      if value.is_a?(Numeric)
        if value <= 0
          bitmap.font.color.set(0, 180, 0)
        else
          bitmap.font.color.set(180, 0, 0)
        end
      else
        bitmap.font.color.set(0, 0, 0)
      end
      bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
      if value.is_a?(Numeric)
        if value <= 0
          bitmap.font.color.set(0, 255, 0)
        else
          bitmap.font.color.set(255, 0, 0)
        end
      else
        bitmap.font.color.set(255, 255, 255)
      end
      bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
    end
      @_damage_sprite = ::Sprite.new(self.viewport)
      @_damage_sprite.bitmap = bitmap
      @_damage_sprite.ox = 80
      @_damage_sprite.oy = 20
      @_damage_sprite.x = self.x
      @_damage_sprite.y = self.y - self.oy
      @_damage_sprite.z = 3000
      @_damage_duration = 40
      update
  end
   
  def update
    if @_damage_duration > 0
      @_damage_sprite.x = @xxx
      @_damage_sprite.y = @yyy
      @_damage_duration -= 1
      case @_damage_duration
      when 38..39
        @_damage_sprite.y -= 4
      when 36..37
        @_damage_sprite.y -= 2
      when 34..35
        @_damage_sprite.y += 2
      when 28..33
        @_damage_sprite.y += 4
      end
      @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
      dispose() if @_damage_duration == 0
    end
  end
  
  def dispose
    if @_damage_sprite != nil
      @_damage_sprite.bitmap.dispose
      @_damage_sprite.dispose
      @_damage_sprite = nil
      @_damage_duration = 0
    end
  end
end[/pre]


自己找的一个地图显示伤害脚本改了改,插入到main之前,好像没什么问题

评分

参与人数 1梦石 +1 收起 理由
怪蜀黍 + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
80
在线时间
19 小时
注册时间
2017-2-27
回帖
17
 楼主| 发表于 2017-6-26 13:54:05 | 显示全部楼层
张咚咚 发表于 2017-6-24 19:22
class Scene_Battle < Scene_Base
  alias new_start start
  def start

感激不尽~
回复

使用道具 举报

梦石
0
星屑
80
在线时间
19 小时
注册时间
2017-2-27
回帖
17
 楼主| 发表于 2017-6-26 14:15:42 | 显示全部楼层
@张咚咚 ……大神,这个脚本在敌方攻击的时候会出错啊……
无标题.png
回复

使用道具 举报

梦石
0
星屑
80
在线时间
19 小时
注册时间
2017-2-27
回帖
17
 楼主| 发表于 2017-6-26 14:18:05 | 显示全部楼层
此外,大神能不能把伤害显示的数字往画面上方放一点,否则好像会和敌人血条脚本显示的血条重合……
回复

使用道具 举报

梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2017-6-26 22:06:54 | 显示全部楼层
本帖最后由 张咚咚 于 2017-6-26 22:12 编辑
OverTheHorizon 发表于 2017-6-26 14:18
此外,大神能不能把伤害显示的数字往画面上方放一点,否则好像会和敌人血条脚本显示的血条重合……{:4_113: ...


@damage_.start_damage(target.screen_x, target.screen_y - 30, target.hp_damage, "") if target.is_a?(Game_Enemy)
把上面这行替换原来的第十九行就不会出错了,显示位置调整这行的Y坐标就行了
回复

使用道具 举报

梦石
0
星屑
80
在线时间
19 小时
注册时间
2017-2-27
回帖
17
 楼主| 发表于 2017-6-26 22:15:36 | 显示全部楼层
张咚咚 发表于 2017-6-26 22:06
@damage_.start_damage(target.screen_x, target.screen_y - 30, target.hp_damage, "") if target.is_a? ...

谢大神~
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部