Project1

标题: 问题请教,全动画脚本和彩虹神剑脚本之间的问题 [打印本页]

作者: qq295268654    时间: 2010-11-11 22:30
标题: 问题请教,全动画脚本和彩虹神剑脚本之间的问题
我用了这两个
全动画脚本
  1. module RPG
  2.   class Sprite < ::Sprite
  3.     @@_animations = []
  4.     @@_reference_count = {}
  5.    
  6.     def dispose
  7.       dispose_damage
  8.       dispose_animation
  9.       dispose_loop_animation
  10.        dispose_loop_animation1
  11.       super
  12.     end
  13.    
  14.    
  15.   
  16.    
  17.     def loop_animation1(animation)
  18.       return if animation == @_loop_animation1
  19.       dispose_loop_animation1
  20.       @_loop_animation1 = animation
  21.       return if @_loop_animation1 == nil
  22.       @_loop_animation1_index = 0
  23.       animation_name = @_loop_animation1.animation_name
  24.       animation_hue = @_loop_animation1.animation_hue
  25.       bitmap = RPG::Cache.animation(animation_name, animation_hue)
  26.       if @@_reference_count.include?(bitmap)
  27.         @@_reference_count[bitmap] += 1
  28.       else
  29.         @@_reference_count[bitmap] = 1
  30.       end
  31.       @_loop_animation1_sprites = []
  32.       for i in 0..15
  33.         sprite = ::Sprite.new(self.viewport)
  34.         sprite.bitmap = bitmap
  35.         sprite.visible = false
  36.         @_loop_animation1_sprites.push(sprite)
  37.       end
  38.       update_loop_animation1
  39.     end
  40.    
  41.    
  42.    

  43.     def dispose_loop_animation1
  44.       if @_loop_animation1_sprites != nil
  45.         sprite = @_loop_animation1_sprites[0]
  46.         if sprite != nil
  47.           @@_reference_count[sprite.bitmap] -= 1
  48.           if @@_reference_count[sprite.bitmap] == 0
  49.             sprite.bitmap.dispose
  50.           end
  51.         end
  52.         for sprite in @_loop_animation1_sprites
  53.           sprite.dispose
  54.         end
  55.         @_loop_animation1_sprites = nil
  56.         @_loop_animation1 = nil
  57.       end
  58.     end
  59.    
  60.    
  61.    
  62.    
  63.     def update_loop_animation1
  64.       frame_index = @_loop_animation1_index
  65.       cell_data = @_loop_animation1.frames[frame_index].cell_data
  66.       position = @_loop_animation1.position
  67.       animation_set_sprites(@_loop_animation1_sprites, cell_data, position)
  68.       for timing in @_loop_animation1.timings
  69.         if timing.frame == frame_index
  70.           animation_process_timing(timing, true)
  71.         end
  72.       end
  73.     end
  74.    
  75.   end
  76. end
  77. #===============
  78. #新加部分

  79. class Spriteset_Battle
  80.   #--------------------------------------------------------------------------
  81.   # ● 初始化变量
  82.   #--------------------------------------------------------------------------
  83.   def initialize
  84.     # 生成显示端口
  85.     @viewport1 = Viewport.new(0, 0, 640, 480)
  86.     @viewport2 = Viewport.new(0, 0, 640, 480)
  87.     @viewport3 = Viewport.new(0, 0, 640, 480)
  88.     @viewport4 = Viewport.new(0, 0, 640, 480)
  89.     @viewport2.z = 101
  90.     @viewport3.z = 200
  91.     @viewport4.z = 5000
  92.     # 生成战斗背景活动块
  93.     @battleback_sprite = Sprite.new(@viewport1)
  94.     # 生成敌人活动块
  95.     @enemy_sprites = []
  96.     for enemy in $game_troop.enemies.reverse
  97. #      @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  98.       @enemy_sprites.push(Sprite_Battler.new(@viewport4, enemy))#敌人的显示高度
  99.     end
  100.     # 生成敌人活动块
  101.     @actor_sprites = []
  102.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  103.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  104.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  105.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  106.     # 生成天候
  107.     @weather = RPG::Weather.new(@viewport1)
  108.     # 生成图片活动块
  109.     @picture_sprites = []
  110.     for i in 51..100
  111.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  112.         $game_screen.pictures[i]))
  113.     end
  114.     # 生成计时器块
  115.     @timer_sprite = Sprite_Timer.new
  116.     # 刷新画面
  117.     update
  118.   end
  119.   #..........................................................................
  120.   #--------------------------------------------------------------------------
  121.   # ● 胜利图
  122.   #--------------------------------------------------------------------------
  123.   def win
  124.     for sprite in @actor_sprites
  125.       sprite.win
  126.     end
  127.   end
  128.   #..........................................................................
  129.   #--------------------------------------------------------------------------
  130.   # ● 刷新画面
  131.   #--------------------------------------------------------------------------
  132.   def update
  133.     # 刷新角色的活动块 (对应角色的替换)
  134.     @actor_sprites[0].battler = $game_party.actors[0]
  135.     @actor_sprites[1].battler = $game_party.actors[1]
  136.     @actor_sprites[2].battler = $game_party.actors[2]
  137.     @actor_sprites[3].battler = $game_party.actors[3]
  138.     # 战斗背景的文件名与现在情况有差异的情况下
  139.     if @battleback_name != $game_temp.battleback_name
  140.       @battleback_name = $game_temp.battleback_name
  141.       if @battleback_sprite.bitmap != nil
  142.         @battleback_sprite.bitmap.dispose
  143.       end
  144.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  145.       @battleback_sprite.src_rect.set(0, 0, 640, 480)
  146.     end
  147.     # 刷新战斗者的活动块
  148.     for sprite in @enemy_sprites + @actor_sprites
  149.       sprite.update
  150.     end
  151.     # 刷新天气图形
  152.     @weather.type = $game_screen.weather_type
  153.     @weather.max = $game_screen.weather_max
  154.     @weather.update
  155.     # 刷新图片活动块
  156.     for sprite in @picture_sprites
  157.       sprite.update
  158.     end
  159.     # 刷新计时器活动块
  160.     @timer_sprite.update
  161.     # 设置画面的色调与震动位置
  162.     @viewport1.tone = $game_screen.tone
  163.     @viewport1.ox = $game_screen.shake
  164.     # 设置画面的闪烁色
  165.     @viewport4.color = $game_screen.flash_color
  166.     # 刷新显示端口
  167.     @viewport1.update
  168.     @viewport2.update
  169.     @viewport4.update
  170.   end
  171. end
  172. class Arrow_Enemy < Arrow_Base
  173.   #--------------------------------------------------------------------------
  174.   # ● 获取光标指向的敌人
  175.   #--------------------------------------------------------------------------
  176.   def enemy
  177.     return $game_troop.enemies[@index]
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   # ● 刷新画面
  181.   #--------------------------------------------------------------------------
  182.   def update
  183.     super
  184.     # 如果指向不存在的敌人就离开
  185.     $game_troop.enemies.size.times do
  186.       break if self.enemy.exist?
  187.       @index += 1
  188.       @index %= $game_troop.enemies.size
  189.     end
  190.     # 光标右
  191.     if Input.repeat?(Input::RIGHT)
  192.       $game_system.se_play($data_system.cursor_se)
  193.       $game_troop.enemies.size.times do
  194.         @index += 1
  195.         @index %= $game_troop.enemies.size
  196.         break if self.enemy.exist?
  197.       end
  198.     end
  199.     # 光标左
  200.     if Input.repeat?(Input::LEFT)
  201.       $game_system.se_play($data_system.cursor_se)
  202.       $game_troop.enemies.size.times do
  203.         @index += $game_troop.enemies.size - 1
  204.         @index %= $game_troop.enemies.size
  205.         break if self.enemy.exist?
  206.       end
  207.     end
  208.     # 设置活动块坐标
  209.     if self.enemy != nil
  210.       self.x = self.enemy.screen_x + self.ox
  211.       self.y = self.enemy.screen_y + self.oy
  212.     end
  213.   end
  214. end
  215. class Arrow_Actor < Arrow_Base
  216.   #--------------------------------------------------------------------------
  217.   # ● 获取光标指向的角色
  218.   #--------------------------------------------------------------------------
  219.   def actor
  220.     return $game_party.actors[@index]
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● 刷新画面
  224.   #--------------------------------------------------------------------------
  225.   def update
  226.     super
  227.     # 光标右
  228.     if Input.repeat?(Input::RIGHT)
  229.       $game_system.se_play($data_system.cursor_se)
  230.       @index += 1
  231.       @index %= $game_party.actors.size
  232.     end
  233.     # 光标左
  234.     if Input.repeat?(Input::LEFT)
  235.       $game_system.se_play($data_system.cursor_se)
  236.       @index += $game_party.actors.size - 1
  237.       @index %= $game_party.actors.size
  238.     end
  239.     # 设置活动块坐标
  240.     if self.actor != nil
  241.       self.x = self.actor.screen_x + self.ox
  242.       self.y = self.actor.screen_y + self.oy
  243.     end
  244.   end
  245. end
  246. class Scene_Battle
  247.   #--------------------------------------------------------------------------
  248.   # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  249.   #--------------------------------------------------------------------------
  250.   def update_phase4_step3
  251.     # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  252.     if @animation1_id == 0
  253.       @active_battler.white_flash = true
  254.     else
  255.     # 添加施法动画
  256. #     @active_battler.setup_battler_ani(@active_battler.battler_name.split(/★/)[8], 1)
  257.       @active_battler.animation_id = @animation1_id
  258.       @active_battler.animation_hit = true
  259.     end
  260.     # 对像方动画
  261.     for target in @target_battlers
  262.       target.animation_id = @animation2_id
  263.       target.animation_hit = (target.damage != "Miss")
  264.       ###########################################################
  265.       target.setup_battler_dead_ani(0)
  266.       ############################################################
  267.       #.......................................................................
  268.       if target.is_a?(Game_Actor)
  269.         ##############
  270.         if target.guarding?
  271.           $fangyu = 1
  272.         end
  273.         ##############
  274.         if target.current_action.kind == 0 and target.current_action.basic == 1
  275.            target.setup_battler_ani(target.battler_name.split(/★/)[2], 1)
  276.          #else
  277.            #target.current_action.kind == 0 and target.current_action.basic == 1
  278.           # target.setup_battler_ani(target.battler_name.split(/★/)[3], 0)
  279.            else
  280.          target.setup_battler_hurt_ani(0)
  281.         end
  282.       end
  283.       if target.is_a?(Game_Enemy)
  284.        if target.current_action.kind == 0 and target.current_action.basic == 1
  285.           target.setup_battler_ani(target.battler_name.split(/★/)[1])
  286.         else
  287.           target.setup_battler_hurt_ani(0)
  288.         end
  289.       end
  290.       #.......................................................................
  291.     end
  292.     # 对像方动画
  293.     for target in @target_battlers
  294.       target.animation_id = @animation2_id
  295.       target.animation_hit = (target.damage != "Miss")
  296.       #......................................................................
  297.     end
  298.     # 限制动画长度、最低 8 帧
  299.     @wait_count = 8
  300.     # 移至步骤 5
  301.     @phase4_step = 5
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ● 刷新画面 (主回合步骤 4 : 对像方动画) ★
  305.   #--------------------------------------------------------------------------
  306.   def update_phase4_step4
  307.     # 移至步骤 5
  308.     @phase4_step = 5
  309.   end
  310. end
  311. class Game_Actor < Game_Battler
  312.   
  313. #小改动
  314. #############################################################################
  315. #                                横版修改                                   #
  316. #############################################################################
  317.   
  318.   #--------------------------------------------------------------------------
  319.   # ● 取得战斗画面的 X 坐标
  320.   #--------------------------------------------------------------------------
  321. #  def screen_x
  322. #    case self.index
  323. #    when 0
  324. #      return 515
  325. #    when 1
  326. #      return 440
  327. #    when 2
  328. #      return 590
  329. #    when 3
  330. #      return 390
  331. #    else
  332. #      return 640
  333. #    end
  334. #  end
  335.   #--------------------------------------------------------------------------
  336.   # ● 取得战斗画面的 Y 坐标
  337.   #--------------------------------------------------------------------------
  338. #  def screen_y
  339. #    case self.index
  340. #    when 0
  341. #      return 310
  342. #    when 1
  343. #      return 295
  344. #    when 2
  345. #      return 325
  346. #    when 3
  347. #      return 340
  348. #    else
  349. #      return 1000
  350. #    end
  351. #  end
  352.   #--------------------------------------------------------------------------
  353.   # ● 取得战斗画面的 Z 坐标
  354.   #--------------------------------------------------------------------------
  355. #  def screen_z
  356. #    case self.index
  357. #    when 0
  358. #      return 1
  359. #    when 1
  360. #      return 0
  361. #    when 2
  362. #      return 2
  363. #    when 3
  364. #      return 3
  365. #    else
  366. #      return 0
  367. #    end
  368. #  end
  369.   
  370.   
  371. #############################################################################
  372.   
  373.   
  374.   
  375.   def screen_x
  376.     # 返回计算后的队伍 X 坐标的排列顺序
  377.   #if $game_party.actors[1].name ="南宫复"
  378.      case self.index
  379.     when 0
  380.       return 400
  381.     when 1
  382.       return 470
  383.     when 2
  384.       return 540
  385.     when 3
  386.       return 610
  387.   # end
  388.   else
  389.     return 400
  390.   end
  391. end

  392.       #......................................................................
  393. #     case self.index
  394.   #  when 0
  395.    #   return 400
  396.    # when 1
  397.    #   return 470
  398.    # when 2
  399.    #   return 540
  400.    # when 3
  401.     #  return 610
  402.     #else
  403.     #  return 0
  404.     #end
  405.   #end
  406.   #--------------------------------------------------------------------------
  407.   # ● 取得战斗画面的 Y 坐标
  408.   #--------------------------------------------------------------------------
  409.   def screen_y
  410.     #........................................................................
  411.     case self.index
  412.     when 0
  413.       return 420
  414.     when 1
  415.       return 350
  416.     when 2
  417.       return 280
  418.     when 3
  419.       return 120
  420.       end
  421.   end
  422.   #--------------------------------------------------------------------------
  423.   # ● 取得战斗画面的 Z 坐标
  424.   #--------------------------------------------------------------------------
  425.   def screen_z
  426.     # 返回计算后的队伍 Z 坐标的排列顺序
  427.     if self.index != nil
  428.       return 4 - self.index
  429.     else
  430.       return 0
  431.     end
  432.   end
  433. end

  434. class Scene_Battle
  435.   #..........................................................................
  436.   #--------------------------------------------------------------------------
  437.   # ● 返回phase
  438.   #--------------------------------------------------------------------------
  439.   def phase
  440.     return @phase
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ● 返回phase4_step
  444.   #--------------------------------------------------------------------------
  445.   def phase4_step
  446.     return @phase4_step
  447.   end
  448.   #--------------------------------------------------------------------------
  449.   # ● 返回phase4_step
  450.   #--------------------------------------------------------------------------
  451.   def actor_command_active?
  452.     return @actor_command_window.active
  453.   end
  454.   #..........................................................................
  455. end
  456. class Game_Battler
  457.   #..........................................................................
  458.   #--------------------------------------------------------------------------
  459.   # ● 获取循环的动画 ID
  460.   #--------------------------------------------------------------------------  
  461.   def show_damage(value)
  462.     @show_damage_value = value
  463.   end
  464.   #--------------------------------------------------------------------------
  465.   # ● 获取循环的动画 ID
  466.   #--------------------------------------------------------------------------
  467.   def show_damage_value
  468.     return @show_damage_value
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ● 获取循环的动画 ID
  472.   #--------------------------------------------------------------------------
  473.   def battler_ani
  474.     return @battler_ani
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ● 获取循环的动画 ID
  478.   #--------------------------------------------------------------------------
  479.   def setup_battler_ani(battler_ani, once = 0)
  480.     @battler_ani = battler_ani
  481.     @once = once
  482.   end
  483.   #--------------------------------------------------------------------------
  484.   # ● 获取循环的动画 ID
  485.   #--------------------------------------------------------------------------
  486.   def setup_battler_hurt_ani(hurt)
  487.     @hurt = hurt
  488.   end  
  489.   #--------------------------------------------------------------------------
  490.   # ● 获取循环的动画 ID
  491.   #--------------------------------------------------------------------------
  492.   def setup_battler_dead_ani(over)
  493.     @over = over
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ● 获取循环的动画 ID
  497.   #--------------------------------------------------------------------------
  498.   def battler_dead_ani
  499.     return @over
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # ● 获取循环的动画 ID
  503.   #--------------------------------------------------------------------------
  504.   def battler_ani_once
  505.     return @once
  506.   end
  507.   #--------------------------------------------------------------------------
  508.   # ● 获取循环的动画 ID
  509.   #--------------------------------------------------------------------------
  510.   def battler_hurt_ani
  511.     return @hurt
  512.   end
  513.   #..........................................................................
  514. end
  515. class Sprite_Battler < RPG::Sprite
  516.   #..........................................................................
  517.   #--------------------------------------------------------------------------
  518.   # ● 胜利图
  519.   #--------------------------------------------------------------------------
  520.   def win
  521.     if @battler_name != nil and not @battler.hidden and not @battler.dead?
  522.       @battler.setup_battler_ani(@battler_name.split(/★/)[6], 1)
  523.     end
  524.   end
  525.   #..........................................................................
  526.   #--------------------------------------------------------------------------
  527.   # ● 释放
  528.   #--------------------------------------------------------------------------
  529.   def dispose
  530.     if self.bitmap != nil
  531.       self.bitmap.dispose
  532.     end
  533.     super
  534.   end
  535.   #--------------------------------------------------------------------------
  536.   # ● 刷新画面
  537.   #--------------------------------------------------------------------------
  538.   def update
  539.     super
  540.     # 战斗者为 nil 的情况下
  541.     if @battler == nil
  542.       self.bitmap = nil
  543.       loop_animation(nil)
  544.        loop_animation1(nil)
  545.       return
  546.     end
  547.     # 文件名和色相与当前情况有差异的情况下
  548.     if @battler.battler_name != @battler_name or
  549.        @battler.battler_hue != @battler_hue
  550.       @battler_hue = @battler.battler_hue
  551.       # 获取、设置位图
  552.       @battler_name = @battler.battler_name
  553.       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  554.       #.......................................................................
  555.       @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  556.       #.......................................................................
  557.       @width = bitmap.width
  558.       @height = bitmap.height
  559.       self.ox = @width / 2
  560.       self.oy = @height
  561.       # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
  562.       if @battler.is_a?(Game_Enemy)
  563.         if @battler.dead? or @battler.hidden
  564.           self.opacity = 0
  565.         end
  566.       end
  567.     end
  568.     # 动画 ID 与当前的情况有差异的情况下
  569.     #.........................................................................
  570.     if @battler.battler_ani != @battler_ani
  571.       @battler_ani = @battler.battler_ani
  572.       loop_animation($data_animations[@battler_ani.to_i])
  573.       

  574.       
  575.      end
  576.    
  577.     #.........................................................................
  578.     # 应该被显示的角色的情况下
  579.     if @battler.is_a?(Game_Actor) and @battler_visible
  580.       # 不是主状态的时候稍稍降低点透明度
  581.       if $game_temp.battle_main_phase
  582.         self.opacity += 3 if self.opacity < 255
  583.       else
  584.         self.opacity -= 3 if self.opacity > 207
  585.       end
  586.     end
  587.     # 明灭
  588.     if @battler.blink
  589.       blink_on
  590.     else
  591.       blink_off
  592.     end
  593.     # 不可见的情况下
  594.     unless @battler_visible
  595.       # 出现 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  596.       if not @battler.hidden and not @battler.dead? and
  597.          (@battler.damage == nil or @battler.damage_pop)
  598.         if @battler.is_a?(Game_Enemy)
  599.           appear
  600. #######################################################################
  601. # HZHJ追加6
  602.     for i in 0...HZHJ_STATE_ANIMATION_ADD_NUMBER
  603.       if @battler.states[i+1] != nil
  604.         @state_sprites[i].loop_animation1($data_animations[$data_states[@battler.states[i+1]].animation_id])
  605.         @state_sprites[i].x = self.x
  606.         @state_sprites[i].y = self.y
  607.         @state_sprites[i].z = self.z
  608.         @state_sprites[i].ox = self.ox
  609.         @state_sprites[i].oy = self.oy
  610.         @state_sprites[i].opacity = self.opacity
  611.         @state_sprites[i].visible = self.visible
  612.         @state_sprites[i].src_rect = self.src_rect
  613.       else
  614.         @state_sprites[i].loop_animation1($data_animations[0])
  615.       end
  616.     end
  617. #####################################################################
  618.         else
  619.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  620.         end
  621.         @battler_visible = true
  622.       end
  623.     end
  624.     # 可见的情况下
  625.     if @battler_visible
  626.       # 逃跑
  627.       if @battler.hidden
  628.         $game_system.se_play($data_system.escape_se)
  629.         escape
  630. #######################################################################
  631. # HZHJ追加7
  632.     for i in 0...HZHJ_STATE_ANIMATION_ADD_NUMBER
  633.       if @battler.states[i+1] != nil
  634.         @state_sprites[i].loop_animation1($data_animations[$data_states[@battler.states[i+1]].animation_id])
  635.         @state_sprites[i].x = self.x
  636.         @state_sprites[i].y = self.y
  637.         @state_sprites[i].z = self.z
  638.         @state_sprites[i].ox = self.ox
  639.         @state_sprites[i].oy = self.oy
  640.         @state_sprites[i].opacity = self.opacity
  641.         @state_sprites[i].visible = self.visible
  642.         @state_sprites[i].src_rect = self.src_rect
  643.       else
  644.         @state_sprites[i].loop_animation1($data_animations[0])
  645.       end
  646.     end
  647. #####################################################################
  648.         @battler_visible = false
  649.       end
  650.       # 白色闪烁
  651.       if @battler.white_flash
  652.         whiten
  653.         @battler.white_flash = false
  654.       end
  655.       # 动画
  656.       if @battler.animation_id != 0
  657.         animation = $data_animations[@battler.animation_id]
  658.         animation(animation, @battler.animation_hit)
  659.         @battler.animation_id = 0
  660.       end
  661.       # 伤害
  662.       if @battler.damage_pop
  663.         damage(@battler.damage, @battler.critical)
  664.         @battler.damage = nil
  665.         @battler.critical = false
  666.         @battler.damage_pop = false
  667.       end
  668.       # korapusu
  669.       if @battler.damage == nil and @battler.dead?
  670.         #....................................................................
  671.         if @battler.is_a?(Game_Enemy)
  672.           $game_system.se_play($data_system.enemy_collapse_se)
  673.           #collapse
  674.         else
  675.           $game_system.se_play($data_system.actor_collapse_se)
  676.         end
  677.         #....................................................................
  678.         @battler_visible = false
  679.       end
  680.     end
  681.     # 设置活动块的坐标
  682.     self.x = @battler.screen_x
  683.     self.y = @battler.screen_y
  684.     self.z = @battler.screen_z
  685.   end
  686. end
  687. module RPG
  688.   class Sprite < ::Sprite
  689.     def damage(value, critical)
  690.       dispose_damage
  691.       if value.is_a?(Numeric)
  692.         damage_string = value.abs.to_s
  693.       else
  694.         damage_string = value.to_s
  695.       end
  696.       bitmap = Bitmap.new(160, 48)
  697.       bitmap.font.name = "Arial Black"
  698.       bitmap.font.size = 32
  699.       bitmap.font.color.set(0, 0, 0)
  700.       bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  701.       bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  702.       bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  703.       bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  704.       if value.is_a?(Numeric) and value < 0
  705.         bitmap.font.color.set(176, 255, 144)
  706.       else
  707.         bitmap.font.color.set(255, 255, 255)
  708.       end
  709.       bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  710.       if critical
  711.         bitmap.font.size = 20
  712.         bitmap.font.color.set(0, 0, 0)
  713.         bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  714.         bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  715.         bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  716.         bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  717.         bitmap.font.color.set(255, 255, 255)
  718.         bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  719.       end
  720.       @_damage_sprite = ::Sprite.new(self.viewport)
  721.       @_damage_sprite.bitmap = bitmap
  722.       @_damage_sprite.ox = 80
  723.       @_damage_sprite.oy = 20
  724.       @_damage_sprite.x = self.x
  725.       @_damage_sprite.x -= self.bitmap.width/2 if @battler.is_a?(Game_Actor)
  726.       @_damage_sprite.y = self.y - self.oy / 2
  727.       @_damage_sprite.z = 3000
  728.       @_damage_duration = 40
  729.     end
  730.   end
  731. end
  732. module RPG

  733. #==============================================================================
  734. # ■ Sprite_Battler
  735. #==============================================================================
  736. class Sprite_Battler < RPG::Sprite
  737. #--------------------------------------------------------------------------
  738. # ● 初始化对像
  739. #    添加跳跃记录
  740. #--------------------------------------------------------------------------
  741. def initialize(viewport, battler = nil)
  742.   super(viewport)
  743.   @battler = battler
  744.   @battler_visible = false
  745.   @flash_shake_switch = true

  746.   #........................................................................
  747.   @once = 0
  748.   @frame_index = -1
  749.   @last_frame = 0
  750.   #........................................................................
  751. #######################################################################
  752. # HZHJ追加1
  753.   @state_sprites = []
  754.   for i in 0...HZHJ_STATE_ANIMATION_ADD_NUMBER
  755.     @state_sprites.push(RPG::Sprite.new(viewport))
  756.   end
  757. ####################################################################
  758. end
  759. #####################################################################
  760. # HZHJ追加2
  761.   alias hzhj_dis dispose
  762.   def dispose
  763.     hzhj_dis
  764.     for hzhj in @state_sprites
  765.       hzhj.dispose
  766.     end
  767.   end
  768. #######################################################################

  769. #--------------------------------------------------------------------------
  770. # ● 刷新画面
  771. #    增添跳跃功能
  772. #--------------------------------------------------------------------------
  773. def update
  774.   super
  775. ######################################################################
  776. # HZHJ追加3
  777.     for hzhj in @state_sprites
  778.       hzhj.update
  779.     end
  780. #######################################################################
  781.   # 战斗者为 nil 的情况下
  782.   if @battler == nil
  783.     self.bitmap = nil
  784.     loop_animation(nil)
  785.    loop_animation1(nil)
  786. ######################################################################
  787. # HZHJ追加4
  788.     for hzhj in @state_sprites
  789.       hzhj.loop_animation1(nil)
  790.     end
  791. #######################################################################
  792.     return
  793.   end
  794.   # 文件名和色相与当前情况有差异的情况下
  795.   if @battler.battler_name != @battler_name or
  796.      @battler.battler_hue != @battler_hue
  797.     # 获取、设置位图
  798.     @battler_name = @battler.battler_name
  799.     @battler_hue = @battler.battler_hue
  800.     self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  801.     #.......................................................................
  802.     if not @battler.hidden and not @battler.dead?
  803.       @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  804.     end
  805.     #.......................................................................
  806.     @width = bitmap.width
  807.     @height = bitmap.height
  808.     self.ox = @width / 2
  809.     self.oy = @height
  810.   end
  811.   #.......................................................................
  812.   update_actor_animation
  813.   update_enemy_animation
  814.   #.......................................................................
  815.   # 动画 ID 与当前的情况有差异的情况下
  816.   #.........................................................................
  817.   if @battler.is_a?(Game_Enemy)
  818.     if @once == 1 and @loop_animation_once == 1 and
  819.        @battler.battler_dead_ani == 1
  820.       @battler.setup_battler_ani(@battler.battler_name.split(/★/)[5])
  821.     elsif @once == 1 and @loop_animation_once == 1 and $scene.phase != 5
  822.       @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  823.     end
  824.   end
  825.   if @battler.is_a?(Game_Actor)
  826.     ####################################################################
  827.     if @once == 1 and @loop_animation_once == 1 and $scene.phase != 5 and
  828.        @battler.battler_dead_ani == 1 and @battler.dead?
  829.       @battler.setup_battler_ani(@battler.battler_name.split(/★/)[5])
  830.     #######################################################################
  831.     elsif @once == 1 and @loop_animation_once == 1 and $scene.phase != 5
  832.       @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  833.       #################################################################
  834.       $fangyu = 0
  835.       @battler.setup_battler_dead_ani(0)
  836.       ########################################################
  837.     elsif @once == 1 and @loop_animation_once == 1 and $scene.phase == 5 and
  838.           not @battler.dead?
  839.       @battler.setup_battler_ani(@battler.battler_name.split(/★/)[7])
  840.       ######################################################
  841.       $fangyu = 0
  842.       @battler.setup_battler_dead_ani(0)
  843.       ######################################################
  844.     end
  845.   end
  846.   
  847. if @battler.damage == nil and
  848.        @battler.state_animation_id != @state_animation_id
  849.       @state_animation_id = @battler.state_animation_id
  850.        loop_animation1($data_animations[@state_animation_id])
  851.     end
  852. #######################################################################
  853. # HZHJ追加5
  854.   if @battler.damage == nil and $game_temp.phase4step5
  855.     for i in 0...HZHJ_STATE_ANIMATION_ADD_NUMBER
  856.       if @battler.states[i+1] != nil
  857.         @state_sprites[i].loop_animation1($data_animations[$data_states[@battler.states[i+1]].animation_id])
  858.         @state_sprites[i].x = self.x
  859.         @state_sprites[i].y = self.y
  860.         @state_sprites[i].z = self.z
  861.         @state_sprites[i].ox = self.ox
  862.         @state_sprites[i].oy = self.oy
  863.         @state_sprites[i].opacity = self.opacity
  864.         @state_sprites[i].visible = self.visible
  865.         @state_sprites[i].src_rect = self.src_rect
  866.       else
  867.         @state_sprites[i].loop_animation1($data_animations[0])
  868.       end
  869.     end
  870.   end
  871. #####################################################################
  872.   if @battler.battler_ani != @battler_ani
  873.     @battler_ani = @battler.battler_ani
  874.     @once = @battler.battler_ani_once
  875.     loop_animation($data_animations[@battler_ani.to_i])
  876.   end
  877.   #.........................................................................
  878.   # 明灭
  879.   if @battler.blink
  880.     blink_on
  881.   else
  882.     blink_off
  883.   end
  884.   # 不可见的情况下
  885.   unless @battler_visible
  886.     # 出现
  887.     if not @battler.hidden and not @battler.dead? and
  888.        (@battler.damage == nil or @battler.damage_pop)
  889.       #.......................................................................
  890.       if @battler.is_a?(Game_Enemy)
  891.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  892.         #appear
  893.       else
  894.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  895.       end
  896.       #.......................................................................
  897.       @battler_visible = true
  898.     end
  899.   end
  900.   # 可见的情况下
  901.   if @battler_visible
  902.     # 逃跑
  903.     if @battler.hidden
  904.       $game_system.se_play($data_system.escape_se)
  905.       escape
  906.       @battler_visible = false
  907.     end
  908.     # 白色闪烁
  909.     if @battler.white_flash
  910.       whiten
  911.       @battler.white_flash = false
  912.     end
  913.     # 动画
  914.     if @battler.animation_id != 0
  915.       animation = $data_animations[@battler.animation_id]
  916.       animation(animation, @battler.animation_hit,@battler.damage, @battler.critical)
  917.       # animation(animation, @battler.animation_hit)
  918.       @battler.animation_id = 0
  919.     end
  920.     # 伤害
  921.     if @battler.damage_pop
  922.       @battler.damage = nil
  923.       @battler.critical = false
  924.       @battler.damage_pop = false
  925.     end
  926.     # korapusu
  927.     if @battler.damage == nil and @battler.dead?
  928.       if @battler.is_a?(Game_Enemy)
  929.         if @battler.battler_dead_ani != 1
  930.           #p "Battler Death Error"
  931.           $game_system.se_play($data_system.enemy_collapse_se)
  932.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[4], 1)
  933.           @battler.setup_battler_dead_ani(1)
  934.         end
  935.         #.....................................................................
  936.         collapse
  937. #######################################################################
  938. # HZHJ追加8
  939.     for i in 0...HZHJ_STATE_ANIMATION_ADD_NUMBER
  940.       if @battler.states[i+1] != nil
  941.         @state_sprites[i].loop_animation1($data_animations[$data_states[@battler.states[i+1]].animation_id])
  942.         @state_sprites[i].x = self.x
  943.         @state_sprites[i].y = self.y
  944.         @state_sprites[i].z = self.z
  945.         @state_sprites[i].ox = self.ox
  946.         @state_sprites[i].oy = self.oy
  947.         @state_sprites[i].opacity = self.opacity
  948.         @state_sprites[i].visible = self.visible
  949.         @state_sprites[i].src_rect = self.src_rect
  950.       else
  951.         @state_sprites[i].loop_animation1($data_animations[0])
  952.       end
  953.     end
  954. #####################################################################
  955.         #.....................................................................
  956.       else
  957.         #.....................................................................
  958.         if @battler.battler_dead_ani != 1
  959.           #p "Battler Death Error"
  960.           $game_system.se_play($data_system.enemy_collapse_se)
  961.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[4], 1)
  962.           @battler.setup_battler_dead_ani(1)
  963.         end
  964.         #.....................................................................
  965.       end
  966.       @battler_visible = false
  967.     end
  968.   end
  969.   # 设置活动块的坐标
  970.   if @flash_shake_switch == true
  971.     self.x = @battler.screen_x
  972.     self.y = @battler.screen_y
  973.     self.z = @battler.screen_z
  974.     @flash_shake_switch = false
  975.   end
  976.   if @flash_shake != 0 and @battler.damage != nil and RPG::BATTLER_JUMP
  977.     if @battler.is_a?(Game_Enemy)
  978.       case @flash_shake
  979.       when 9..10
  980.         self.x -=4
  981.         self.y -=4
  982.         self.z = @battler.screen_z
  983.       when 6..8
  984.         self.x -=2
  985.         self.y -=2
  986.         self.z = @battler.screen_z
  987.       when 3..5
  988.         self.x +=2
  989.         self.y +=2
  990.         self.z = @battler.screen_z
  991.       when 1..2
  992.         self.x +=4
  993.         self.y +=4
  994.         self.z = @battler.screen_z
  995.       end
  996.     end
  997.     if @battler.is_a?(Game_Actor)
  998.       case @flash_shake
  999.       when 9..10
  1000.         self.x +=4
  1001.         self.y +=4
  1002.         self.z = @battler.screen_z
  1003.       when 6..8
  1004.         self.x +=2
  1005.         self.y +=2
  1006.         self.z = @battler.screen_z
  1007.       when 3..5
  1008.         self.x -=2
  1009.         self.y -=2
  1010.         self.z = @battler.screen_z
  1011.       when 1..2
  1012.         self.x -=4
  1013.         self.y -=4
  1014.         self.z = @battler.screen_z
  1015.       end
  1016.     end
  1017.    @flash_shake -= 1
  1018.   end
  1019. end
  1020. end

  1021. #==============================================================================
  1022. # ■ Scene_Battle
  1023. #------------------------------------------------------------------------------
  1024. #  处理战斗画面的类。
  1025. #==============================================================================

  1026. class Scene_Battle
  1027. #--------------------------------------------------------------------------
  1028. # ● 定义实例变量
  1029. #--------------------------------------------------------------------------
  1030. attr_reader   :animation1_id                    # 行动方动画ID
  1031. end
  1032. class Sprite_Battler < RPG::Sprite
  1033.   #--------------------------------------------------------------------------
  1034.   # ● 处理角色动作
  1035.   #--------------------------------------------------------------------------
  1036.   def update_actor_animation
  1037.     if @battler.is_a?(Game_Actor)
  1038.       if @battler.show_damage_value != nil
  1039.         self.damage(@battler.show_damage_value, false)
  1040.         @battler.show_damage(nil)
  1041.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  1042.         @battler.setup_battler_hurt_ani(1)
  1043.       end
  1044.       if @battler.current_action.kind == 0 and @battler.current_action.basic == 1 and @battler.show_damage_value != nil
  1045.         # 防御的时候
  1046.         if @hits > @temp_hits and not @battler.dead?
  1047.           ############ #小改动
  1048.           @temp_hits+=1
  1049.           ############
  1050.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[2], 1)
  1051.           @battler.setup_battler_hurt_ani(1)
  1052.           #################################################################
  1053.         elsif @last_hits == 1 and not @battler.dead?
  1054.           ############ #小改动
  1055.           @last_hits = 0
  1056.           ############
  1057.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[2], 1)
  1058.           @battler.setup_battler_hurt_ani(1)
  1059.           #################################################################
  1060.         elsif @frame_index != -1 and @frame_index != @last_frame and not @battler.dead? and [email protected]_a?(Numeric)
  1061.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[2], 1)
  1062.           @battler.setup_battler_hurt_ani(1)
  1063.           #################################################################
  1064.         elsif @last_hits == 1 and not @battler.dead? and [email protected]_a?(Numeric)
  1065.           ############ #小改动
  1066.           @last_hits = 0
  1067.           ############
  1068.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[2], 1)
  1069.           @battler.setup_battler_hurt_ani(1)
  1070.           #################################################################
  1071.         end
  1072.       else
  1073.         # 单回合只有一次攻击
  1074.        if @last_hits == 1 and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage > 0 and $fangyu != 1
  1075.           ############ #小改动
  1076.           @last_hits = 0
  1077.           ############
  1078.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  1079.           @battler.setup_battler_hurt_ani(1)
  1080.           #################################################################
  1081.         # 单回合多次攻击
  1082.        elsif @hits > @temp_hits and @frame_index != @last_frame and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage > 0 and $fangyu != 1
  1083.           ############ #小改动
  1084.           @temp_hits+=1
  1085.           ############
  1086.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  1087.           @battler.setup_battler_hurt_ani(1)
  1088.         ########################################################################
  1089.         # 死亡之前攻击
  1090.        elsif @hits > @temp_hits and @frame_index != @last_frame and @battler.damage.is_a?(Numeric) and @battler.damage > 0 and $fangyu != 1 and @battler.dead? and @battler.battler_dead_ani != 1
  1091.           ############ #小改动
  1092.           @temp_hits+=1
  1093.           ############
  1094.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  1095.           @battler.setup_battler_hurt_ani(1)
  1096.           #################################################################
  1097.         # 闪避的回合
  1098.        elsif !@battler_damage.is_a?(Numeric) and @last_hits == 1 and @frame_index == @last_frame
  1099.           @last_hits = 0
  1100.           #################################################################
  1101.         # 无伤害的攻击
  1102.         elsif @battler_damage.is_a?(Numeric) and @battler.damage == 0 and @last_hits == 1 and @frame_index == @last_frame
  1103.           @last_hits = 0
  1104.           #################################################################
  1105.         # 死亡判定
  1106.        elsif @last_hits == 1 and @frame_index == @last_frame and @battler.dead? and @battler.battler_dead_ani != 1
  1107. #          for actor in $game_party.actors
  1108. #默认的话  如果死亡  其他角色添加第六号状态
  1109. #《石焚刃暖》里 是狂暴状态
  1110. #            if @battler != actor
  1111. #              actor.add_state(6)
  1112. #            end
  1113. #          end
  1114.           @last_hits = 0
  1115.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[4], 1)
  1116.           @battler.setup_battler_dead_ani(1)
  1117.           #################################################################
  1118.         # 胜利判定
  1119.        elsif $scene.phase == 5 and @once == 0 and @battler_name != nil and not @battler.hidden and not @battler.dead? and $game_temp.battle_proc == nil
  1120.              @once = 1
  1121.              @battler.setup_battler_ani(@battler_name.split(/★/)[6], 1)
  1122.         end
  1123.       end
  1124.     end
  1125.   end
  1126.   #--------------------------------------------------------------------------
  1127.   # ● 处理敌人动作
  1128.   #--------------------------------------------------------------------------
  1129.   def update_enemy_animation
  1130.     if @battler.is_a?(Game_Enemy)
  1131.       if @battler.show_damage_value != nil
  1132.         self.damage(@battler.show_damage_value, false)
  1133.         @battler.show_damage(nil)
  1134.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  1135.         @battler.setup_battler_hurt_ani(1)
  1136.       end
  1137.       if @battler.current_action.kind == 0 and @battler.current_action.basic == 1
  1138.       else
  1139.         # 单回合只有一次攻击
  1140.         if @last_hits == 1 and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage > 0
  1141.           ############ #小改动
  1142.           @last_hits = 0
  1143.           ############
  1144.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  1145.           @battler.setup_battler_hurt_ani(1)
  1146.           #################################################################
  1147.         # 单回合多次攻击
  1148.        elsif @hits > @temp_hits and @frame_index != @last_frame and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage > 0
  1149.           ############ #小改动
  1150.           @temp_hits+=1
  1151.           ############
  1152.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  1153.           @battler.setup_battler_hurt_ani(1)
  1154.           #################################################################
  1155.         # 死亡之前攻击
  1156.        elsif @hits > @temp_hits and @frame_index != @last_frame and @battler.damage.is_a?(Numeric) and @battler.damage > 0 and @battler.dead? and @battler.battler_dead_ani != 1
  1157.           ############ #小改动
  1158.           @temp_hits+=1
  1159.           ############
  1160.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  1161.           @battler.setup_battler_hurt_ani(1)
  1162.           #################################################################
  1163.         # 无伤害的攻击
  1164.         elsif !@battler_damage.is_a?(Numeric) and @last_hits == 1 and @frame_index == @last_frame
  1165.           @last_hits = 0
  1166.           #################################################################
  1167.         # 闪避的回合
  1168.         elsif @battler_damage.is_a?(Numeric) and @battler.damage == 0 and @last_hits == 1 and @frame_index == @last_frame
  1169.           @last_hits = 0
  1170.           #################################################################
  1171.         # 死亡判定
  1172.         elsif @last_hits == 1 and @frame_index == @last_frame and @battler.dead? and @battler.battler_dead_ani != 1
  1173.           @last_hits = 0
  1174.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[4], 1)
  1175.           @battler.setup_battler_dead_ani(1)
  1176.           collapse
  1177.         end
  1178.       end
  1179.     end
  1180.   end
  1181. end

复制代码
全动画脚本第二部分
  1. HZHJ_STATE_ANIMATION_ADD_NUMBER = 5

  2. class Game_Temp
  3.   attr_accessor :phase4step5
  4.   alias hzhj_ini initialize
  5.   def initialize
  6.     @phase4step5 = false
  7.     hzhj_ini
  8.   end
  9. end
  10. class Scene_Battle
  11.   alias hzhj_update_phase4_step2 update_phase4_step2
  12.   def update_phase4_step2
  13.     $game_temp.phase4step5 = false
  14.     hzhj_update_phase4_step2
  15.   end
  16.   
  17.   alias hzhj_update_phase4_step5 update_phase4_step5
  18.   def update_phase4_step5
  19.     $game_temp.phase4step5 = true
  20.     hzhj_update_phase4_step5
  21.   end
  22. end


复制代码
彩虹神剑脚本
  1. v1.0c -柳柳
  2. ? ? ?

  3. v1.0d -柳柳
  4. 1.0d最终解决了那个闪光问题,还有最末帧伤害多次的算法

  5. 7-24-2006 v1.0e -叶子
  6. 修正全屏幕闪烁弹出伤害错误的问题
  7. 修正连续伤害不会弹出伤害的问题
  8. 仍然未修正播放目标动画第一帧时目标有时无端跳动的BUG

  9. 我鼓起很大勇气才敢动偶像们的脚本的,不知道会不会出问题啊......  -cftx
  10. 修正了总伤害显示
  11. 增加了伤害美化和HIT数显示
  12. 修正了两次音效

  13. ==============================================================================
  14. =end
  15. # 核心的说明:
  16. # damage_pop 不再附带damage()的功能,这个放到animation里面去了

  17. module RPG
  18. #--------------------------------------------------------------------------
  19. # ● 常量设定
  20. #--------------------------------------------------------------------------
  21. # 是否显示总伤害
  22. SHOW_TOTAL_DAMAGE = true
  23. # 角色受攻击时是否跳一下
  24. BATTLER_JUMP = false
  25. # 连续伤害的动画ID
  26. SLIP_DAMAGE_ANIMATION_ID = 105

  27. class Sprite < ::Sprite
  28.    #==========================================
  29.    # 修改说明:
  30.    # @flash_shake用来制作挨打时候跳跃
  31.    # @_damage    用来记录每次打击之后弹出数字
  32.    # @_total_damage 记录总伤害
  33.    # @_total_damage_duration 总伤害持续帧
  34.    #==========================================
  35.    #alias 66RPG_rainbow_initialize : initialize
  36.    
  37.    def initialize(viewport = nil)
  38.      #66RPG_rainbow_initialize(viewport)
  39.      super(viewport)
  40.      @_whiten_duration = 0
  41.      @_appear_duration = 0
  42.      @_escape_duration = 0
  43.      @_collapse_duration = 0
  44.      @_damage_duration = 0
  45.      @_animation_duration = 0
  46.      @_blink = false
  47.      # 挨打时候跳跃
  48.      @flash_shake = 0
  49.      # 伤害记录数组
  50.      @_damage = []
  51.      # 总伤害数字
  52.      @_total_damage = 0
  53.      # 总伤害持续帧
  54.      @_total_damage_duration = 0
  55.      #记录已经发生的伤害的变量★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  56.      @p_dam=0
  57.      @hits=0
  58.    end
  59. #美化的伤害处理★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  60. def damage(value, critical)
  61.       # 释放伤害,效果是伤害数字快速消失,觉得不如不消失好看......
  62.       #dispose_damage
  63.       #清除hit数
  64.       dispose_hit
  65.       # 如果伤害值是数值
  66.       if value.is_a?(Numeric)
  67.         # 绝对值转为字符串
  68.         damage_string = value.abs.to_s
  69.       else
  70.         # 转为字符串
  71.         damage_string = value.to_s
  72.       end
  73.       # 初始化位图
  74.       bitmap = Bitmap.new(162, 64)
  75.       bitmap.font.name = ["黑体","华文行楷", "宋体"]
  76.       bitmap.font.size = 32
  77.       # 伤害值是数值的情况下
  78.       if value.is_a?(Numeric)
  79.         # 分割伤害值字符串
  80.         damage_array = damage_string.scan(/./)
  81.         damage_x = 81 - damage_string.size * 9
  82.         # 伤害值为负的情况下
  83.         if value < 0
  84.           # 调用回复数字表
  85.           rect_y = 32
  86.         else
  87.           # 调用伤害数字表
  88.           rect_y = 0
  89.         end
  90.         # 循环伤害值字符串
  91.         for char in damage_array
  92.           number = char.to_i
  93.           # 显示伤害数字
  94.           bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
  95.           Rect.new(number * 18, rect_y, 18, 32))
  96.           # 后移一位
  97.           damage_x += 18
  98.         end
  99.       # 伤害值不是数值的情况
  100.       else
  101.         # 如果伤害值不是 Miss
  102.         unless value == "Miss"
  103.           # 系统默认描画字符串
  104.           bitmap.font.color.set(0, 0, 0)
  105.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
  106.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
  107.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
  108.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
  109.           bitmap.font.color.set(255, 255, 255)
  110.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
  111.         # Miss 的情况下
  112.         else
  113.           # 显示未击中图画
  114.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  115.         end
  116.       end
  117.       # 会心一击标志打开的情况
  118.       if critical
  119.         # 显示会心一击图画
  120.         bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))
  121.       end
  122.       # 伤害值定位
  123.       @_damage_sprite = ::Sprite.new(self.viewport)
  124.       @_damage_sprite.bitmap = bitmap
  125.       @_damage_sprite.ox = 81
  126.       @_damage_sprite.oy = 20
  127.       @_damage_sprite.x = self.x
  128.       @_damage_sprite.y = self.y - self.oy / 2
  129.       @_damage_sprite.z = 3000
  130.       @_damage_duration = 40
  131.       @_damage.push([@_damage_sprite,@_damage_duration-10,0, rand(30) - 15, rand(3)])
  132.       make_total_damage(value)  

  133.     end

  134. #   ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  135. # hit数的美化描绘
  136.     def hit

  137.       # 如果伤害值是数值
  138.       # 转为字符串
  139.       value=@hits
  140.         hits_string = value.to_s
  141.       # 初始化位图
  142.        bitmap = Bitmap.new(320, 64)
  143.        bitmap.font.name = "Arial Black"
  144.        bitmap.font.size = 32
  145.        # 分割伤害值字符串
  146.         hits_array = hits_string.scan(/./)
  147.         hits_x = 81 - hits_string.size * 18.1
  148.           rect_y = 0
  149.         # 循环伤害值字符串
  150.         for char in hits_array
  151.           number = char.to_i
  152.           # 显示伤害数字
  153.           bitmap.blt(hits_x, 0, RPG::Cache.picture("Number"),
  154.           Rect.new(number * 36.2, rect_y, 36.2, 50))
  155.           # 后移一位
  156.           hits_x += 36.2
  157.         end
  158.         bitmap.blt(hits_x, 0, RPG::Cache.picture("HITS"),
  159.         Rect.new(0, -21, 90, 50))

  160.       # 伤害值定位
  161.       @_hits_sprite = ::Sprite.new(self.viewport)
  162.       @_hits_sprite.bitmap = bitmap
  163.       @_hits_sprite.ox = 81
  164.       @_hits_sprite.oy = 20
  165.       @_hits_sprite.x = 500
  166.       @_hits_sprite.y = 100
  167.       @_hits_sprite.z = 3000
  168.       @_hits_duration = 40
  169.     end
  170. #--------------------------------------------------------------------------
  171.    # ● 总伤害处理
  172.    #--------------------------------------------------------------------------
  173.    def make_total_damage(value)
  174.      if value.is_a?(Numeric) and SHOW_TOTAL_DAMAGE
  175.        @_total_damage += value
  176.         # 绝对值转为字符串
  177.         damage_string = @_total_damage.abs.to_s
  178.       else
  179.         return
  180.       end
  181.       # 初始化位图
  182.       bitmap = Bitmap.new(300, 150)
  183.       bitmap.font.name = "Arial Black"
  184.       bitmap.font.size = 32
  185.       # 伤害值是数值的情况下
  186.       if value.is_a?(Numeric)
  187.         # 分割伤害值字符串
  188.         damage_array = damage_string.scan(/./)
  189.         damage_x = 40 - damage_string.size * 9
  190.         # 伤害值为负的情况下
  191.         if value < 0
  192.           # 调用回复数字表
  193.           name="Number3"
  194.         else
  195.           # 调用伤害数字表
  196.           name="Number2"
  197.         end
  198.         # 循环伤害值字符串
  199.         for char in damage_array
  200.           number = char.to_i
  201.           # 显示伤害数字
  202.           bitmap.blt(damage_x, 0, RPG::Cache.picture(name),
  203.           Rect.new(number * 36.2, 0, 36.2, 50))
  204.           # 后移一位
  205.           damage_x += 36.2
  206.         end
  207.       end
  208.       
  209.       
  210.         
  211.         
  212. #     if value.is_a?(Numeric) and SHOW_TOTAL_DAMAGE
  213. #       @_total_damage += value
  214. #     else
  215. #       return
  216. #     end
  217. #     bitmap = Bitmap.new(300, 150)
  218. #     bitmap.font.name = "Arial Black"
  219. #     bitmap.font.size = 40
  220. #     bitmap.font.color.set(0, 0, 0)
  221. #     bitmap.draw_text(+2, 12+2, 160, 40, @_total_damage.abs.to_s, 1)
  222. #     if @_total_damage < 0
  223. #       bitmap.font.color.set(80, 255, 00)
  224. #    else
  225. #       bitmap.font.color.set(255, 140, 0)
  226. #     end
  227. #     bitmap.draw_text(0, 12, 160, 40, @_total_damage.abs.to_s, 1)
  228. #     bitmap.font.color.set(55, 55,255)
  229.      
  230.      
  231.      if @_total_damage_sprite.nil?
  232.        @_total_damage_sprite = ::Sprite.new(self.viewport)
  233.        @_total_damage_sprite.ox = 80
  234.        @_total_damage_sprite.oy = 20
  235.        @_total_damage_sprite.z = 3000

  236.      end
  237.      @_total_damage_sprite.bitmap = bitmap
  238.      @_total_damage_sprite.zoom_x = 0.8
  239.      @_total_damage_sprite.zoom_y = 0.8
  240.      @_total_damage_sprite.x = self.x
  241.      @_total_damage_sprite.y = self.y  - self.oy / 2 - 64
  242.      @_total_damage_sprite.z = 3001
  243.      @_total_damage_duration = 80
  244.      #hit数描绘
  245.      @hits+=1
  246.     if @_total_damage > 0
  247.       hit
  248.     end
  249.    end


  250.    def animation(animation, hit, battler_damage="", battler_critical=false)
  251.      dispose_animation      
  252.      #=======================================
  253.      # 修改:记录伤害和critical
  254.      #=======================================
  255.      @battler_damage = battler_damage
  256.      @battler_critical = battler_critical
  257.      @_animation = animation
  258.      return if @_animation == nil
  259.      @_animation_hit = hit
  260.      @_animation_duration = @_animation.frame_max
  261.      animation_name = @_animation.animation_name
  262.      animation_hue = @_animation.animation_hue
  263.      bitmap = RPG::Cache.animation(animation_name, animation_hue)
  264.      #=======================================
  265.      # 修改:计算总闪光权限值
  266.      #=======================================
  267.      for timing in @_animation.timings
  268.        quanzhong = animation_process_timing(timing, @_animation_hit,true)
  269.        @all_quanzhong += quanzhong
  270.        # 记录最后一次闪光
  271.        @_last_frame = timing.frame if quanzhong != 0
  272.      end      
  273.      if @@_reference_count.include?(bitmap)
  274.        @@_reference_count[bitmap] += 1
  275.      else
  276.        @@_reference_count[bitmap] = 1
  277.      end
  278.      #=======================================
  279.      # 修改:行动方动画不显示伤害
  280.      #=======================================
  281.      if $scene.is_a?(Scene_Battle)
  282.        if $scene.animation1_id == @battler.animation_id
  283.          @battler_damage = ""
  284.        end
  285.      end
  286.      @_animation_sprites = []
  287.      if @_animation.position != 3 or not @@_animations.include?(animation)
  288.        for i in 0..15
  289.          sprite = ::Sprite.new(self.viewport)
  290.          sprite.bitmap = bitmap
  291.          sprite.visible = false
  292.          @_animation_sprites.push(sprite)
  293.        end
  294.        unless @@_animations.include?(animation)
  295.          @@_animations.push(animation)
  296.        end
  297.      end
  298.      update_animation
  299.   end
  300.    #=======================================
  301.    # 修改:更换清除伤害的算法,以防万一
  302.    #       本内容在脚本中没有使用过
  303.    #=======================================
  304.    def dispose_damage
  305.      for damage in @_damage.reverse
  306.        damage[0].bitmap.dispose
  307.        damage[0].dispose
  308.        @_damage.delete(damage)
  309.      end
  310.      @_total_damage = 0
  311.      @_last_frame = -1
  312.      if @_total_damage_sprite != nil
  313.        @_total_damage_duration = 0
  314.        @_total_damage_sprite.bitmap.dispose
  315.        @_total_damage_sprite.dispose
  316.        @_total_damage_sprite = nil
  317.      end
  318.    end
  319.    #=======================================
  320.    # 清除hit数★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  321.    #=======================================
  322.    def dispose_hit
  323.      if @_hits_sprite != nil
  324.        @_hits_sprite.bitmap.dispose
  325.        @_hits_sprite.dispose
  326.        @_hits_sprite = nil
  327.      end
  328.    end
  329.    def dispose_animation
  330.      #=======================================
  331.      # 修改:清除记录的伤害,清除权重记录
  332.      #=======================================
  333.      @battler_damage = nil
  334.      @battler_critical = nil
  335.      @all_quanzhong = 1
  336.      @_total_damage = 0
  337.      @_last_frame = -1
  338.      if @_animation_sprites != nil
  339.        sprite = @_animation_sprites[0]
  340.        if sprite != nil
  341.          @@_reference_count[sprite.bitmap] -= 1
  342.          if @@_reference_count[sprite.bitmap] == 0
  343.            sprite.bitmap.dispose
  344.          end
  345.        end
  346.        for sprite in @_animation_sprites
  347.          sprite.dispose
  348.        end
  349.        @_animation_sprites = nil
  350.        @_animation = nil
  351.      end
  352.    end
  353.    def update
  354.      super
  355.      if @_whiten_duration > 0
  356.        @_whiten_duration -= 1
  357.        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  358.      end
  359.      if @_appear_duration > 0
  360.        @_appear_duration -= 1
  361.        self.opacity = (16 - @_appear_duration) * 16
  362.      end
  363.      if @_escape_duration > 0
  364.        @_escape_duration -= 1
  365.        self.opacity = 256 - (32 - @_escape_duration) * 10
  366.      end
  367.      if @_collapse_duration > 0
  368.        @_collapse_duration -= 1
  369.        self.opacity = 256 - (48 - @_collapse_duration) * 6
  370.      end
  371.      #=======================================
  372.      # 修改:更新算法,更新弹出
  373.      #=======================================
  374.      if @_damage_duration > 0
  375.        @_damage_duration -= 1
  376.        for damage in @_damage
  377.          damage[0].x = self.x + self.viewport.rect.x -
  378.                        self.ox + self.src_rect.width / 2 +
  379.                        (40 - damage[1]) * damage[3] / 10
  380.          damage[0].y -= damage[4]+damage[1]/10
  381.          damage[0].opacity = damage[1]*20
  382.          damage[1] -= 1
  383.          if damage[1]==0
  384.            damage[0].bitmap.dispose
  385.            damage[0].dispose
  386.            @_damage.delete(damage)

  387.            next
  388.          end
  389.        end
  390.      end
  391.      #=======================================
  392.      # 添加:弹出总伤害
  393.      #=======================================
  394.      if @_total_damage_duration > 0
  395.        @_total_damage_duration -= 1
  396.        @_total_damage_sprite.y -= 1 if @_total_damage_duration % 2 == 0
  397.        if @_total_damage_sprite.zoom_x > 1.0
  398.          @_total_damage_sprite.zoom_x -= 0.05
  399.        end
  400.        if @_total_damage_sprite.zoom_y > 1.0
  401.          @_total_damage_sprite.zoom_y -= 0.05
  402.        end
  403.        @_total_damage_sprite.opacity = 256 - (24 - @_total_damage_duration) * 16
  404.        if @_total_damage_duration <= 0
  405.          dispose_hit#★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  406.          @_total_damage = 0
  407.          @_total_damage_duration = 0
  408.          @_total_damage_sprite.bitmap.dispose
  409.          @_total_damage_sprite.dispose
  410.          @_total_damage_sprite = nil
  411.        end
  412.      end
  413.      #=======================================
  414.      if @_animation != nil and (Graphics.frame_count % 2 == 0)
  415.        @_animation_duration -= 1
  416.        update_animation
  417.      end
  418.      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
  419.        update_loop_animation
  420.        @_loop_animation_index += 1
  421.        @_loop_animation_index %= @_loop_animation.frame_max
  422.      end
  423.      if @_blink
  424.        @_blink_count = (@_blink_count + 1) % 32
  425.        if @_blink_count < 16
  426.          alpha = (16 - @_blink_count) * 6
  427.        else
  428.          alpha = (@_blink_count - 16) * 6
  429.        end
  430.        self.color.set(255, 255, 255, alpha)
  431.      end
  432.      @@_animations.clear
  433.    end
  434.    def update_animation
  435.     if @_animation_duration > 0
  436.        frame_index = @_animation.frame_max - @_animation_duration
  437.        cell_data = @_animation.frames[frame_index].cell_data
  438.        position = @_animation.position
  439.        animation_set_sprites(@_animation_sprites, cell_data, position)
  440.        #=======================================
  441.        # 修改:弹出伤害,权重计算
  442.        #=======================================
  443.        for timing in @_animation.timings
  444.          if timing.frame == frame_index
  445.            t = 1.0 * animation_process_timing(timing, @_animation_hit)  
  446.                    if timing.se.name != ""
  447.           se=timing.se
  448.           Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
  449.         end
  450.            #p t,"当前权重", @all_quanzhong,"总权重"
  451.            if @battler_damage.is_a?(Numeric) and t != 0
  452.              t *= @battler_damage
  453.              t /= @all_quanzhong
  454.              t = t.to_i
  455.              #在闪光不是最后一次的情况下,把这次伤害加入到已经发生的伤害中★★★★★★★★★★★★★★★★★★★★★★★★★★
  456.              if frame_index != @_last_frame
  457.              @p_dam+= t
  458.              end
  459.              #p @p_dam,"已发生伤害",@battler_damage,"总伤害"(调试用)★★★★★★★★★★★★★★★★★★★★★★★★★★
  460.              #闪光为最后一次的情况下,改变这次伤害的计算方法(总伤害-已经发生伤害)★★★★★★★★★★★★★★★★★★★★★★★★★★
  461.              if frame_index == @_last_frame
  462.                t=@battler_damage-@p_dam
  463.              end
  464.              #p t,"当前伤害",@battler_damage,"总伤害"
  465.              # 最后一次闪光的话,伤害修正
  466.              if frame_index == @_last_frame
  467.                @_total_damage = @battler_damage - t
  468.                @p_dam=0      #已经发生的伤害归0★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  469.             end
  470.              #p t,@battler_damage,@all_quanzhong
  471.              damage(t,@battler_critical)
  472.             #连击次数归0★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  473.             if frame_index == @_last_frame
  474.                       @hits=0  
  475.             end
  476.            # 防止重复播放miss
  477.            elsif !@battler_damage.is_a?(Numeric) and timing.flash_scope != 0
  478.              damage(@battler_damage,@battler_critical)
  479.            end
  480.          end
  481.        end
  482.      else
  483.        dispose_animation
  484.      end
  485.    end
  486.    #=======================================
  487.    # 修改:敌人跳跃的功能 + 添加返回数值
  488.    #=======================================
  489.     def animation_process_timing(timing, hit,dontflash=false)
  490.       if (timing.condition == 0) or
  491.          (timing.condition == 1 and hit == true) or
  492.          (timing.condition == 2 and hit == false)
  493.         case timing.flash_scope
  494.         when 1
  495.           unless dontflash
  496.             self.flash(timing.flash_color, timing.flash_duration * 2)
  497.             if @_total_damage >0
  498.               @flash_shake_switch = true
  499.               @flash_shake = 10
  500.             end
  501.           end
  502.           return timing.flash_color.alpha * timing.flash_duration
  503.         when 2
  504.           unless dontflash
  505.             if self.viewport != nil
  506.               self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
  507.             end
  508.           end
  509.           return timing.flash_color.alpha * timing.flash_duration
  510.         when 3
  511.           unless dontflash
  512.             self.flash(nil, timing.flash_duration * 2)
  513.           end
  514.           return timing.flash_color.alpha * timing.flash_duration
  515.         end
  516.       end      
  517.       return 0
  518.     end   
  519. end
  520. end
  521. #==============================================================================
  522. # ■ Sprite_Battler
  523. #==============================================================================
  524. class Sprite_Battler < RPG::Sprite
  525. #--------------------------------------------------------------------------
  526. # ● 初始化对像
  527. #    添加跳跃记录
  528. #--------------------------------------------------------------------------
  529. def initialize(viewport, battler = nil)
  530.   super(viewport)
  531.   @battler = battler
  532.   @battler_visible = false
  533.   @flash_shake_switch = true
  534. end
  535. #--------------------------------------------------------------------------
  536. # ● 刷新画面
  537. #    增添跳跃功能
  538. #--------------------------------------------------------------------------
  539. def update
  540.   super
  541.   # 战斗者为 nil 的情况下
  542.   if @battler == nil
  543.     self.bitmap = nil
  544.     loop_animation(nil)
  545.     return
  546.   end
  547.   # 文件名和色相与当前情况有差异的情况下
  548.   if @battler.battler_name != @battler_name or
  549.      @battler.battler_hue != @battler_hue
  550.     # 获取、设置位图
  551.     @battler_name = @battler.battler_name
  552.     @battler_hue = @battler.battler_hue
  553.     self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  554.     @width = bitmap.width
  555.     @height = bitmap.height
  556.     self.ox = @width / 2
  557.     self.oy = @height
  558.     # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
  559.     if @battler.dead? or @battler.hidden
  560.       self.opacity = 0
  561.     end
  562.   end
  563.   # 动画 ID 与当前的情况有差异的情况下
  564.   if @battler.damage == nil and
  565.      @battler.state_animation_id != @state_animation_id
  566.     @state_animation_id = @battler.state_animation_id
  567.     loop_animation($data_animations[@state_animation_id])
  568.   end
  569.   # 应该被显示的角色的情况下
  570.   if @battler.is_a?(Game_Actor) and @battler_visible
  571.     # 不是主状态的时候稍稍降低点透明度
  572.     if $game_temp.battle_main_phase
  573.       self.opacity += 3 if self.opacity < 255
  574.     else
  575.       self.opacity -= 3 if self.opacity > 207
  576.     end
  577.   end
  578.   # 明灭
  579.   if @battler.blink
  580.     blink_on
  581.   else
  582.     blink_off
  583.   end
  584.   # 不可见的情况下
  585.   unless @battler_visible
  586.     # 出现
  587.     if not @battler.hidden and not @battler.dead? and
  588.        (@battler.damage == nil or @battler.damage_pop)
  589.       appear
  590.       @battler_visible = true
  591.     end
  592.   end
  593.   # 可见的情况下
  594.   if @battler_visible
  595.     # 逃跑
  596.     if @battler.hidden
  597.       $game_system.se_play($data_system.escape_se)
  598.       escape
  599.       @battler_visible = false
  600.     end
  601.     # 白色闪烁
  602.     if @battler.white_flash
  603.       whiten
  604.       @battler.white_flash = false
  605.     end
  606.     # 动画
  607.     if @battler.animation_id != 0
  608.       animation = $data_animations[@battler.animation_id]
  609.       animation(animation, @battler.animation_hit,@battler.damage, @battler.critical)
  610.       @battler.animation_id = 0
  611.     end
  612.     # 伤害
  613.     if @battler.damage_pop
  614.       @battler.damage = nil
  615.       @battler.critical = false
  616.       @battler.damage_pop = false
  617.     end
  618.     # korapusu
  619.     if @battler.damage == nil and @battler.dead?
  620.       if @battler.is_a?(Game_Enemy)
  621.         $game_system.se_play($data_system.enemy_collapse_se)
  622.       else
  623.         $game_system.se_play($data_system.actor_collapse_se)
  624.       end
  625.       collapse
  626.       @battler_visible = false
  627.     end
  628.   end
  629.   # 设置活动块的坐标
  630.   if @flash_shake_switch == true
  631.     self.x = @battler.screen_x
  632.     self.y = @battler.screen_y
  633.     self.z = @battler.screen_z
  634.     @flash_shake_switch = false
  635.   end
  636.   if @flash_shake != 0 and @battler.damage != nil and RPG::BATTLER_JUMP
  637.     case @flash_shake
  638.     when 9..10
  639.       self.x = @battler.screen_x
  640.       self.y -=4
  641.       self.z = @battler.screen_z
  642.     when 6..8
  643.       self.x = @battler.screen_x
  644.       self.y -=2
  645.       self.z = @battler.screen_z
  646.     when 3..5
  647.       self.x = @battler.screen_x
  648.       self.y +=2
  649.       self.z = @battler.screen_z
  650.     when 2
  651.       self.x = @battler.screen_x
  652.       self.y += 4
  653.       self.z = @battler.screen_z
  654.     when 1
  655.       self.x = @battler.screen_x
  656.       self.y = @battler.screen_y
  657.       self.z = @battler.screen_z
  658.     end
  659.     @flash_shake -= 1
  660.   end
  661. end
  662. end

  663. #==============================================================================
  664. # ■ Scene_Battle
  665. #------------------------------------------------------------------------------
  666. #  处理战斗画面的类。
  667. #==============================================================================

  668. class Scene_Battle
  669. #--------------------------------------------------------------------------
  670. # ● 定义实例变量
  671. #--------------------------------------------------------------------------
  672. attr_reader   :animation1_id                    # 行动方动画ID
  673. end

  674. #==============================================================================
  675. # ■ Game_Battler
  676. #------------------------------------------------------------------------------
  677. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  678. # 超级类来使用。
  679. #==============================================================================

  680. #class Game_Battler
  681. #  #--------------------------------------------------------------------------
  682. #  # ● 应用连续伤害效果
  683. #  #--------------------------------------------------------------------------
  684. #  alias rainbow_sword_slip_damage_effect slip_damage_effect
  685. #  def slip_damage_effect
  686. #    self.animation_id = RPG::SLIP_DAMAGE_ANIMATION_ID
  687. #    self.animation_hit = true
  688. #    rainbow_sword_slip_damage_effect
  689. #  end
  690. #end
复制代码
用了之后,就发生这个问题,以前好像都没有发现过
数字美化变得很凌乱,怎么办
作者: 步兵中尉    时间: 2010-11-11 22:57
这是RTAB和彩虹神剑混合使用的结果(站上有些全动画脚本集成了RTAB的)。
任意删除一个就可以了。
作者: qq295268654    时间: 2010-11-14 18:11
3Q




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