Project1

标题: 求助加分享资源,这个横板脚本怎么将战斗由4帧改为8帧 [打印本页]

作者: cuihaohao    时间: 2016-4-24 11:24
标题: 求助加分享资源,这个横板脚本怎么将战斗由4帧改为8帧
本帖最后由 RyanBern 于 2016-4-24 14:26 编辑

第一次发帖,为了感谢大家的查看,先分享点资源{:2_249:} ,传奇全套行走图资源,附上链接
http://pan.baidu.com/s/1pKFPull

如题,自己的游戏就卡在这里了。这是66主站下的鬼龙出品的大话西游里的一个超级横板战斗脚本,想把战斗时的动作由4帧改为8帧,不知道要从哪里改,求大神帮忙指教一下


RUBY 代码复制
  1. #超级横版战斗
  2.  
  3. module RPG
  4.   class Class
  5.     def name
  6.       name = @name.split(/,/)[0]
  7.       return name != nil ? name : ''
  8.     end
  9.     def name2
  10.       name = @name.split(/,/)[1]
  11.       return name != nil ? name : ''
  12.    end
  13.   end
  14.   class Weapon
  15.     def name
  16.       name = @name.split(/,/)[0]
  17.       return name != nil ? name : ''
  18.     end
  19.     def name2
  20.       name = @name.split(/,/)[1]
  21.       return name != nil ? name : ''
  22.     end   
  23.   end  
  24. end
  25.  
  26. class Game_Actor
  27.   #--------------------------------------------------------------------------
  28.   # ● 更改名称
  29.   #     name : 新的名称
  30.   #--------------------------------------------------------------------------
  31.   def picturephase
  32.     name = $data_classes[class_id].name2
  33.     return name != nil ? name : "66RPG"
  34.   end
  35. end
  36.  
  37. class Game_Enemy
  38.   #--------------------------------------------------------------------------
  39.   # ● 获取名称
  40.   #--------------------------------------------------------------------------
  41.   def name
  42.     name = $data_enemies[@enemy_id].name.split(/,/)[0]
  43.     return name != nil ? name : ''
  44.   end
  45.   def picturephase
  46.     name = $data_enemies[@enemy_id].name.split(/,/)[1]
  47.     return name != nil ? name : "66RPG"
  48.   end  
  49. end
  50.  
  51. class Animated_Sprite < RPG::Sprite
  52. #--------------------------------------------------------------------------
  53. # - Accessible instance variables.
  54. #--------------------------------------------------------------------------
  55. attr_accessor :frames        # Number of animation frames
  56. attr_accessor :delay         # Delay time between frames (speed)
  57. attr_accessor :frame_width   # Width of each frame
  58. attr_accessor :frame_height  # Height of each frame
  59. attr_accessor :offset_x      # X coordinate of the 1st frame
  60. attr_accessor :offset_y      # Y coordinate of all frames
  61. attr_accessor :current_frame # Current animation frame
  62. attr_accessor :moving        # Is the sprite moving?
  63.  
  64. def initialize(viewport = nil)
  65.    super(viewport)
  66.    @frame_width, @frame_height = 0, 0
  67.    change    # A basic change to set initial variables
  68.    @old = Graphics.frame_count  # For the delay method
  69.    @goingup = true    # Increasing animation? (if @rm2k_mode is true)
  70.    @once = false      # Is the animation only played once?
  71.    @animated = true   # Used to stop animation when @once is true
  72. end
  73.  
  74. def change(frames = 0, delay = 0, offx = 0, offy = 0,
  75.             startf = 0, once = false)
  76.    @frames = frames
  77.    @delay = delay
  78.    @offset_x, @offset_y = offx, offy
  79.    @current_frame = startf
  80.    @once = once
  81.    x = @current_frame * @frame_width + @offset_x
  82.    self.src_rect = Rect.new(x, @offset_y, @frame_width, @frame_height)
  83.    @goingup = true
  84.    @animated = true
  85. end
  86.  
  87. def update
  88.    super
  89.    if self.bitmap != nil and delay(@delay) and @animated
  90.      x = @current_frame * @frame_width + @offset_x
  91.      self.src_rect = Rect.new(x, @offset_y, @frame_width, @frame_height)
  92.        @current_frame = (@current_frame + 1) unless @frames == 0
  93.        @animated = false if @current_frame == @frames and @once
  94.        @current_frame %= @frames
  95.    end
  96. end
  97.  
  98. def move(x, y, speed = 1, delay = 0)
  99.    @destx = x
  100.    @desty = y
  101.    @move_speed = speed
  102.    @move_delay = delay
  103.    @move_old = Graphics.frame_count
  104.    @moving = true
  105. end
  106.  
  107. #--------------------------------------------------------------------------
  108. # - Move sprite to destx and desty
  109. #--------------------------------------------------------------------------
  110. def update_move
  111.    return unless @moving
  112.    movinc = @move_speed == 0 ? 1 : @move_speed
  113.    if Graphics.frame_count - @move_old > @move_delay or @move_speed != 0
  114.      self.x += movinc if self.x < @destx
  115.      self.x -= movinc if self.x > @destx
  116.      self.y += movinc if self.y < @desty
  117.      self.y -= movinc if self.y > @desty
  118.      self.z = self.y
  119.      @move_old = Graphics.frame_count
  120.    end
  121.    if @move_speed > 1  # Check if sprite can't reach that point
  122.      self.x = @destx if (@destx - self.x).abs % @move_speed != 0 and
  123.                         (@destx - self.x).abs <= @move_speed
  124.      self.y = @desty if (@desty - self.y).abs % @move_speed != 0 and
  125.                         (@desty - self.y).abs <= @move_speed
  126.    end
  127.    if self.x == @destx and self.y == @desty
  128.      @moving = false
  129.    end
  130. end
  131.  
  132. def delay(frames)
  133.    update_move
  134.    if (Graphics.frame_count - @old >= frames)
  135.      @old = Graphics.frame_count
  136.      return true
  137.    end
  138.    return false
  139. end
  140. end
  141.  
  142. class Game_Actor < Game_Battler
  143. def screen_x
  144.     # 返回计算后的队伍 X 坐标的排列顺序
  145.    case self.index
  146.     when 0
  147.       return 300
  148.     when 1
  149.       return 395
  150.     when 2
  151.       return 490
  152.     when 3
  153.       return 580
  154.     else
  155.       return 1000
  156.     end
  157.   end   
  158.  
  159. def screen_y
  160.    case self.index
  161.     when 0
  162.       return 380
  163.     when 1
  164.       return 340
  165.     when 2
  166.       return 300
  167.     when 3
  168.       return 250
  169.     else
  170.       return 1000
  171.     end
  172.   end
  173. def screen_z
  174.     # 返回计算后的队伍 Z 坐标的排列顺序
  175.     if self.index != nil
  176.       return 104 - self.index
  177.     else
  178.       return 0
  179.     end
  180.   end
  181. end
  182.  
  183. # RPG's snipplet...
  184. class Spriteset_Battle
  185. attr_accessor :actor_sprites
  186. attr_accessor :enemy_sprites
  187.  
  188.  
  189. alias original_initialize initialize
  190. def initialize
  191.    #@start_party_number = $game_party.actors.size
  192.    # ビューポートを作成
  193.    @viewport0 = Viewport.new(0, 0, 640, 480)
  194.    @viewport1 = Viewport.new(0, 0, 640, 480)
  195.    @viewport2 = Viewport.new(0, 0, 640, 480)
  196.    @viewport3 = Viewport.new(0, 0, 640, 480)
  197.    @viewport4 = Viewport.new(0, 0, 640, 480)
  198.    @viewport1.z = 50
  199.    @viewport2.z = 50
  200.    @viewport3.z = 200
  201.    @viewport4.z = 5000
  202.  
  203.    @battleback_sprite = Sprite.new(@viewport0)
  204.  
  205.    @enemy_sprites = []
  206.    for enemy in $game_troop.enemies #.reverse
  207.      @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  208.    end
  209.  
  210.    @actor_sprites = []
  211.    @actor_sprites.push(Sprite_Battler.new(@viewport2,$game_party.actors[0]))
  212.    @actor_sprites.push(Sprite_Battler.new(@viewport2,$game_party.actors[1]))
  213.    @actor_sprites.push(Sprite_Battler.new(@viewport2,$game_party.actors[2]))
  214.    @actor_sprites.push(Sprite_Battler.new(@viewport2,$game_party.actors[3]))
  215.  
  216.    @weather = RPG::Weather.new(@viewport1)
  217.    @picture_sprites = []
  218.    for i in 51..100
  219.      @picture_sprites.push(Sprite_Picture.new(@viewport3,
  220.        $game_screen.pictures[i]))
  221.    end
  222.    @timer_sprite = Sprite_Timer.new
  223.    update
  224. end
  225.  
  226.  
  227.  
  228. alias original_update update
  229. def update
  230.    @viewport1.z = 50 and @viewport2.z = 51 #if $actor_on_top == true
  231. #  @viewport1.z = 51 and @viewport2.z = 50 if $actor_on_top == false
  232.     # 刷新角色的活动块 (对应角色的替换)
  233.     @actor_sprites[0].battler = $game_party.actors[0]
  234.     @actor_sprites[1].battler = $game_party.actors[1]
  235.     @actor_sprites[2].battler = $game_party.actors[2]
  236.     @actor_sprites[3].battler = $game_party.actors[3]
  237.     # 战斗背景的文件名与现在情况有差异的情况下
  238.     if @battleback_name != $game_temp.battleback_name
  239.       @battleback_name = $game_temp.battleback_name
  240.       if @battleback_sprite.bitmap != nil
  241.         @battleback_sprite.bitmap.dispose
  242.       end
  243.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  244.       @battleback_sprite.src_rect.set(0, 0, 640, 480)
  245.     end
  246.     # 刷新战斗者的活动块
  247.     for sprite in @enemy_sprites + @actor_sprites
  248.       sprite.update
  249.     end
  250.     # 刷新天气图形
  251.     @weather.type = $game_screen.weather_type
  252.     @weather.max = $game_screen.weather_max
  253.     @weather.update
  254.     # 刷新图片活动块
  255.     for sprite in @picture_sprites
  256.       sprite.update
  257.     end
  258.     # 刷新计时器活动块
  259.     @timer_sprite.update
  260.     # 设置画面的色调与震动位置
  261.     @viewport1.tone = $game_screen.tone
  262.     @viewport1.ox = $game_screen.shake
  263.     # 设置画面的闪烁色
  264.     @viewport4.color = $game_screen.flash_color
  265.     # 刷新显示端口
  266.     @viewport1.update
  267.     @viewport2.update
  268.     @viewport4.update
  269. end
  270. end
  271.  
  272. class Sprite_Battler < Animated_Sprite
  273.  
  274. attr_accessor :battler
  275. attr_reader   :index
  276. attr_accessor :target_index
  277. attr_accessor :frame_width
  278. def initialize(viewport, battler = nil)
  279.    super(viewport)
  280.    @battler = battler
  281.    @pattern_b = 0 #
  282.    @counter_b = 0 #
  283.    @index = 0     #
  284.    if @battler != nil
  285.      tempbitmap = RPG::Cache.battler(@battler.battler_name, @battler.battler_hue)
  286.      @frame_width = tempbitmap.width/4
  287.      picturephase = @battler.picturephase
  288.         @frame_height = tempbitmap.height/8
  289.    else
  290.      @frame_width, @frame_height = 1,1
  291.    end   
  292.    # start sprite
  293.    @battler.is_a?(Game_Enemy) ? enemy_pose(1) : pose(1)
  294.    @battler_visible = false
  295.    if $target_index == nil
  296.      $target_index = 0
  297.    end
  298. end
  299.  
  300. def index=(index) #
  301.    @index = index  #
  302.    update          #
  303. end               #
  304.  
  305. def dispose
  306.    if self.bitmap != nil
  307.      self.bitmap.dispose
  308.    end
  309.    super
  310. end
  311.  
  312. def enemy                                             #
  313.    $target_index += $game_troop.enemies.size
  314.    $target_index %= $game_troop.enemies.size
  315.    return $game_troop.enemies[$target_index]           #
  316. end                                                   #
  317.  
  318. def actor                                             #
  319.    $target_index += $game_party.actors.size
  320.    $target_index %= $game_party.actors.size
  321.    return $game_party.actors[$target_index]            #
  322. end            
  323.  
  324. def pose(number, frames = 4)
  325.     case number
  326.     when 0  # run
  327.     change(frames, 5, 0, 0, 0)
  328.     when 1  # standby
  329.     change(frames, 5, 0, @frame_height)
  330.     when 2 # defend
  331.     change(frames, 5, 0, @frame_height * 2)
  332.     when 3 # Hurt, loops
  333.     change(frames, 5, 0, @frame_height * 3)
  334.     when 4 # attack no loop
  335.     change(frames, 5, 0, @frame_height * 4, 0, true)
  336.     when 5 # skill
  337.     change(frames, 5, 0, @frame_height * 5)
  338.     when 6 # death
  339.     change(frames, 5, 0, @frame_height * 6)
  340.     when 7 # winning pose
  341.     change(frames, 5, 0, @frame_height * 7)
  342.     when 8 # no sprite
  343.     change(frames, 5, 0, @frame_height * 8)
  344.     when 9 # no sprite
  345.     change(frames, 5, 0, @frame_height * 9)
  346.     when 10 # no sprite
  347.     change(frames, 5, 0, @frame_height * 10)
  348.     when 11 # no sprite
  349.     change(frames, 5, 0, @frame_height * 11)
  350.     when 12 # no sprite
  351.     change(frames, 5, 0, @frame_height * 12)
  352.     when 13 # no sprite
  353.     change(frames, 5, 0, @frame_height * 13)
  354.     when 14 # no sprite
  355.     change(frames, 5, 0, @frame_height * 14)
  356.     when 15 # no sprite
  357.     change(frames, 5, 0, @frame_height * 15)
  358.     when 16 # no sprite
  359.     change(frames, 5, 0, @frame_height * 16)
  360.     when 17 # no sprite
  361.     change(frames, 5, 0, @frame_height * 17)
  362.     when 18 # no sprite
  363.     change(frames, 5, 0, @frame_height * 18)
  364.     when 19 # no sprite
  365.     change(frames, 5, 0, @frame_height * 19)
  366.     when 20 # no sprite
  367.     change(frames, 5, 0, @frame_height * 20)
  368.     # ...etc.
  369.    else
  370.      change(frames, 5, 0, @frame_height * number, 0)
  371.    end
  372. end
  373.  
  374. #--------------------------------------------------------------------------
  375. # - Change the battle pose for an enemy
  376. #   number : pose' number
  377. #--------------------------------------------------------------------------
  378. def enemy_pose(number ,enemy_frames = 4)
  379.    case number
  380.    when 0  # 前进
  381.      change(enemy_frames, 5, 0, 0, 0)
  382.    when 1  # 等待
  383.      change(enemy_frames, 5, 0, @frame_height)
  384.    when 2 # 防御
  385.      change(enemy_frames, 5, 0, @frame_height * 2)
  386.    when 3 # 挨打
  387.      change(enemy_frames, 5, 0, @frame_height * 3)
  388.    when 4 # 物理攻击
  389.      change(enemy_frames, 5, 0, @frame_height * 4, 0, true)
  390.    when 5 # 法术
  391.      change(enemy_frames, 5, 0, @frame_height * 5)
  392.    when 6 # 死亡
  393.      change(enemy_frames, 5, 0, @frame_height * 6)
  394.    when 7 # 胜利待机
  395.      change(enemy_frames, 5, 0, @frame_height * 7)
  396.      # ...etc.
  397.    else
  398.      change(enemy_frames, 5, 0, @frame_height * number, 0)
  399.    end
  400. end
  401. #==============================================================================
  402. # sniplet end...
  403. #==============================================================================  
  404.  
  405.   def update
  406.    super
  407.  
  408.    if @battler == nil                                                      
  409.      self.bitmap = nil                                                      
  410.      loop_animation(nil)                                                   
  411.      return                                                               
  412.    end                                                                     
  413.    if @battler.battler_name != @battler_name or
  414.       @battler.battler_hue != @battler_hue
  415.  
  416.      @battler_name = @battler.battler_name
  417.      @battler_hue = @battler.battler_hue
  418.      self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  419.      @width = bitmap.width
  420.      @height = bitmap.height
  421.      self.ox = @frame_width / 2
  422.      self.oy = @frame_height
  423.  
  424.      if @battler.dead? or @battler.hidden
  425.        self.opacity = 0
  426.      end   
  427.      self.x =  @battler.screen_x
  428.      self.y =  @battler.screen_y
  429.      self.z =  @battler.screen_z
  430.    end
  431.  
  432.    if @battler.damage == nil and
  433.       @battler.state_animation_id != @state_animation_id
  434.      @state_animation_id = @battler.state_animation_id
  435.      loop_animation($data_animations[@state_animation_id])
  436.    end
  437.  
  438.    if @battler.is_a?(Game_Actor) and @battler_visible
  439.      if $game_temp.battle_main_phase
  440.        self.opacity += 3 if self.opacity < 255
  441.      else
  442.        self.opacity -= 3 if self.opacity > 207
  443.      end
  444.    end
  445.  
  446.      if battler.state?(51)
  447.        self.opacity = 100
  448.      end  
  449.  
  450.  
  451.    if @battler.blink
  452.      blink_on
  453.    else
  454.      blink_off
  455.    end
  456.  
  457.    unless @battler_visible
  458.      if not @battler.hidden and not @battler.dead? and
  459.         (@battler.damage == nil or @battler.damage_pop)
  460.        appear
  461.        @battler_visible = true
  462.      end
  463.      if not @battler.hidden and
  464.         (@battler.damage == nil or @battler.damage_pop) and
  465.         @battler.is_a?(Game_Actor)
  466.        appear
  467.        @battler_visible = true
  468.      end
  469.    end
  470.    if @battler_visible
  471.      if @battler.hidden
  472.        $game_system.se_play($data_system.escape_se)
  473.        escape
  474.        @battler_visible = false
  475.      end
  476.      if @battler.white_flash
  477.        whiten
  478.        @battler.white_flash = false
  479.      end
  480.      if @battler.animation_id != 0
  481.        animation = $data_animations[@battler.animation_id]
  482.        animation(animation, @battler.animation_hit)
  483.        @battler.animation_id = 0
  484.      end
  485.      if @battler.damage_pop
  486.        damage(@battler.damage, @battler.critical)
  487.        @battler.damage = nil
  488.        @battler.critical = false
  489.        @battler.damage_pop = false
  490.      end
  491.      if @battler.damage == nil and @battler.dead?
  492.        if @battler.is_a?(Game_Enemy)
  493.          $game_system.se_play($data_system.enemy_collapse_se)
  494.          collapse
  495.          @battler_visible = false
  496.        #定义的角色死亡音效
  497.         else
  498.          case @battler.id        
  499.            when 1
  500.            Audio.se_play("Audio/SE/"+"X-01-女-死亡",90,100) unless @dead
  501.            when 2
  502.            Audio.se_play("Audio/SE/"+"Y-01-男-死亡",90,100) unless @dead
  503.            when 3
  504.            Audio.se_play("Audio/SE/"+"X-02-女-死亡",90,100) unless @dead
  505.            when 4
  506.            Audio.se_play("Audio/SE/"+"Y-02-男-死亡",90,100) unless @dead
  507.            when 5
  508.            Audio.se_play("Audio/SE/"+"X-03-女-死亡",90,100) unless @dead
  509.            when 6
  510.            Audio.se_play("Audio/SE/"+"Y-03-男-死亡",90,100) unless @dead
  511.            when 7
  512.            Audio.se_play("Audio/SE/"+"7",90,100) unless @dead
  513.            when 8
  514.            Audio.se_play("Audio/SE/"+"8",90,100) unless @dead
  515.            when 9
  516.            Audio.se_play("Audio/SE/"+"9",90,100) unless @dead
  517.          end
  518.           @dead = true
  519.           pose(6)
  520.         end
  521.      else
  522.        @dead = false
  523.      end
  524.    end                                                                #
  525. end
  526. end
  527. #==============================================================================
  528. # Scene_Battle Costum  Battle System
  529. #==============================================================================
  530. class Scene_Battle
  531. def update_phase4
  532.    case @phase4_step
  533.    when 1
  534.      update_phase4_step1
  535.    when 2
  536.      update_phase4_step2
  537.    when 3
  538.      update_phase4_step3
  539.    when 4
  540.      update_phase4_step4
  541.    when 5
  542.      update_phase4_step5
  543.    when 6
  544.      update_phase4_step6
  545.    when 7
  546.      update_phase4_step7
  547.    when 8
  548.     update_phase4_step8   
  549.    end
  550. end
  551.  
  552. def make_basic_action_result
  553.    if @active_battler.is_a?(Game_Actor)
  554.      $actor_on_top = true
  555.    elsif @active_battler.is_a?(Game_Enemy)
  556.      $actor_on_top = false
  557.    end
  558.  
  559.    if @active_battler.current_action.basic == 0
  560.      if @active_battler.is_a?(Game_Actor)
  561.        if $data_weapons[@active_battler.weapon_id] == nil
  562.          @weapon_sprite = 4
  563.        else
  564.            @weapon_sprite = 4
  565.        end
  566.      else
  567.          @weapon_sprite_enemy = 4
  568.      end
  569.      @animation1_id = @active_battler.animation1_id
  570.      @animation2_id = @active_battler.animation2_id
  571.      if @active_battler.is_a?(Game_Enemy)
  572.        if @active_battler.restriction == 3
  573.          target = $game_troop.random_target_enemy
  574.        elsif @active_battler.restriction == 2
  575.          target = $game_party.random_target_actor
  576.        else
  577.          index = @active_battler.current_action.target_index
  578.          target = $game_party.smooth_target_actor(index)
  579.        end
  580.          x = target.screen_x - RPG::Cache.battler(@active_battler.battler_name, @active_battler.battler_hue).width/6
  581.          @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0)
  582.          @spriteset.enemy_sprites[@active_battler.index].move(x, target.screen_y, 10)
  583.      end
  584.      if @active_battler.is_a?(Game_Actor)
  585.        if @active_battler.restriction == 3
  586.          target = $game_party.random_target_actor
  587.        elsif @active_battler.restriction == 2
  588.          target = $game_troop.random_target_enemy
  589.        else
  590.          index = @active_battler.current_action.target_index
  591.          target = $game_troop.smooth_target_enemy(index)
  592.        end
  593.        x = target.screen_x + RPG::Cache.battler(@active_battler.battler_name, @active_battler.battler_hue).width/8
  594.        @spriteset.actor_sprites[@active_battler.index].pose(0)
  595.        @spriteset.actor_sprites[@active_battler.index].move(x, target.screen_y, 10)
  596.      end
  597.      @target_battlers = [target]
  598.      for target in @target_battlers
  599.        target.attack_effect(@active_battler)
  600.      end
  601.      return
  602.    end
  603.    if @active_battler.current_action.basic == 1
  604.      if @active_battler.is_a?(Game_Actor)
  605.        @spriteset.actor_sprites[@active_battler.index].pose(2) #defence
  606.      else
  607.        @spriteset.enemy_sprites[@active_battler.index].enemy_pose(2) #defence
  608.      end
  609.      @help_window.set_text($data_system.words.guard, 1)
  610.      return
  611.    end
  612.    if @active_battler.is_a?(Game_Enemy) and
  613.       @active_battler.current_action.basic == 2
  614.      @help_window.set_text("逃走", 1)
  615.      @active_battler.escape
  616.      return
  617.    end
  618.    if @active_battler.current_action.basic == 3
  619.      $game_temp.forcing_battler = nil
  620.      @phase4_step = 1
  621.      return
  622.    end
  623.    if @active_battler.current_action.basic == 4
  624.      if $game_temp.battle_can_escape == false
  625.        $game_system.se_play($data_system.buzzer_se)
  626.        return
  627.      end
  628.      $game_system.se_play($data_system.decision_se)
  629.      update_phase2_escape
  630.      return
  631.    end
  632. end
  633. #--------------------------------------------------------------------------
  634. # skill aktion...
  635. #--------------------------------------------------------------------------
  636. def make_skill_action_result
  637.    @skill = $data_skills[@active_battler.current_action.skill_id]
  638.    unless @active_battler.current_action.forcing
  639.      unless @active_battler.skill_can_use?(@skill.id)
  640.        $game_temp.forcing_battler = nil
  641.        @phase4_step = 1
  642.        return
  643.      end
  644.    end
  645.    @active_battler.sp -= @skill.sp_cost
  646.    @status_window.refresh
  647.    @help_window.set_text(@skill.name, 1)
  648.    if @active_battler.is_a?(Game_Actor)
  649.      if @skill.name != "one of the skills" # <--skill doesn't exist => all the skills have the skill animation!
  650.        @spriteset.actor_sprites[@active_battler.index].pose(5) # <-- sprite number
  651.      end
  652.    else
  653.      if @skill.name != "one of the skills" # <-- first skill name
  654.        @spriteset.enemy_sprites[@active_battler.index].enemy_pose(5) # <-- sprite number
  655.      end
  656.    end
  657. #=============================================================================
  658. # SKILL SPRITES END
  659. #=============================================================================
  660.    @animation1_id = @skill.animation1_id
  661.    @animation2_id = @skill.animation2_id
  662.    @common_event_id = @skill.common_event_id
  663.    set_target_battlers(@skill.scope)
  664.    for target in @target_battlers
  665.      target.skill_effect(@active_battler, @skill)
  666.    end
  667. end
  668. #--------------------------------------------------------------------------
  669. # how here we make the item use aktions
  670. #--------------------------------------------------------------------------
  671. def make_item_action_result
  672.    if @active_battler.is_a?(Game_Actor)
  673.      @spriteset.actor_sprites[@active_battler.index].pose(1)
  674.    else
  675.      @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
  676.    end
  677.  
  678.    @item = $data_items[@active_battler.current_action.item_id]
  679.    unless $game_party.item_can_use?(@item.id)
  680.      @phase4_step = 1
  681.      return
  682.    end
  683.    if @item.consumable
  684.      $game_party.lose_item(@item.id, 1)
  685.    end
  686.    @help_window.set_text(@item.name, 1)
  687.    @animation1_id = @item.animation1_id
  688.    @animation2_id = @item.animation2_id
  689.    @common_event_id = @item.common_event_id
  690.    index = @active_battler.current_action.target_index
  691.    target = $game_party.smooth_target_actor(index)
  692.    set_target_battlers(@item.scope)
  693.    for target in @target_battlers
  694.      target.item_effect(@item)
  695.    end
  696. end
  697.  
  698. #------------------战斗结束结果窗口------------------------------------
  699. def start_phase5
  700.    @phase = 5
  701.    $game_system.me_play($game_system.battle_end_me)
  702.    $game_system.bgm_play($game_temp.map_bgm)
  703.    exp = 0
  704.    gold = 0
  705.    treasures = []
  706.    for enemy in $game_troop.enemies
  707.      unless enemy.hidden
  708.        exp += enemy.exp
  709.        gold += enemy.gold
  710.        if rand(100) < enemy.treasure_prob
  711.          if enemy.item_id > 0
  712.            treasures.push($data_items[enemy.item_id])
  713.          end
  714.          if enemy.weapon_id > 0
  715.            treasures.push($data_weapons[enemy.weapon_id])
  716.          end
  717.          if enemy.armor_id > 0
  718.            treasures.push($data_armors[enemy.armor_id])
  719.          end
  720.        end
  721.      end
  722.    end
  723.    treasures = treasures[0..5]
  724.    for i in 0...$game_party.actors.size
  725.      actor = $game_party.actors[i]
  726.      @spriteset.actor_sprites[i].pose(7) unless actor.dead? # {=====}
  727.      if actor.cant_get_exp? == false
  728.        last_level = actor.level
  729.        actor.exp += exp
  730.        if actor.level > last_level
  731.          @status_window.level_up(i)
  732.        end
  733.      end
  734.    end
  735.    $game_party.gain_gold(gold)
  736.    for item in treasures
  737.      case item
  738.      when RPG::Item
  739.        $game_party.gain_item(item.id, 1)
  740.      when RPG::Weapon
  741.        $game_party.gain_weapon(item.id, 1)
  742.      when RPG::Armor
  743.        $game_party.gain_armor(item.id, 1)
  744.      end
  745.    end
  746.    @result_window = Window_BattleResult.new(exp, gold, treasures)
  747.    @phase5_wait_count = 10   #该数影响返回地图的等待时间
  748. end
  749.  
  750. def update_phase4_step3
  751.    if @active_battler.current_action.kind == 0 and
  752.       @active_battler.current_action.basic == 0
  753.       # in this one... we have our weapon animations... for player and monster
  754.      if @active_battler.is_a?(Game_Actor)
  755.        @spriteset.actor_sprites[@active_battler.index].pose(@weapon_sprite)
  756.      elsif @active_battler.is_a?(Game_Enemy)
  757.        @spriteset.enemy_sprites[@active_battler.index].enemy_pose(@weapon_sprite_enemy)
  758.      end
  759.    end
  760.    if @animation1_id == 0
  761.      @active_battler.white_flash = true
  762.    else
  763.      @active_battler.animation_id = @animation1_id
  764.      @active_battler.animation_hit = true
  765.    end
  766.    @phase4_step = 4
  767. end
  768.  
  769. def update_phase4_step4
  770.    # this here is for the hit animation...
  771.    for target in @target_battlers
  772.      if target.is_a?(Game_Actor) and !@active_battler.is_a?(Game_Actor)
  773.        if target.guarding?
  774.          @spriteset.actor_sprites[target.index].pose(2)
  775.        else
  776.          @spriteset.actor_sprites[target.index].pose(3)
  777.        end
  778.        elsif target.is_a?(Game_Enemy) and !@active_battler.is_a?(Game_Enemy)
  779.        if target.guarding?
  780.          @spriteset.enemy_sprites[target.index].enemy_pose(2)
  781.        else
  782.          @spriteset.enemy_sprites[target.index].enemy_pose(3)
  783.        end
  784.      end
  785.      target.animation_id = @animation2_id
  786.      target.animation_hit = (target.damage != "Miss")
  787.    end
  788.    @wait_count = 8
  789.    @phase4_step = 5
  790. end
  791.  
  792. def update_phase4_step5
  793.   if @active_battler.hp > 0 and @active_battler.slip_damage?
  794.      @active_battler.slip_damage_effect
  795.      @active_battler.damage_pop = true
  796.    end
  797.  
  798.    @help_window.visible = false
  799.    @status_window.refresh
  800.    # here comes the guard animations....
  801.    if @active_battler.is_a?(Game_Actor)
  802.      @spriteset.actor_sprites[@active_battler.index].pose(1)
  803.    else
  804.      @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
  805.    end
  806.    for target in @target_battlers
  807.      if target.damage != nil
  808.        target.damage_pop = true
  809.        if @active_battler.is_a?(Game_Actor)
  810.          @spriteset.actor_sprites[@active_battler.index].pose(1)
  811.        else
  812.          @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
  813.        end
  814.      end
  815.    end
  816.    @phase4_step = 6
  817. end
  818.  
  819. #--------------------------------------------------------------------------
  820. # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  821. #--------------------------------------------------------------------------
  822. def update_phase4_step6
  823.  
  824.    if @active_battler.is_a?(Game_Actor) and !@active_battler.dead?
  825.      @spriteset.actor_sprites[@active_battler.index].move(@active_battler.screen_x, @active_battler.screen_y, 20)
  826.      @spriteset.actor_sprites[@active_battler.index].pose(1)
  827.    elsif !@active_battler.dead?
  828.      @spriteset.enemy_sprites[@active_battler.index].move(@active_battler.screen_x, @active_battler.screen_y, 20)
  829.      @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
  830.    end
  831.    for target in @target_battlers
  832.      if target.is_a?(Game_Actor) and !target.dead?
  833.          @spriteset.actor_sprites[target.index].pose(1)
  834.        elsif !target.dead?
  835.          @spriteset.enemy_sprites[target.index].enemy_pose(1)
  836.      end
  837.    end
  838.    $game_temp.forcing_battler = nil
  839.    if @common_event_id > 0
  840.      common_event = $data_common_events[@common_event_id]
  841.      $game_system.battle_interpreter.setup(common_event.list, 0)
  842.    end
  843.    @phase4_step = 7
  844. end
  845.  
  846. def update_phase4_step7
  847.    if @active_battler.is_a?(Game_Actor) and !@active_battler.dead?
  848.      @spriteset.actor_sprites[@active_battler.index].pose(1)
  849.    elsif !@active_battler.dead?
  850.      @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
  851.    end
  852.    $game_temp.forcing_battler = nil
  853.    if @common_event_id > 0
  854.     common_event = $data_common_events[@common_event_id]
  855.      $game_system.battle_interpreter.setup(common_event.list, 0)
  856.    end
  857.    @phase4_step = 1
  858. end
  859.  
  860. def update
  861.    if $game_system.battle_interpreter.running?
  862.      $game_system.battle_interpreter.update
  863.      if $game_temp.forcing_battler == nil
  864.        unless $game_system.battle_interpreter.running?
  865.          unless judge
  866.            setup_battle_event
  867.          end
  868.        end
  869.        if @phase != 5
  870.          @status_window.refresh
  871.        end
  872.      end
  873.    end
  874.    $game_system.update
  875.    $game_screen.update
  876.    if $game_system.timer_working and $game_system.timer == 0
  877.      $game_temp.battle_abort = true
  878.    end
  879.    @help_window.update
  880.    @party_command_window.update
  881.    @actor_command_window.update
  882.    @status_window.update
  883.    @message_window.update
  884.    @spriteset.update
  885.    if $game_temp.transition_processing
  886.      $game_temp.transition_processing = false
  887.      if $game_temp.transition_name == ""
  888.        Graphics.transition(20)
  889.      else
  890.        Graphics.transition(40, "Graphics/Transitions/" +
  891.          $game_temp.transition_name)
  892.      end
  893.    end
  894.    if $game_temp.message_window_showing
  895.      return
  896.    end
  897.    if @spriteset.effect?
  898.      return
  899.    end
  900.    if $game_temp.gameover
  901.      $scene = Scene_Gameover.new
  902.      return
  903.    end
  904.    if $game_temp.to_title
  905.      $scene = Scene_Title.new
  906.      return
  907.    end
  908.    if $game_temp.battle_abort
  909.      $game_system.bgm_play($game_temp.map_bgm)
  910.      battle_end(1)
  911.      return
  912.    end
  913.    if @wait_count > 0
  914.      @wait_count -= 1
  915.      return
  916.    end
  917.    for actor in @spriteset.actor_sprites
  918.      if actor.moving
  919.        return
  920.      end
  921.    end
  922.    for enemy in @spriteset.enemy_sprites
  923.      if enemy.moving# and $game_system.animated_enemy
  924.        return
  925.      end
  926.    end
  927.    if $game_temp.forcing_battler == nil and
  928.       $game_system.battle_interpreter.running?
  929.      return
  930.    end
  931.    case @phase
  932.    when 1
  933.      update_phase1
  934.    when 2
  935.      update_phase2
  936.    when 3
  937.      update_phase3
  938.    when 4
  939.      update_phase4
  940.    when 5
  941.      update_phase5
  942.    end
  943. end
  944. end
   

飞剑侠.png (195.3 KB, 下载次数: 3)

原本的4帧

原本的4帧

60_副本55.png (295.82 KB, 下载次数: 3)

改成这种8帧

改成这种8帧

作者: cuihaohao    时间: 2016-4-24 11:26
自己试着改了很多地方都不合适,脑袋都疼了
作者: 夜狠简单    时间: 2016-4-24 12:53
target.animation_id = @animation2_id
     target.animation_hit = (target.damage != "Miss")
   end
   @wait_count = 8

改这个8试试
作者: cuihaohao    时间: 2016-4-24 14:13
夜狠简单 发表于 2016-4-24 12:53
target.animation_id = @animation2_id
     target.animation_hit = (target.damage != "Miss")
   end ...

感谢大神的指点




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