- 累计送礼:
- 0 个
- 累计收礼:
- 0 个
TA的每日心情 | 开心 昨天 18:01 |
---|
签到天数: 114 天 连续签到: 4 天 [LV.6]常住居民II

管理员
  
- VIP
- 6
- 卡币
- 10632
- OK点
- 16
- 推广点
- 0
- 同能卷
- 0
- 积分
- 13401


|
发现一个BUG,使用解除状态的技能会出现MISS图片,现在已经解决,已经使用过的可以直接更新,(大概在64行,102行,150行有改动)
———————————————————————————————————————————————————————————————————————————
我找遍了很多地方也没看有伤害这样显示的,所以研究了下,可能比较时尚哦。刚做出来,可暂时称为1.0测试版,脚本可能不够简洁,感兴趣的可以帮忙简化一下,感谢了!
另外,不知道有没有BUG,用了很久还没发现,如果有发现的话,还请提出来噢。因为这个是图片版的,考虑到有些新手可能没有数字图片,所以范例工程带了图片,可以直接使用。
下面是实现的效果:
比如,伤害为 236 , 2先出来跳到最高点,此时3跳动到了最高点的一半,6刚好出来,当2再次回到原来的位置时,3从最高点到了一半的位置,6到了最高点的位置。然后2不动,3和6陆续回到原来的位置。
效果:
使用说明:
FMS = 2 # 第一次移动的速度
Num = 3 # 第二第三次移动的速度
XS = 15 # 第二次移动的像素
XT = 9 # 第三次移动的像素
NU = 10 # 数字间的间距 ps:它的三倍也是第一次移动的距离
FNH = 30 # 第一个数字的高度 这个别乱改,改动了其他坐标也要改
MAX_D = 70 # 显示的时间的最大值.
准备三张图片放在Pictures文件夹里,会心一击图片大小为:200 X 28 , 恢复图片和普通伤害图片为150 X 21 ,数字从0排到9,MISS图片为 55 X 20 修改在代码的80到105行之间
改上面着些数字的时候一定要把握好NU、FMS、Num、MAX_D这些数值之间的配合,详细的就不说了,大家改改试试效果就知道了。
测试工程: http://115.com/file/anbhygbu#Project.zip
把下面的脚本代码直接插入Main的前面,[code]# 转载请注明出处————666RPG-盛尘恋-修改制作———————————————#——————————————————————————————————————module RPG#——————————————————————————————————————# 初始化数值 FMS = 2 # 第一次移动的速度 Num = 3 # 第二第三次移动的速度 XS = 15 # 第二次移动的像素 XT = 9 # 第三次移动的像素 NU = 10 # 数字间的间距 ps:它的三倍也是第一次移动的距离 FNH = 30 # 第一个数字的高度 MAX_D = 65 # 显示的时间的最大值#——————————————————————————————————————class Sprite < ::Sprite#--------------------------------------------------------------------------# ● 初始化对像#-------------------------------------------------------------------------- def initialize(viewport = nil) super(viewport) @_whiten_duration = 0 @_appear_duration = 0 @_escape_duration = 0 @_collapse_duration = 0 @_damage_duration = 0 @_animation_duration = 0 @_damage_show = false @_blink = false end#--------------------------------------------------------------------------# ● 伤害#-------------------------------------------------------------------------- def damage(value, critical) # 释放伤害及转化变量 dispose_damage @value = value @critical = critical # 伤害值定位 @_damage_sprite = ::Sprite.new(self.viewport) @_damage_sprite.bitmap = Bitmap.new(200, 100) @_damage_show = true @_damage_sprite.ox = 0 @_damage_sprite.oy = 0 @_damage_sprite.x = self.x - 82 x1 = (self.bitmap.width-self.bitmap.width/4)/2 @_damage_sprite.x -= x1 - 10 if @battler.is_a?(Game_Actor) @_damage_sprite.y = self.y - self.oy - 30 @_damage_sprite.y += self.oy/2-45 if @battler.is_a?(Game_Actor) @_damage_sprite.z = 3000 # 与移动有关的变量初始化 @_damage_duration = MAX_D @_damage_nb1t = [] @_damage_rect = [] @_damage_nb1t[0] = FNH - 3*NU @_damage_nb1t[1] = FNH - 2*NU @_damage_nb1t[2] = FNH - NU @_damage_nb1t[3] = FNH @XV = 3*NU / FMS @XE = 2*NU / FMS @XR = NU / FMS if @value.is_a?(Numeric) damage_string = @value.abs.to_s else # 转为字符串 damage_string = @value.to_s end @damage_string = damage_string # 如果是数值的情况下 if value.is_a?(Numeric) @_damage_x = 80 - damage_string.size * 9 @ax = 0 @ay = 0 # 分割 damage_array = damage_string.split(//) for i in 0...damage_array.size damage_array = damage_array.to_i end # 会心一击的情况下 if @critical == true @_damage_bmp = Bitmap.new("Graphics/Pictures/white_Number_l") for i in 0...damage_array.size @_damage_rect = Rect.new(damage_array * 20, 0, 20, 28) end #其他情况,包括恢复 else if value < 0 @_damage_bmp = Bitmap.new("Graphics/Pictures/green_Number_m") else @_damage_bmp = Bitmap.new("Graphics/Pictures/white_Number_m") end for i in 0...damage_array.size @_damage_rect = Rect.new(damage_array * 15, 0, 15, 21) end end #不是数值的情况 elsif value == "Miss" @_damage_bmp = Bitmap.new("Graphics/Pictures/miss1") end end#--------------------------------------------------------------------------# ● 刷新画面#-------------------------------------------------------------------------- def update super if @_whiten_duration > 0 @_whiten_duration -= 1 self.color.alpha = 128 - (16 - @_whiten_duration) * 10 end if @_appear_duration > 0 @_appear_duration -= 1 self.opacity = (16 - @_appear_duration) * 16 end if @_escape_duration > 0 @_escape_duration -= 1 self.opacity = 256 - (32 - @_escape_duration) * 10 end if @_collapse_duration > 0 @_collapse_duration -= 1 self.opacity = 256 - (48 - @_collapse_duration) * 6 end #—————————————————————————————————————— # 以下为伤害显示部分 #—————————————————————————————————————— if @_damage_show == true @_damage_sprite.bitmap.clear if @value.is_a?(Numeric) if @critical == true for i in 0...@_damage_rect.size @_damage_nb1t[i+4] = @_damage_nb1t ay = @_damage_nb1t ax = @_damage_x+i*22 @_damage_sprite.bitmap.blt(ax, ay, @_damage_bmp, @_damage_rect) end else for i in 0...@_damage_rect.size @_damage_nb1t[i+4] = @_damage_nb1t ay = @_damage_nb1t ax = @_damage_x+i*17 @_damage_sprite.bitmap.blt(ax, ay, @_damage_bmp, @_damage_rect) end end else unless @value == "Miss" # 系统默认描画字符串 @_damage_sprite.bitmap.font.color.set(0, 0, 0) @_damage_sprite.bitmap.draw_text(-1, 27, 162, 36, @damage_string, 1) @_damage_sprite.bitmap.draw_text(+1, 27, 162, 36, @damage_string, 1) @_damage_sprite.bitmap.draw_text(-1, 29, 162, 36, @damage_string, 1) @_damage_sprite.bitmap.draw_text(+1, 29, 162, 36, @damage_string, 1) @_damage_sprite.bitmap.font.color.set(255, 255, 255) @_damage_sprite.bitmap.draw_text(0, 28, 162, 36, @damage_string, 1) else @_damage_sprite.bitmap.blt(45, @_damage_nb1t[1], @_damage_bmp, Rect.new(0, 0, 55, 20)) end end if @_damage_duration > 0 @_damage_duration -= 1#————————————————移动代码部分——————————————————— if MAX_D-@XV |
|