Project1

标题: 【伤害值美化脚本】-VX版 [打印本页]

作者: Beside    时间: 2008-7-24 06:57
标题: 【伤害值美化脚本】-VX版
移植自XP上的【伤害值美化脚本】

将此图改名为damage1另存到游戏目录/Graphics/Pictures

将此脚本复制到main前
  1. #伤害值美化脚本  Beside--------------------------------------------------------
  2. #66RPG 转载请保留此信息--------------------------------------------------------
  3. class Game_Battler
  4.   attr_accessor   :hp_damage
  5.   attr_accessor   :mp_damage
  6.   attr_accessor   :damage_pop
  7.   attr_accessor   :critical
  8.   alias ini initialize
  9.   def initialize
  10.     ini
  11.     @damage_pop = false
  12.   end
  13. end

  14. class Sprite_Base
  15.   def initialize(viewport = nil)
  16.     super(viewport)
  17.     @use_sprite = true          # 活动块使用的标志
  18.     @animation_duration = 0     # 动画剩余时间
  19.     @_damage_duration = 0
  20.   end
  21.    def update
  22.     super
  23.     if @animation != nil
  24.       @animation_duration -= 1
  25.       if @animation_duration % 4 == 0
  26.         update_animation
  27.       end
  28.     end
  29.     @@animations.clear
  30.      if @_damage_duration > 0
  31.         @_damage_duration -= 1
  32.         case @_damage_duration
  33.         when 38..39
  34.           @_damage_sprite.y -= 4
  35.         when 36..37
  36.           @_damage_sprite.y -= 2
  37.         when 34..35
  38.           @_damage_sprite.y += 2
  39.         when 28..33
  40.           @_damage_sprite.y += 4
  41.         end
  42.         @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  43.         if @_damage_duration == 0
  44.           dispose_damage
  45.         end
  46.       end
  47.   end
  48.   def damage(value, critical)
  49.       dispose_damage                             # 释放伤害
  50.       if value.is_a?(Numeric)                    # 如果伤害值是数值
  51.         damage_string = value.abs.to_s           # 绝对值转为字符串
  52.       else
  53.         damage_string = value.to_s               # 转为字符串
  54.       end
  55.       bitmap = Bitmap.new(162, 64)               # 初始化位图
  56.       bitmap.font.name = "Arial Black"
  57.       bitmap.font.size = 23
  58.       if value.is_a?(Numeric)
  59.         damage_array = damage_string.scan(/./)   # 分割伤害值字符串
  60.         damage_x = 81 - damage_string.size * 9
  61.         if value < 0                              # 伤害值为负的情况下
  62.           rect_y = 32                            # 调用回复数字表
  63.         else
  64.           rect_y = 0                             # 调用伤害数字表
  65.         end
  66.         for char in damage_array                 # 循环伤害值字符串
  67.           number = char.to_i
  68.           bitmap.blt(damage_x, 32, Cache.picture("Damage1"), Rect.new(number * 18, rect_y, 18, 32))
  69.           damage_x += 18                         # 后移一位
  70.         end
  71.       else
  72.         if value == "Evaded"  
  73.           bitmap.blt(36, 28, Cache.picture("Damage1"), Rect.new(0, 96, 84, 32))
  74.         else
  75.           # 显示未击中图画
  76.           bitmap.blt(36, 28, Cache.picture("Damage1"), Rect.new(90, 64, 90, 32))
  77.         end
  78.       end
  79.       if critical                                # 会心一击标志打开的情况
  80.         # 显示会心一击图画
  81.         bitmap.blt(36, 0, Cache.picture("Damage1"), Rect.new(0, 64, 90, 32))
  82.       end
  83.       # 伤害值定位
  84.       @_damage_sprite = Sprite_Base.new(self.viewport)
  85.       @_damage_sprite.bitmap = bitmap
  86.       @_damage_sprite.ox = 81
  87.       @_damage_sprite.oy = 20
  88.       @_damage_sprite.x = self.x
  89.       @_damage_sprite.y = self.y - self.oy
  90.       @_damage_sprite.z = 3000
  91.       @_damage_duration = 40
  92.     end
  93.   def dispose_damage
  94.     if @_damage_sprite != nil
  95.       @_damage_sprite.bitmap.dispose
  96.       @_damage_sprite.dispose
  97.       @_damage_sprite = nil
  98.       @_damage_duration = 0
  99.     end
  100.   end
  101. end

  102. class Sprite_Battler
  103.   alias setup_new_effect_66RPG setup_new_effect
  104.   def setup_new_effect
  105.     setup_new_effect_66RPG
  106.       if @battler.damage_pop
  107.       if @battler.hp_damage != 0 and  @battler.hp_damage != nil
  108.       damage(@battler.hp_damage, @battler.critical)
  109.       end
  110.       if @battler.mp_damage != 0 and  @battler.mp_damage != nil
  111.       damage(@battler.mp_damage, @battler.critical)
  112.       end
  113.       if @battler.missed
  114.       damage("Miss", @battler.critical)
  115.       end
  116.       if @battler.evaded
  117.       damage("Evaded", @battler.critical)
  118.       end
  119.       @battler.damage_pop = false
  120.       end
  121.   end
  122. end

  123. class Scene_Battle
  124.     def display_action_effects(target, obj = nil)
  125.     unless target.skipped
  126.       line_number = @message_window.line_number
  127.       wait(10)
  128.       target.damage_pop = true if target.is_a?(Game_Enemy)              
  129.       display_critical(target, obj)
  130.       display_damage(target, obj)
  131.       display_state_changes(target, obj)
  132.       @status_window.refresh
  133.       if line_number == @message_window.line_number
  134.         display_failure(target, obj) unless target.states_active?
  135.       end
  136.       if line_number != @message_window.line_number
  137.         wait(30)
  138.       end
  139.       @message_window.back_to(line_number)
  140.     end
  141.   end
  142. end

复制代码



例图(敌人已经消失了……)

可以显示伤害、回复、未命中、闪避的效果

冲突:修改战斗动画及类似效果的脚本
作者: 越前リョーマ    时间: 2008-7-24 18:58
为什么总是这个素材啊……|||
把彩虹岛的加工一下算了……
[LINE]1,#dddddd[/LINE]
话说如果和那些CP战斗和行走图横版战斗冲突的话……价值就大大降低了……
[LINE]1,#dddddd[/LINE]
不过行走图横版战斗本来就提供数字用图片……
作者: 火鸡三毛老大    时间: 2008-7-24 21:35
我觉得直接用 宋体 20 白色 显示会比较好~~~
这张图片不是很华丽.~~
作者: Beside    时间: 2008-7-24 21:58
以下引用越前リョーマ于2008-7-24 10:58:49的发言:

为什么总是这个素材啊……|||
把彩虹岛的加工一下算了……

话说如果和那些CP战斗和行走图横版战斗冲突的话……价值就大大降低了……

不过行走图横版战斗本来就提供数字用图片……

[本贴由作者于 2008-7-24 11:12:29 最后编辑]


想做华丽是图的事,修改原图就可以了
这个脚本本来就是一个小功能,对想整合多种功能的人来说很方便,比如说像我这样不想做千篇一律的SideView横板的人,而且这个脚本跟只修改战斗系统的脚本应该不冲突

以下引用火鸡三毛老大于2008-7-24 13:35:34的发言:

我觉得直接用 宋体 20 白色 显示会比较好~~~
这张图片不是很华丽.~~


XP默认描绘字符串的,VX没有忘记写了……干脆就用图片了 直接PS里修改也一样
作者: Beside    时间: 2008-8-8 20:08
自顶一下……这个能不能发布……
作者: drgdrg    时间: 2008-8-10 05:47
我用了半即时战斗系统。。。

肯定不兼容。。。
作者: Shmildys    时间: 2008-8-10 18:24
还是不错的
根据自己的需要 可以修改 素材
作者: Shmildys    时间: 2008-8-10 18:25
不过  我是用不了
作者: zianyygy12    时间: 2008-9-7 13:15
顶下·
作者: mcow    时间: 2008-10-20 05:35
很好 [LINE]1,#dddddd[/LINE]版主对此帖的评论:『挖坟 + 水』,积分『-150』。这些被扣积分的一半会用于对本帖正确答案的悬赏。




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