查看: 2432|回复: 1

[已经解决] 武器攻击几率发动特技的脚本,求修复BUG。

[复制链接]
梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
回帖
10960

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

发表于 2013-8-19 23:53:19 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby" line="1"]#==============================================================================
# 【 武器攻击发动特技 】
#==============================================================================
#  by ->  芯☆淡茹水
#==============================================================================
# ** 使用方法 **
#                  复制该脚本,插入到 main 前。
#==============================================================================
### 设置 ##
#------------------------------------------------------------------------------
# 攻击时有几率发动特技的武器 ID
WEAPON_ID = [3,4,5]
# 发动的特技 ID,与上面武器 ID 相对应。上面的第一个,对应下面的第一个,,,,
SKILL_ID  = [2, 3, 4]
# 攻击时发动特技的几率百分比  %  。
PERCENT = 70
#==============================================================================
class Scene_Battle
  def update_phase4_step2
    # 如果不是强制行动
    unless @active_battler.current_action.forcing
      # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
      if @active_battler.restriction == 2 or @active_battler.restriction == 3
        # 设置行动为攻击
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
      end
      # 限制为 [不能行动] 的情况下
      if @active_battler.restriction == 4
        # 清除行动强制对像的战斗者
        $game_temp.forcing_battler = nil
        # 移至步骤 1
        @phase4_step = 1
        return
      end
    end
    # 清除对像战斗者
    @target_battlers = []
    # 行动种类分支
    case @active_battler.current_action.kind
    when 0  # 基本
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      # 如果战斗者是角色
      if @active_battler.is_a?(Game_Actor)
         # 如果 WEAPON_ID 数组有战斗者当前的武器ID
        if WEAPON_ID.include?(@active_battler.weapon_id)
          # 随机 100 小于 百分比 的情况下
          if rand(100) < PERCENT
            # 将 i 代入 0 到 WEAPON_ID 的最大个数
            for i in 0...WEAPON_ID.size
              # 如果战斗者的武器 ID 等于 WEAPON_ID
              if @active_battler.weapon_id == WEAPON_ID
                # 获取与 WEAPON_ID 相对应的特技ID SKILL_ID
                skill = $data_skills[SKILL_ID]
                # 帮助窗口显示特技名
                @help_window.set_text("发动武器特效" , 1)
                # 获取特技动画
                @animation1_id = skill.animation1_id
                @animation2_id = skill.animation2_id
                # 获取公共事件
                @common_event_id = skill.common_event_id
                # 特技有效范围
                set_target_battlers(skill.scope)
                # 应用特技效果
                for target in @target_battlers
                  target.skill_effect(@active_battler, skill)
                end
              end
            end
            # 其他情况,全部为基本行动类
          else
            make_basic_action_result
          end
        else
          make_basic_action_result
        end
      else
        make_basic_action_result
      end
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    when 1  # 特技
      make_skill_action_result
    when 2  # 物品
      make_item_action_result
    end
    # 移至步骤 3
    if @phase4_step == 2
      @phase4_step = 3
    end
  end
end
#==============================================================================[/pre]

这个脚本是可以在攻击中发动武器特效。
但是BUG就在于,连防御时也是可以发动武器特效。
求修复一下,不让在防御时发动武器特效?
应该怎么做?

@芯☆淡茹水

顺便@一下作者吧
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

梦石
0
星屑
34459
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2013-8-20 18:14:22 | 显示全部楼层
已修改,但未测试。理论上没有问题。
  1. #==============================================================================
  2. # 【 武器攻击发动特技 】
  3. #==============================================================================
  4. #  by ->  芯☆淡茹水
  5. #==============================================================================
  6. # ** 使用方法 **
  7. #                  复制该脚本,插入到 main 前。
  8. #==============================================================================
  9. ### 设置 ##
  10. #------------------------------------------------------------------------------
  11. # 攻击时有几率发动特技的武器 ID
  12. WEAPON_ID = [3,4,5]
  13. # 发动的特技 ID,与上面武器 ID 相对应。上面的第一个,对应下面的第一个,,,,
  14. SKILL_ID  = [2, 3, 4]
  15. # 攻击时发动特技的几率百分比  %  。
  16. PERCENT = 70
  17. #==============================================================================
  18. class Scene_Battle
  19.   def update_phase4_step2
  20.     # 如果不是强制行动
  21.     unless @active_battler.current_action.forcing
  22.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  23.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  24.         # 设置行动为攻击
  25.         @active_battler.current_action.kind = 0
  26.         @active_battler.current_action.basic = 0
  27.       end
  28.       # 限制为 [不能行动] 的情况下
  29.       if @active_battler.restriction == 4
  30.         # 清除行动强制对像的战斗者
  31.         $game_temp.forcing_battler = nil
  32.         # 移至步骤 1
  33.         @phase4_step = 1
  34.         return
  35.       end
  36.     end
  37.     # 清除对像战斗者
  38.     @target_battlers = []
  39.     # 行动种类分支
  40.     case @active_battler.current_action.kind
  41.     when 0  # 基本
  42. #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  43.       # 如果战斗者是角色
  44.       if @active_battler.is_a?(Game_Actor) and
  45.         @active_battler.current_action.basic == 0
  46.          # 如果 WEAPON_ID 数组有战斗者当前的武器ID
  47.         if WEAPON_ID.include?(@active_battler.weapon_id)
  48.           # 随机 100 小于 百分比 的情况下
  49.           if rand(100) < PERCENT
  50.             # 将 i 代入 0 到 WEAPON_ID 的最大个数
  51.             for i in 0...WEAPON_ID.size
  52.               # 如果战斗者的武器 ID 等于 WEAPON_ID[i]
  53.               if @active_battler.weapon_id == WEAPON_ID[i]
  54.                 # 获取与 WEAPON_ID 相对应的特技ID SKILL_ID
  55.                 skill = $data_skills[SKILL_ID[i]]
  56.                 # 帮助窗口显示特技名
  57.                 @help_window.set_text("发动武器特效" , 1)
  58.                 # 获取特技动画
  59.                 @animation1_id = skill.animation1_id
  60.                 @animation2_id = skill.animation2_id
  61.                 # 获取公共事件
  62.                 @common_event_id = skill.common_event_id
  63.                 # 特技有效范围
  64.                 set_target_battlers(skill.scope)
  65.                 # 应用特技效果
  66.                 for target in @target_battlers
  67.                   target.skill_effect(@active_battler, skill)
  68.                 end
  69.               end
  70.             end
  71.             # 其他情况,全部为基本行动类
  72.           else
  73.             make_basic_action_result
  74.           end
  75.         else
  76.           make_basic_action_result
  77.         end
  78.       else
  79.         make_basic_action_result
  80.       end
  81. #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  82.     when 1  # 特技
  83.       make_skill_action_result
  84.     when 2  # 物品
  85.       make_item_action_result
  86.     end
  87.     # 移至步骤 3
  88.     if @phase4_step == 2
  89.       @phase4_step = 3
  90.     end
  91.   end
  92. end
  93. #==============================================================================
复制代码

点评

恩,是自己疏忽了,少了一句:如果攻击者的基本行动类型为攻击. 的条件分歧。  发表于 2013-8-20 18:28
谢谢,原来只是少了一句脚本啊  发表于 2013-8-20 18:22

评分

参与人数 2星屑 +135 收起 理由
弗雷德 + 105 认可答案
美丽晨露 + 30 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部