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

Project1

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

[已经过期] 攻击反弹脚本如何在效果发动后,状态解除.

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
帖子
969
跳转到指定楼层
1
发表于 2011-6-7 15:36:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的CP制战斗,如果敌人速度是我方的几倍....那么反弹效果就反弹多次....如何在反弹生效后,对应角色(/敌人)的反弹状态解除.
  1. # ▼▲▼ xrxs27a. 特殊効果 SuperEX「魔法反射」 ver.1.03 ▼▲▼
  2. # by 桜雅 在土, clum-sea

  3. #==============================================================================
  4. # □ カスタマイズポイント
  5. #==============================================================================
  6. class Scene_Battle
  7.   SKILL_REFREX_STATE_NAME         = "常置阵"   # 「魔法反射」状态名
  8.   SKILL_REFREX_ANIMATION_ID       =         #  魔法反射の动画ID
  9.   REFREX_PENETRATION_SKILL_ELEMENT_NAME = "常置阵"   # 「反射貫通」属性名
  10. end
  11. class Scene_Battle
  12.   #--------------------------------------------------------------------------
  13.   # ○ スキルが魔法であるかどうか
  14.   #--------------------------------------------------------------------------
  15.   def skill1_is_a_magic?(skill)
  16.     return false unless skill.is_a?(RPG::Skill)
  17.     return (skill.int_f > skill.str_f)
  18.   end
  19. end

  20. #=============================================================================
  21. # ◇ 「魔法反射」ステート by 桜雅 在土
  22. #=============================================================================
  23. class Scene_Battle
  24.   #--------------------------------------------------------------------------
  25.   # ● スキルまたはアイテムの対象側バトラー設定
  26.   #--------------------------------------------------------------------------
  27.   alias xrxs_skill_refrex_set_target_battlers set_target_battlers
  28.   def set_target_battlers(scope)
  29.     xrxs_skill_refrex_set_target_battlers(scope)
  30.     # 技能使用時
  31.     if @active_battler.current_action.kind == 1
  32.       # 如果是魔法場合
  33.       unless skill1_is_a_magic?(@skill)
  34.         element_id = get_refrex_skill_penetration_id
  35.         # 技能反射貫通が付加されているか。
  36.         skill_state_penetration_skill(@skill, element_id, @active_battler)
  37.         if @active_battler.penetration != true
  38.           # 検索
  39.           for target in @target_battlers.dup
  40.             # 魔法反射ステートにかかっているか?
  41.             state_id = get_skillal_refrex_id
  42.             if state_id != nil and target.state?(state_id)
  43.               # 反射---
  44.               target.refrexed = true
  45.               @target_battlers.delete(target)
  46.               unless @target_battlers.include?(@active_battler)
  47.                 @target_battlers.push(@active_battler)
  48.                 ##############反射后状态解除############
  49.                 #
  50.                 #
  51.                 ########################################
  52.               end
  53.               # ---反射の設定完了
  54.             end
  55.           end
  56.         end
  57.       end
  58.     end
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● スキルに反射貫通属性が付加されているか
  62.   #--------------------------------------------------------------------------
  63.   def skill_state_penetration_skill(skill, element_id, user)
  64.     if skill.element_set.include?(element_id)
  65.       # 反射フラグリセット
  66.       user.refrexed = false
  67.       # 貫通フラグをセット
  68.       user.penetration = true
  69.     end
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  73.   #--------------------------------------------------------------------------
  74.   alias xrxs_skill_refrex_update_phase4_step4 update_phase4_step4
  75.   def update_phase4_step4
  76.     # 対象側アニメーション
  77.     xrxs_skill_refrex_update_phase4_step4
  78.     # 魔法反射(貫通しない場合)
  79.     for target in $game_party.actors + $game_troop.enemies - @target_battlers
  80.       next if target.refrexed == nil or target.refrexed == false
  81.       target.animation_id = SKILL_REFREX_ANIMATION_ID
  82.       target.animation_hit = (target.damage != "Miss")
  83.       # 反射フラグリセット
  84.       target.refrexed = false
  85.     end
  86.     for target in @target_battlers
  87.       # 反射フラグリセット
  88.       target.refrexed = false
  89.     end
  90.     # 貫通フラグリセット
  91.     @active_battler.penetration = false
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ○ 魔法反射ステートのID取得
  95.   #--------------------------------------------------------------------------
  96.   def get_skillal_refrex_id
  97.     if @xrxs27a_skill_refrex_state_id == nil
  98.       result = nil
  99.       for i in 1 ... $data_states.size
  100.         if $data_states[i].name[/\A#{SKILL_REFREX_STATE_NAME}\Z/]
  101.           result = $data_states[i].id
  102.           break
  103.         end
  104.       end
  105.       @xrxs27a_skill_refrex_state_id = result
  106.     end
  107.     return @xrxs27a_skill_refrex_state_id
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ○ 反射貫通属性のID取得
  111.   #--------------------------------------------------------------------------
  112.   def get_refrex_skill_penetration_id
  113.     if @xrxs27a_refrex_penetration_element_id == nil
  114.       result = nil
  115.       for i in 1 ... $data_system.elements.size
  116.         if $data_system.elements[i] == REFREX_PENETRATION_SKILL_ELEMENT_NAME
  117.           result = i
  118.           break
  119.         end
  120.       end
  121.       @xrxs27a_refrex_penetration_element_id = result
  122.     end
  123.     return @xrxs27a_refrex_penetration_element_id
  124.   end
  125. end
  126. #==============================================================================
  127. # ■ Game_Battler
  128. #==============================================================================
  129. class Game_Battler
  130.   attr_accessor :refrexed
  131.   attr_accessor :penetration
  132. end
复制代码

Lv1.梦旅人

梦石
0
星屑
50
在线时间
63 小时
注册时间
2008-11-20
帖子
45
2
发表于 2011-6-8 00:49:31 | 只看该作者
本帖最后由 希望化身 于 2011-6-8 01:33 编辑
  1. # ▼▲▼ xrxs27a. 特殊効果 SuperEX「魔法反射」 ver.1.03 ▼▲▼
  2. # by 桜雅 在土, clum-sea

  3. #==============================================================================
  4. # □ カスタマイズポイント
  5. #==============================================================================
  6. class Scene_Battle
  7.   SKILL_REFREX_STATE_NAME         = "常置阵"   # 「魔法反射」状态名
  8.   SKILL_REFREX_ANIMATION_ID       =         #  魔法反射の动画ID
  9.   REFREX_PENETRATION_SKILL_ELEMENT_NAME = "常置阵"   # 「反射貫通」属性名
  10. end
  11. class Scene_Battle
  12.   #--------------------------------------------------------------------------
  13.   # ○ スキルが魔法であるかどうか
  14.   #--------------------------------------------------------------------------
  15.   def skill1_is_a_magic?(skill)
  16.     return false unless skill.is_a?(RPG::Skill)
  17.     return (skill.int_f > skill.str_f)
  18.   end
  19. end

  20. #=============================================================================
  21. # ◇ 「魔法反射」ステート by 桜雅 在土
  22. #=============================================================================
  23. class Scene_Battle
  24.   #--------------------------------------------------------------------------
  25.   # ● スキルまたはアイテムの対象側バトラー設定
  26.   #--------------------------------------------------------------------------
  27.   alias xrxs_skill_refrex_set_target_battlers set_target_battlers
  28.   def set_target_battlers(scope)
  29.     xrxs_skill_refrex_set_target_battlers(scope)
  30.     # 技能使用時
  31.     if @active_battler.current_action.kind == 1
  32.       # 如果是魔法場合
  33.       unless skill1_is_a_magic?(@skill)
  34.         element_id = get_refrex_skill_penetration_id
  35.         # 技能反射貫通が付加されているか。
  36.         skill_state_penetration_skill(@skill, element_id, @active_battler)
  37.         if @active_battler.penetration != true
  38.           # 検索
  39.           for target in @target_battlers.dup
  40.             # 魔法反射ステートにかかっているか?
  41.             state_id = get_skillal_refrex_id
  42.             if state_id != nil and target.state?(state_id)
  43.               # 反射---
  44.               target.refrexed = true
  45.               @target_battlers.delete(target)
  46.               unless @target_battlers.include?(@active_battler)
  47.                 @target_battlers.push(@active_battler)
  48.                 ##############反射后状态解除############
  49.                 target.remove_state(state_id)
  50.                
  51.                 ########################################
  52.               end
  53.               # ---反射の設定完了
  54.             end
  55.           end
  56.         end
  57.       end
  58.     end
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● スキルに反射貫通属性が付加されているか
  62.   #--------------------------------------------------------------------------
  63.   def skill_state_penetration_skill(skill, element_id, user)
  64.     if skill.element_set.include?(element_id)
  65.       # 反射フラグリセット
  66.       user.refrexed = false
  67.       # 貫通フラグをセット
  68.       user.penetration = true
  69.     end
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  73.   #--------------------------------------------------------------------------
  74.   alias xrxs_skill_refrex_update_phase4_step4 update_phase4_step4
  75.   def update_phase4_step4
  76.     # 対象側アニメーション
  77.     xrxs_skill_refrex_update_phase4_step4
  78.     # 魔法反射(貫通しない場合)
  79.     for target in $game_party.actors + $game_troop.enemies - @target_battlers
  80.       next if target.refrexed == nil or target.refrexed == false
  81.       target.animation_id = SKILL_REFREX_ANIMATION_ID
  82.       target.animation_hit = (target.damage != "Miss")
  83.       # 反射フラグリセット
  84.       target.refrexed = false
  85.     end
  86.     for target in @target_battlers
  87.       # 反射フラグリセット
  88.       target.refrexed = false
  89.     end
  90.     # 貫通フラグリセット
  91.     @active_battler.penetration = false
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ○ 魔法反射ステートのID取得
  95.   #--------------------------------------------------------------------------
  96.   def get_skillal_refrex_id
  97.     if @xrxs27a_skill_refrex_state_id == nil
  98.       result = nil
  99.       for i in 1 ... $data_states.size
  100.         if $data_states[i].name[/\A#{SKILL_REFREX_STATE_NAME}\Z/]
  101.           result = $data_states[i].id
  102.           break
  103.         end
  104.       end
  105.       @xrxs27a_skill_refrex_state_id = result
  106.     end
  107.     return @xrxs27a_skill_refrex_state_id
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ○ 反射貫通属性のID取得
  111.   #--------------------------------------------------------------------------
  112.   def get_refrex_skill_penetration_id
  113.     if @xrxs27a_refrex_penetration_element_id == nil
  114.       result = nil
  115.       for i in 1 ... $data_system.elements.size
  116.         if $data_system.elements[i] == REFREX_PENETRATION_SKILL_ELEMENT_NAME
  117.           result = i
  118.           break
  119.         end
  120.       end
  121.       @xrxs27a_refrex_penetration_element_id = result
  122.     end
  123.     return @xrxs27a_refrex_penetration_element_id
  124.   end
  125. end
  126. #==============================================================================
  127. # ■ Game_Battler
  128. #==============================================================================
  129. class Game_Battler
  130.   attr_accessor :refrexed
  131.   attr_accessor :penetration
  132. end
复制代码
这样应就行了……

点评

原来忘记设置上面的ID了..可以了.  发表于 2011-6-8 01:33
米有效果= =  发表于 2011-6-8 01:26
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-22 17:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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