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

Project1

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

[已经过期] 行动方动画的问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2008-11-8
帖子
145
跳转到指定楼层
1
发表于 2011-2-10 00:52:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
为什么我用补血技能和附加状态技能时,对自己用的话,就没了行动方动画?而对别人用,就是正常的?

以下是我用的脚本:
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 开始主回合
  9.   #--------------------------------------------------------------------------
  10.   def start_phase4
  11.     # 转移到回合 4
  12.     @phase = 4
  13.     # 回合数计数
  14.     $game_temp.battle_turn += 1
  15.     # 搜索全页的战斗事件
  16.     for index in 0...$data_troops[@troop_id].pages.size
  17.       # 获取事件页
  18.       page = $data_troops[@troop_id].pages[index]
  19.       # 本页的范围是 [回合] 的情况下
  20.       if page.span == 1
  21.         # 设置已经执行标志
  22.         $game_temp.battle_event_flags[index] = false
  23.       end
  24.     end
  25.     # 设置角色为非选择状态
  26.     @actor_index = -1
  27.     @active_battler = nil
  28.     # 有效化同伴指令窗口
  29.     @party_command_window.active = false
  30.     @party_command_window.visible = false
  31.     # 无效化角色指令窗口
  32.     @actor_command_window.active = false
  33.     @actor_command_window.visible = false
  34.     # 设置主回合标志
  35.     $game_temp.battle_main_phase = true
  36.     # 生成敌人行动
  37.     for enemy in $game_troop.enemies
  38.       enemy.make_action
  39.     end
  40.     # 生成行动顺序
  41.     make_action_orders
  42.     # 移动到步骤 1
  43.     @phase4_step = 1
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 生成行动循序
  47.   #--------------------------------------------------------------------------
  48.   def make_action_orders
  49.     # 初始化序列 @action_battlers
  50.     @action_battlers = []
  51.     # 添加敌人到 @action_battlers 序列
  52.     for enemy in $game_troop.enemies
  53.       @action_battlers.push(enemy)
  54.     end
  55.     # 添加角色到 @action_battlers 序列
  56.     for actor in $game_party.actors
  57.       @action_battlers.push(actor)
  58.     end
  59.     # 确定全体的行动速度
  60.     for battler in @action_battlers
  61.       battler.make_action_speed
  62.     end
  63.     # 按照行动速度从大到小排列
  64.     @action_battlers.sort! {|a,b|
  65.       b.current_action.speed - a.current_action.speed }
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 刷新画面 (主回合)
  69.   #--------------------------------------------------------------------------
  70.   def update_phase4
  71.     case @phase4_step
  72.     when 1
  73.       update_phase4_step1
  74.     when 2
  75.       update_phase4_step2
  76.     when 3
  77.       update_phase4_step3
  78.     when 4
  79.       update_phase4_step4
  80.     when 5
  81.       update_phase4_step5
  82.     when 6
  83.       update_phase4_step6
  84.     end
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  88.   #--------------------------------------------------------------------------
  89.   def update_phase4_step1
  90.     # 隐藏帮助窗口
  91.     @help_window.visible = false
  92.     # 判定胜败
  93.     if judge
  94.       # 胜利或者失败的情况下 : 过程结束
  95.       return
  96.     end
  97.     # 强制行动的战斗者不存在的情况下
  98.     if $game_temp.forcing_battler == nil
  99.       # 设置战斗事件
  100.       setup_battle_event
  101.       # 执行战斗事件中的情况下
  102.       if $game_system.battle_interpreter.running?
  103.         return
  104.       end
  105.     end
  106.     # 强制行动的战斗者存在的情况下
  107.     if $game_temp.forcing_battler != nil
  108.       # 在头部添加后移动
  109.       @action_battlers.delete($game_temp.forcing_battler)
  110.       @action_battlers.unshift($game_temp.forcing_battler)
  111.     end
  112.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  113.     if @action_battlers.size == 0
  114.       # 开始同伴命令回合
  115.       start_phase2
  116.       return
  117.     end
  118.     # 初始化动画 ID 和公共事件 ID
  119.     @animation1_id = 0
  120.     @animation2_id = 0
  121.     @common_event_id = 0
  122.     # 未行动的战斗者移动到序列的头部
  123.     @active_battler = @action_battlers.shift
  124.     # 如果已经在战斗之外的情况下
  125.     if @active_battler.index == nil
  126.       return
  127.     end
  128.     # 连续伤害
  129.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  130.       @active_battler.slip_damage_effect
  131.       @active_battler.damage_pop = true
  132.     end
  133.     # 自然解除状态
  134.     @active_battler.remove_states_auto
  135.     # 刷新状态窗口
  136.     @status_window.refresh
  137.     # 移至步骤 2
  138.     @phase4_step = 2
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  142.   #--------------------------------------------------------------------------
  143.    def update_phase4_step2
  144.     # 如果不是强制行动
  145.     unless @active_battler.current_action.forcing
  146.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  147.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  148.         # 设置行动为攻击
  149.         @active_battler.current_action.kind = 0
  150.         @active_battler.current_action.basic = 0
  151.       end
  152.       # 限制为 [不能行动] 的情况下
  153.       if @active_battler.restriction == 4
  154.         # 清除行动强制对像的战斗者
  155.         $game_temp.forcing_battler = nil
  156.         # 移至步骤 1
  157.         @phase4_step = 1
  158.         return
  159.       end
  160.     end
  161.     # 清除对像战斗者
  162.     @target_battlers = []
  163.     # 行动种类分支
  164.     case @active_battler.current_action.kind
  165.     when 0  # 基本
  166.       make_basic_action_result
  167.     when 1  # 特技
  168.       make_skill_action_result
  169.     when 2  # 物品
  170.       make_item_action_result
  171.     end
  172.     # 移至步骤 3
  173.     if @phase4_step == 2
  174.       @phase4_step = 3
  175.     end
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 生成基本行动结果
  179.   #--------------------------------------------------------------------------
  180.   def make_basic_action_result
  181.     $choice = 1
  182.     # 攻击的情况下
  183.     if @active_battler.current_action.basic == 0
  184.       # 设置攻击 ID
  185.       @animation1_id = @active_battler.animation1_id
  186.       @animation2_id = @active_battler.animation2_id
  187.       # 行动方的战斗者是敌人的情况下
  188.       if @active_battler.is_a?(Game_Enemy)
  189.         if @active_battler.restriction == 3
  190.           target = $game_troop.random_target_enemy  
  191.         elsif @active_battler.restriction == 2
  192.           target = $game_party.random_target_actor
  193.         else
  194.           index = @active_battler.current_action.target_index
  195.           target = $game_party.smooth_target_actor(index)
  196.         end
  197.       end
  198.       # 行动方的战斗者是角色的情况下
  199.       if @active_battler.is_a?(Game_Actor)
  200.         if @active_battler.restriction == 3
  201.           target = $game_party.random_target_actor
  202.         elsif @active_battler.restriction == 2
  203.           target = $game_troop.random_target_enemy
  204.         else
  205.           index = @active_battler.current_action.target_index
  206.           target = $game_troop.smooth_target_enemy(index)
  207.         end
  208.       end
  209.       # 设置对像方的战斗者序列
  210.       @target_battlers = [target]
  211.       # 应用通常攻击效果
  212.       for target in @target_battlers
  213.         target.attack_effect(@active_battler)
  214.       end
  215.       return
  216.     end
  217.     # 防御的情况下
  218.     if @active_battler.current_action.basic == 1
  219.       # ——回复。可以改为SP。
  220.         @active_battler.damage = -@active_battler.maxhp * 0.2
  221.         @active_battler.damage = -@active_battler.maxsp * 0.1
  222.         @active_battler.damage = @active_battler.damage.to_i
  223.         @active_battler.hp -= @active_battler.damage
  224.       # 回復值的表示
  225.         @target_battlers.push(@active_battler)
  226.        return
  227.     end

  228.     # 逃跑的情况下
  229.     if @active_battler.is_a?(Game_Enemy) and
  230.        @active_battler.current_action.basic == 2
  231.       #  帮助窗口显示"逃跑"
  232.       @help_window.set_text("", 1)
  233.       # 逃跑
  234.       @active_battler.escape
  235.       return
  236.     end
  237.     # 什么也不做的情况下
  238.     if @active_battler.current_action.basic == 3
  239.       # 清除强制行动对像的战斗者
  240.       $game_temp.forcing_battler = nil
  241.       # 移至步骤 1
  242.       @phase4_step = 1
  243.       return
  244.     end
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 设置物品或特技对像方的战斗者
  248.   #     scope : 特技或者是物品的范围
  249.   #--------------------------------------------------------------------------
  250.   def set_target_battlers(scope)
  251.    
  252.     # 行动方的战斗者是敌人的情况下
  253.     if @active_battler.is_a?(Game_Enemy)
  254.       # 效果范围分支
  255.       case scope
  256.       when 1  # 敌单体
  257.         index = @active_battler.current_action.target_index
  258.         @target_battlers.push($game_party.smooth_target_actor(index))
  259.       when 2  # 敌全体
  260.         for actor in $game_party.actors
  261.           if actor.exist?
  262.             @target_battlers.push(actor)
  263.           end
  264.         end
  265.       when 3  # 我方单体
  266.         index = @active_battler.current_action.target_index
  267.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  268.       when 4  # 我方全体
  269.         for enemy in $game_troop.enemies
  270.           if enemy.exist?
  271.             @target_battlers.push(enemy)
  272.           end
  273.         end
  274.       when 5  # 我方单体 (HP 0)
  275.         index = @active_battler.current_action.target_index
  276.         enemy = $game_troop.enemies[index]
  277.         if enemy != nil and enemy.hp0?
  278.           @target_battlers.push(enemy)
  279.         end
  280.       when 6  # 我方全体 (HP 0)
  281.         for enemy in $game_troop.enemies
  282.           if enemy != nil and enemy.hp0?
  283.             @target_battlers.push(enemy)
  284.           end
  285.         end
  286.       when 7  # 使用者
  287.         @target_battlers.push(@active_battler)
  288.       end
  289.     end
  290.     # 行动方的战斗者是角色的情况下
  291.     if @active_battler.is_a?(Game_Actor)
  292.       # 效果范围分支
  293.       case scope
  294.       when 1  # 敌单体
  295.         index = @active_battler.current_action.target_index
  296.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  297.       when 2  # 敌全体
  298.         for enemy in $game_troop.enemies
  299.           if enemy.exist?
  300.             @target_battlers.push(enemy)
  301.           end
  302.         end
  303.       when 3  # 我方单体
  304.         index = @active_battler.current_action.target_index
  305.         @target_battlers.push($game_party.smooth_target_actor(index))
  306.       when 4  # 我方全体
  307.         for actor in $game_party.actors
  308.           if actor.exist?
  309.             @target_battlers.push(actor)
  310.           end
  311.         end
  312.       when 5  # 我方单体 (HP 0)
  313.         index = @active_battler.current_action.target_index
  314.         actor = $game_party.actors[index]
  315.         if actor != nil and actor.hp0?
  316.           @target_battlers.push(actor)
  317.         end
  318.       when 6  # 我方全体 (HP 0)
  319.         for actor in $game_party.actors
  320.           if actor != nil and actor.hp0?
  321.             @target_battlers.push(actor)
  322.           end
  323.         end
  324.       when 7  # 使用者
  325.         @target_battlers.push(@active_battler)
  326.       end
  327.     end
  328.   end
  329.   #--------------------------------------------------------------------------
  330.   # ● 生成特技行动结果
  331.   #--------------------------------------------------------------------------
  332.   def make_skill_action_result
  333.     # 获取特技
  334.     @skill = $data_skills[@active_battler.current_action.skill_id]
  335.     # 如果不是强制行动
  336.     unless @active_battler.current_action.forcing
  337.       # 因为 SP 耗尽而无法使用的情况下
  338.       unless @active_battler.skill_can_use?(@skill.id)
  339.         # 清除强制行动对像的战斗者
  340.         $game_temp.forcing_battler = nil
  341.         # 移至步骤 1
  342.         @phase4_step = 1
  343.         return
  344.       end
  345.     end
  346.     # 消耗 SP
  347.     @active_battler.sp -= @skill.sp_cost
  348.     # 刷新状态窗口
  349.     @status_window.refresh
  350.     # 在帮助窗口显示特技名
  351.     @help_window.set_text(@skill.name, 1)
  352.     # 设置动画 ID
  353.     @animation1_id = @skill.animation1_id
  354.     @animation2_id = @skill.animation2_id
  355.     # 设置对像侧战斗者
  356.     set_target_battlers(@skill.scope)
  357.    
  358.     ########### 公共事件 ID 有效的情况下###########(提前动画)
  359.     if @common_event_id > 0 and @common_event_id != 72
  360.       # 设置事件
  361.      
  362.       common_event = $data_common_events[@common_event_id]
  363.       $game_system.battle_interpreter.setup(common_event.list, 0)
  364.     end
  365.      
  366.     # 应用特技效果
  367.     for target in @target_battlers
  368.       target.skill_effect(@active_battler, @skill)
  369.     end
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ● 生成物品行动结果
  373.   #--------------------------------------------------------------------------
  374.   def make_item_action_result
  375.     $choice = 3
  376.    
  377.     if @throw_s == 1
  378.    
  379.     # 获取物品
  380.     data = @active_battler.current_action.item_id[0] ? $data_items : $data_weapons
  381.     @item = data[@active_battler.current_action.item_id[1]]
  382.     # 因为物品耗尽而无法使用的情况下
  383.     if @active_battler.current_action.item_id[0]
  384.       unless $game_party.item_can_use?(@item.id)
  385.         # 移至步骤 1
  386.         @phase4_step = 1
  387.         return
  388.       end
  389.       # 消耗品的情况下
  390.       if @item.consumable
  391.         # 使用的物品减 1
  392.         $game_party.lose_item(@item.id, 1)
  393.       end
  394.       # 设置公共事件 ID
  395.       @common_event_id = @item.common_event_id
  396.       
  397.       # 设置动画 ID
  398. @animation1_id = @item.animation1_id
  399.       @animation2_id = @item.animation2_id
  400.       # 确定对像
  401.       index = @active_battler.current_action.target_index
  402.       target = $game_party.smooth_target_actor(index)
  403.       # 设置对像侧战斗者
  404.       set_target_battlers(@item.scope)
  405.     else
  406.       
  407.       # 设置动画 ID
  408.             @animation1_id = @item.animation1_id
  409.       @animation2_id = @item.animation2_id
  410.       
  411.       # 确定对像
  412.       index = @active_battler.current_action.target_index
  413.       target = $game_party.smooth_target_actor(index)
  414.       # 设置对像侧战斗者
  415.       set_target_battlers(1)
  416.     end
  417.     if @common_event_id > 0 and @common_event_id != 72
  418.       # 设置事件
  419.       @animation1_id = 0
  420.       common_event = $data_common_events[@common_event_id]
  421.       $game_system.battle_interpreter.setup(common_event.list, 0)

  422.   end
  423.     # 应用物品效果
  424.     for target in @target_battlers
  425.       target.item_effect(@item)
  426.     end
  427.   #end
  428.    
  429. else
  430.    
  431.    
  432.     # 获取物品
  433.     @item = $data_items[@active_battler.current_action.item_id]
  434.     # 因为物品耗尽而无法使用的情况下
  435.     unless $game_party.item_can_use?(@item.id)
  436.       # 移至步骤 1
  437.       @phase4_step = 1
  438.       return
  439.     end
  440.     # 消耗品的情况下
  441.     #print "make"
  442.     if @item.consumable
  443.       # 使用的物品减 1
  444.       $game_party.lose_item(@item.id, 1)
  445.     end
  446.    
  447.     # 设置动画 ID
  448.     @animation1_id = @item.animation1_id  
  449.     @animation2_id = @item.animation2_id
  450.     # 设置公共事件 ID
  451.     @common_event_id = @item.common_event_id
  452.     # 确定对像
  453.     index = @active_battler.current_action.target_index
  454.     target = $game_party.smooth_target_actor(index)
  455.     # 设置对像侧战斗者
  456.     set_target_battlers(@item.scope)
  457.     ########### 公共事件 ID 有效的情况下###########(提前动画)
  458.     if @common_event_id > 0 and @common_event_id != 72
  459.       # 设置事件
  460.       @animation1_id = 0
  461.       common_event = $data_common_events[@common_event_id]
  462.       $game_system.battle_interpreter.setup(common_event.list, 0)

  463.   end
  464.     # 应用物品效果
  465.     for target in @target_battlers
  466.       target.item_effect(@item)
  467.     end
  468.   end
  469. end
  470.    
  471. ##--------------------------------------------------------------------------
  472. # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  473. #--------------------------------------------------------------------------
  474. def update_phase4_step3
  475.   
  476.    # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  477.    if @animation1_id == 0
  478.       @active_battler.white_flash = false
  479.    else
  480.      @active_battler.animation_id = @animation1_id
  481.      @active_battler.animation_hit = true
  482.      end
  483. # 效果范围是敌方的情况下
  484.    if $choice != 2
  485.      # 对像方动画
  486.      for target in @target_battlers
  487.        target.animation_id = @animation2_id
  488.        target.animation_hit = (target.damage != "Miss")
  489.      end
  490.    end
  491.    if $choice == 2
  492.      if @skill.scope <= 2
  493.      for target in @target_battlers
  494.        target.animation_id = @animation2_id
  495.        target.animation_hit = (target.damage != "Miss")
  496.      end     
  497.    end
  498. end
  499.    # 移至步骤 4
  500.    @phase4_step = 4
  501. end



  502.   #--------------------------------------------------------------------------
  503. # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  504. #--------------------------------------------------------------------------
  505. def update_phase4_step4
  506.    # 效果范围是我方的情况下
  507. if $choice == 2
  508.     if @skill.scope >= 3
  509.      # 对像方动画
  510.      for target in @target_battlers
  511.        target.animation_id = @animation2_id
  512.        target.animation_hit = (target.damage != "Miss")
  513.      end
  514.    end
  515.   end
  516.    # 限制动画长度、最低 8 帧
  517.    @wait_count = 8
  518.    # 移至步骤 5
  519.    @phase4_step = 5
  520. end


  521.   #--------------------------------------------------------------------------
  522.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  523.   #--------------------------------------------------------------------------
  524.   def update_phase4_step5
  525.     # 刷新状态窗口
  526.     @status_window.refresh
  527.     # 显示伤害
  528.     for target in @target_battlers
  529.       if target.damage != nil
  530.         target.damage_pop = true
  531.       end
  532.     end
  533.     # 移至步骤 6
  534.     @phase4_step = 6
  535.   end
  536.   #--------------------------------------------------------------------------
  537.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  538.   #--------------------------------------------------------------------------
  539.    def update_phase4_step6
  540.     # 清除强制行动对像的战斗者
  541.     $game_temp.forcing_battler = nil
  542.     # 对于一些后执行战斗事件
  543.     if  @common_event_id == 72
  544.       # 设置事件
  545.       common_event = $data_common_events[@common_event_id]
  546.       $game_system.battle_interpreter.setup(common_event.list, 0)
  547.     end
  548.     # 连续伤害的退后
  549.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  550.        @active_battler.slip_damage_effect
  551.        #@active_battler.damage_pop = true
  552.     end
  553.     # 如果不是结束战斗回合的情况下
  554.     if @phase != 5
  555.       # 刷新状态窗口
  556.       @status_window.refresh
  557.     end
  558.     # 移至步骤 1
  559.     @phase4_step = 1
  560.   end
  561. end
复制代码

Lv1.梦旅人

梦石
0
星屑
50
在线时间
153 小时
注册时间
2011-2-9
帖子
678
2
发表于 2011-2-10 00:54:46 | 只看该作者
1、我觉得问题不详细,我看了之后一头雾水。2、建议你发图片、工程,我们会更好的解决。

点评

打酱油一次警告,不够详细你可以不答,用点评不行么?  发表于 2011-2-10 07:01
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2008-11-8
帖子
145
3
 楼主| 发表于 2011-2-10 12:00:24 | 只看该作者
图就是这样:


帮自己补血就没了行动方动画
帮别人补血就有行动方动画

点评

红的是神马?  发表于 2011-2-11 15:53
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2008-11-8
帖子
145
4
 楼主| 发表于 2011-2-11 15:50:16 | 只看该作者
怎么还没有人回答?先顶一下

点评

连贴!zh的插件抽了?  发表于 2011-2-11 15:53
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2008-11-8
帖子
145
5
 楼主| 发表于 2011-2-11 21:14:21 | 只看该作者
红色遮住的,是人的头像。
现在把工程送上,只要试试自己帮自己补血和自己帮别人补血,就会知道什么问题了。


Project1.rar (714.25 KB, 下载次数: 26)

评分

参与人数 1星屑 -60 收起 理由
IamI -60 三连贴君你好,谢谢惠顾,下次别来.

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-28 22:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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