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

Project1

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

[已经过期] 求一个显示掉血的脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
85
在线时间
87 小时
注册时间
2013-1-13
帖子
66
跳转到指定楼层
1
发表于 2015-8-21 16:43:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
就是当造成伤害时,敌人战斗图上跳出红色的数字,然后消失的脚本,刚刚搜索了一下也没看到,就求大神发一个。。

Lv1.梦旅人

梦石
0
星屑
55
在线时间
314 小时
注册时间
2013-2-4
帖子
81
2
发表于 2015-8-21 17:09:18 | 只看该作者
是不是要这个?
  1. #==============================================================================

  2. # ■ Sprite_Damage (新增类)

  3. #==============================================================================

  4. class Sprite_Damage < Sprite

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

  6.   # ● 获取/生成伤害值源图

  7.   #--------------------------------------------------------------------------

  8.   @@obmp = nil

  9.   def self.obmp

  10.     if @@obmp.nil? or @@obmp.disposed?

  11.       @@obmp = Bitmap.new(180, 256)

  12.       #@@obmp.font.bold = true #粗黑体

  13.       #@@obmp.font.shadow = false #阴影

  14.       #@@obmp.font.outline = true #数字外围边框

  15.       @@obmp.font.out_color = Color.new(255, 255, 255, 255)

  16.       @@obmp.font.size = 32

  17.       colors = []

  18.       colors.push(Color.new(255,   0,   0, 255))#HP伤害颜色(红)

  19.       colors.push(Color.new(  0, 224,  96, 255))#HP回复颜色(亮绿)

  20.       colors.push(Color.new(  0,   0, 255, 255))#MP伤害颜色(蓝)

  21.       colors.push(Color.new(255, 255,  64, 255))#MP回复颜色(亮黄)

  22.       colors.push(Color.new(  0,   0,   0, 255))#TP伤害颜色(深黑)

  23.       colors.push(Color.new(255, 255, 255, 255))#TP回复颜色(白)

  24.       #Graphics/System/damage.png伤害图8行10列180×256

  25.       #第 1 行 HP 伤害数字0~9

  26.       #第 2 行 HP 回复数字0~9

  27.       #第 3 行 MP 伤害数字0~9

  28.       #第 4 行 MP 回复数字0~9

  29.       #第 5 行 TP 伤害数字0~9

  30.       #第 6 行 TP 回复数字0~9

  31.       #第 7 行 左边暴击(Critical)右边 攻击落空(Miss)

  32.       #第 8 行 左边闪避(Evasion) 右边 留空

  33.       colors.each_with_index do |color, hi| #每个数字占18×32

  34.         @@obmp.font.color = color

  35.         for wi in 0..9

  36.           @@obmp.draw_text(wi * 18, hi * 32, 18, 32, "#{wi}", 1)

  37.         end

  38.       end

  39.       @@obmp.font.size = 24 #字体大小

  40.       #@@obmp.font.italic = true #斜体

  41.       @@obmp.font.out_color = Color.new(0, 0, 0, 255)

  42.       @@obmp.font.color = Color.new(255,   0, 255, 255)#暴击等文字的颜色(亮粉红)

  43.       @@obmp.draw_text( 0, 192, 90, 32, "暴击", 1)

  44.       @@obmp.draw_text(90, 192, 90, 32, "Miss", 1)

  45.       @@obmp.draw_text( 0, 224, 90, 32, "闪避", 1)

  46.       #@@obmp.hue_change(0)# 设置伤害值图形的色相 取值范围 0~360

  47.     end

  48.     return @@obmp

  49.   end

  50.   #--------------------------------------------------------------------------

  51.   # ● 初始化

  52.   #--------------------------------------------------------------------------

  53.   def initialize(viewport, args)

  54.     super(viewport)

  55.     @type = args[0] #伤害类型hp、mp、tp

  56.     @value = args[1] #伤害值

  57.     @critical = args[2] #是否暴击

  58.     self.x = args[4]

  59.     self.y = args[5]

  60.     self.z = args[6] + Graphics.height * 5

  61.     make_move(args[3])

  62.     refresh

  63.   end

  64.   #--------------------------------------------------------------------------

  65.   # ● 生成移动数据

  66.   #--------------------------------------------------------------------------

  67.   def make_move(battler_obj_class)

  68.     @move = []

  69.     case battler_obj_class

  70.     when :actor

  71.       make_move_actor

  72.     when :enemy

  73.       make_move_enemy

  74.     else

  75.       make_move_default

  76.     end

  77.   end

  78.   #--------------------------------------------------------------------------

  79.   # ● 生成移动数据 默认

  80.   #--------------------------------------------------------------------------

  81.   def make_move_default

  82.     45.times do |n|

  83.       if n % 3 == 0

  84.         ady = n < 21 ? -6 : -1

  85.         opa = n < 21 ? 255 : 255-(n-21)*6

  86.         @move.push([0, ady, opa])

  87.       else

  88.         @move.push([0, 0, -1])

  89.       end

  90.     end

  91.   end

  92.   #--------------------------------------------------------------------------

  93.   # ● 生成移动数据 角色

  94.   #--------------------------------------------------------------------------

  95.   def make_move_actor

  96.     make_move_default

  97.   end

  98.   #--------------------------------------------------------------------------

  99.   # ● 生成移动数据 敌人

  100.   #--------------------------------------------------------------------------

  101.   def make_move_enemy

  102.     make_move_default

  103.   end

  104.   #--------------------------------------------------------------------------

  105.   # ● 描绘

  106.   #--------------------------------------------------------------------------

  107.   def refresh

  108.     if not self.bitmap.nil?

  109.       self.bitmap.dispose

  110.       self.bitmap = nil

  111.     end

  112.     begin

  113.       @obmp = Cache.system("damage")

  114.     rescue Errno::ENOENT

  115.       @obmp = Sprite_Damage.obmp #找不到伤害值显示图则使用自建的代替图

  116.     end

  117.     @numw = @obmp.width / 10

  118.     @numh = @obmp.height / 8

  119.     @strw = @obmp.width / 2

  120.     case @value

  121.     when Numeric #伤害值是数字

  122.       blt_obmp_numeric

  123.     when Symbol #伤害值是文字

  124.       blt_obmp_text

  125.     end

  126.   end

  127.   #--------------------------------------------------------------------------

  128.   # ● 通过源图描绘数字

  129.   #--------------------------------------------------------------------------

  130.   def blt_obmp_numeric

  131.     nums = @value.to_i.abs.to_s.split("")

  132.     nbmpw = nums.size * @numw

  133.     bmph = @numh

  134.     cbmpw = 0

  135.     crect = nil

  136.     dy = 0

  137.     if @critical

  138.       cbmpw = @strw

  139.       bmph *= 2

  140.       crect = Rect.new(0, @numh * 6, @strw, @numh)

  141.       dy = @numh

  142.     end

  143.     self.bitmap = Bitmap.new([nbmpw, cbmpw, 32].max, [bmph, 32].max)

  144.     self.ox = bitmap.width / 2

  145.     self.oy = bmph /2

  146.     bitmap.blt((bitmap.width - cbmpw) / 2, 0, @obmp, crect) if crect

  147.     dx = (bitmap.width - nbmpw) / 2

  148.     ry = 0

  149.     case @type

  150.     when :hp

  151.       ry = @value >= 0 ? 0 : @numh

  152.     when :mp

  153.       ry = @value >= 0 ? @numh * 2 : @numh * 3

  154.     when :tp

  155.       ry = @value >= 0 ? @numh * 4 : @numh * 5

  156.     else

  157.       return

  158.     end

  159.     rect = Rect.new(0, ry, @numw, @numh)

  160.     nums.each_with_index do |str, i|

  161.       rect.x = str.to_i * @numw

  162.       bitmap.blt(dx, dy, @obmp, rect)

  163.       dx += @numw

  164.     end

  165.   end

  166.   #--------------------------------------------------------------------------

  167.   # ● 通过源图描绘文字

  168.   #--------------------------------------------------------------------------

  169.   def blt_obmp_text

  170.     self.bitmap = Bitmap.new([@strw, 32].max, [@numh, 32].max)

  171.     self.ox = @strw / 2

  172.     self.oy = @numh / 2

  173.     rx = ry = 0

  174.     case @type

  175.     when :miss

  176.       rx = @strw

  177.       ry = @numh * 6

  178.     when :eva

  179.       ry = @numh * 7

  180.     else

  181.       return

  182.     end

  183.     rect = Rect.new(rx, ry, @strw, @numh)

  184.     bitmap.blt(0, 0, @obmp, rect)

  185.   end

  186.   #--------------------------------------------------------------------------

  187.   # ● 释放

  188.   #--------------------------------------------------------------------------

  189.   def dispose

  190.     bitmap.dispose if bitmap

  191.     super

  192.   end

  193.   #--------------------------------------------------------------------------

  194.   # ● 移动中判定

  195.   #--------------------------------------------------------------------------

  196.   def moving?

  197.     return (not @move.empty?)

  198.   end

  199.   #--------------------------------------------------------------------------

  200.   # ● 刷新

  201.   #--------------------------------------------------------------------------

  202.   def update

  203.     super

  204.     if moving?

  205.       ary = @move.shift

  206.       self.x += ary[0]

  207.       self.y += ary[1]

  208.       self.opacity = ary[2] if ary[2] >= 0

  209.     end

  210.   end

  211. end


  212. #==============================================================================

  213. # ■ Window_BattleLog

  214. #==============================================================================

  215. class Window_BattleLog < Window_Selectable

  216.   #--------------------------------------------------------------------------

  217.   # ● 显示 MISS (追加定义)

  218.   #--------------------------------------------------------------------------

  219.   alias hzhj_old_display_miss_for_display_damage_wnd_btlog display_miss

  220.   def display_miss(target, item)

  221.     target.damage_for_show = [:miss, :miss, false]

  222.     hzhj_old_display_miss_for_display_damage_wnd_btlog(target, item)

  223.   end

  224.   #--------------------------------------------------------------------------

  225.   # ● 显示回避 (追加定义)

  226.   #--------------------------------------------------------------------------

  227.   alias hzhj_old_display_evasion_for_display_damage_wnd_btlog display_evasion

  228.   def display_evasion(target, item)

  229.     target.damage_for_show = [:eva, :evasion, false]

  230.     hzhj_old_display_evasion_for_display_damage_wnd_btlog(target, item)

  231.   end

  232.   #--------------------------------------------------------------------------

  233.   # ● 显示 HP 伤害 (追加定义)

  234.   #--------------------------------------------------------------------------

  235.   alias hzhj_old_display_hp_damage_for_display_damage_wnd_btlog display_hp_damage

  236.   def display_hp_damage(target, item)

  237.     return if target.result.hp_damage == 0 && item && !item.damage.to_hp?

  238.     value = target.result.hp_damage

  239.     critical = target.result.critical

  240.     target.damage_for_show = [:hp, value, critical]

  241.     hzhj_old_display_hp_damage_for_display_damage_wnd_btlog(target, item)

  242.   end

  243.   #--------------------------------------------------------------------------

  244.   # ● 显示 MP 伤害 (追加定义)

  245.   #--------------------------------------------------------------------------

  246.   alias hzhj_old_display_mp_damage_for_display_damage_wnd_btlog display_mp_damage

  247.   def display_mp_damage(target, item)

  248.     return if target.dead? || target.result.mp_damage == 0

  249.     value = target.result.mp_damage

  250.     critical = target.result.critical

  251.     target.damage_for_show = [:mp, value, critical]

  252.     hzhj_old_display_mp_damage_for_display_damage_wnd_btlog(target, item)

  253.   end

  254.   #--------------------------------------------------------------------------

  255.   # ● 显示 TP 伤害 (追加定义)

  256.   #--------------------------------------------------------------------------

  257.   alias hzhj_old_display_tp_damage_for_display_damage_wnd_btlog display_tp_damage

  258.   def display_tp_damage(target, item)

  259.     return if target.dead? || target.result.tp_damage == 0

  260.     value = target.result.tp_damage

  261.     critical = target.result.critical

  262.     target.damage_for_show = [:tp, value, critical]

  263.     hzhj_old_display_tp_damage_for_display_damage_wnd_btlog(target, item)

  264.   end

  265. end


  266. #==============================================================================

  267. # ■ Sprite_Base

  268. #==============================================================================

  269. class Sprite_Base < Sprite

  270.   #--------------------------------------------------------------------------

  271.   # ● 初始化(追加定义)

  272.   #--------------------------------------------------------------------------

  273.   alias hzhj_old_init_for_display_damage_spr_base initialize

  274.   def initialize(*args)

  275.     hzhj_old_init_for_display_damage_spr_base(*args)

  276.     @damage_num_sprites = []

  277.   end

  278.   #--------------------------------------------------------------------------

  279.   # ● 释放(追加定义)

  280.   #--------------------------------------------------------------------------

  281.   alias hzhj_old_dispose_for_display_damage_spr_base dispose

  282.   def dispose

  283.     hzhj_old_dispose_for_display_damage_spr_base

  284.     dispose_damage

  285.   end

  286.   #--------------------------------------------------------------------------

  287.   # ● 判断是否有伤害在显示(新增定义)

  288.   #--------------------------------------------------------------------------

  289.   def damage?

  290.     return (not @damage_num_sprites.empty?)

  291.   end

  292.   #--------------------------------------------------------------------------

  293.   # ● 开始显示伤害(新增定义)

  294.   #--------------------------------------------------------------------------

  295.   def start_damage(args)

  296.     args[4] = x - ox + width / 2

  297.     args[5] = y - oy + height / 2

  298.     args[6] = z

  299.     @damage_num_sprites.push(Sprite_Damage.new(viewport, args))

  300.   end

  301.   #--------------------------------------------------------------------------

  302.   # ● 释放所有伤害显示(新增定义)

  303.   #--------------------------------------------------------------------------

  304.   def dispose_damage

  305.     return unless damage?

  306.     @damage_num_sprites.each{|sprite|sprite.dispose}

  307.     @damage_num_sprites.clear

  308.   end

  309.   #--------------------------------------------------------------------------

  310.   # ● 刷新(追加定义)

  311.   #--------------------------------------------------------------------------

  312.   alias hzhj_old_update_for_display_damage_spr_base update

  313.   def update

  314.     hzhj_old_update_for_display_damage_spr_base

  315.     update_damage

  316.   end

  317.   #--------------------------------------------------------------------------

  318.   # ● 刷新显示伤害(新增定义)

  319.   #--------------------------------------------------------------------------

  320.   def update_damage

  321.     return unless damage?

  322.     @damage_num_sprites.each_with_index do |sprite, i|

  323.       if sprite.moving?

  324.         sprite.update

  325.       else

  326.         sprite.dispose

  327.         @damage_num_sprites[i] = nil

  328.       end

  329.     end

  330.     @damage_num_sprites.delete(nil)

  331.   end

  332. end


  333. #==============================================================================

  334. # ■ Sprite_Battler

  335. #==============================================================================

  336. class Sprite_Battler < Sprite_Base

  337.   #--------------------------------------------------------------------------

  338.   # ● 刷新(追加定义)

  339.   #--------------------------------------------------------------------------

  340.   alias hzhj_old_update_for_display_damage_spr_battler update

  341.   def update

  342.     hzhj_old_update_for_display_damage_spr_battler

  343.     if @battler

  344.       if not @battler.damage_for_show.empty?

  345.         #unless @battler.damage_section_displayed

  346.           args = @battler.damage_for_show.clone

  347.           args[3] = @battler.actor? ? :actor : (@battler.enemy? ? :enemy : nil)

  348.           start_damage(args)

  349.         #end

  350.         @battler.damage_for_show.clear

  351.       end

  352.     end

  353.   end

  354.   

  355. end


  356. #==============================================================================

  357. # ■ Game_BattlerBase

  358. #==============================================================================

  359. class Game_BattlerBase

  360.   #--------------------------------------------------------------------------

  361.   # ● 实例变量(新增定义)

  362.   #--------------------------------------------------------------------------

  363.   attr_accessor :damage_for_show #hzhj_damage

  364.   #--------------------------------------------------------------------------

  365.   # ● 初始化(追加定义)

  366.   #--------------------------------------------------------------------------

  367.   alias hzhj_old_init_for_display_damage_game_battler_base initialize

  368.   def initialize

  369.     @damage_for_show = []

  370.     hzhj_old_init_for_display_damage_game_battler_base

  371.   end

  372. end
复制代码

点评

哦,就是这个,谢谢了  发表于 2015-8-21 18:26
谜梦个人工作室:群号  397549060
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 17:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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