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

Project1

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

[已经解决] 如何设置出可以反弹敌人伤害的技能啊?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
465
在线时间
3 小时
注册时间
2011-9-15
帖子
3
跳转到指定楼层
1
发表于 2013-10-15 23:32:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 lonelydragon64 于 2013-10-17 00:09 编辑

各位大虾,小弟初学,头都想破了,如何能设置出反弹敌人伤害的技能啊~~~求教啊~在线等~

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

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

2
发表于 2013-10-15 23:40:55 | 只看该作者
本帖最后由 美丽晨露 于 2013-10-15 23:43 编辑

可以使用攻击和魔法反弹的脚本
然后设置技能和状态即可。
  1. # ▼▲▼ XRXS27. 特殊効果 SuperEX「魔法反射」 ver.1.03 ▼▲▼
  2. # by 桜雅 在土, clum-sea

  3. #==============================================================================
  4. # □ カスタマイズポイント
  5. #==============================================================================
  6. class Scene_Battle
  7.   SKILL_REFREX_STATE_NAME         = "攻击反弹"   # 「魔法反射」ステート名
  8.   SKILL_REFREX_STATE_NAME1         = "攻击反弹高级"   # 「魔法反射」ステート名
  9.   SKILL_REFREX_STATE_NAME2         = ""   # 「魔法反射」ステート名
  10.   SKILL_REFREX_STATE_NAME3         = ""   # 「魔法反射」ステート名
  11.   SKILL_REFREX_STATE_NAME4         = ""   # 「魔法反射」ステート名
  12.   SKILL_REFREX_ANIMATION_ID       =  303         #  魔法反射のアニメーションID
  13.   REFREX_PENETRATION_ELEMENT_SKILL_NAME = "攻击反弹"   # 「反射貫通」属性名
  14. end
  15. class Scene_Battle
  16.   #--------------------------------------------------------------------------
  17.   # ○ スキルが魔法であるかどうか
  18.   #--------------------------------------------------------------------------
  19.   def skill2_is_a_magic?(skill)
  20.     return false unless skill.is_a?(RPG::Skill)
  21.     return (skill.int_f > skill.str_f)
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ○ スキルが魔法であるかどうか
  25.   #--------------------------------------------------------------------------
  26.   def skill3_is_a_magic?(skill)
  27.     return false unless skill.is_a?(RPG::Skill)
  28.     return (skill.int_f > skill.atk_f)
  29.   end
  30. end
  31. #=============================================================================
  32. # ◇ 「魔法反射」ステート by 桜雅 在土
  33. #=============================================================================
  34. class Scene_Battle
  35.   #--------------------------------------------------------------------------
  36.   # ● スキルまたはアイテムの対象側バトラー設定
  37.   #--------------------------------------------------------------------------
  38.   alias xrxs_skill_refrex_set_target_battlers set_target_battlers
  39.   def set_target_battlers(scope)
  40.     xrxs_skill_refrex_set_target_battlers(scope)
  41.     # スキル使用時
  42.     if @active_battler.current_action.kind == 1
  43.       # 魔法である場合
  44.       unless skill2_is_a_magic?(@skill) or skill3_is_a_magic?(@skill)
  45.         element_id = get_refrex_skill_penetration_id
  46.         # スキルに反射貫通が付加されているか。
  47.         skill_state_penetration(@skill, element_id, @active_battler)
  48.         if @active_battler.penetration != true
  49.           # 検索
  50.           for target in @target_battlers.dup
  51.             # 魔法反射ステートにかかっているか?
  52.             state_id = get_skillal_refrex_id
  53.             state_id1 = get_skillal_refrex_id1
  54.             state_id2 = get_skillal_refrex_id2
  55.             state_id3 = get_skillal_refrex_id3
  56.             state_id4 = get_skillal_refrex_id4
  57.             if state_id != nil and target.state?(state_id)
  58.               # 反射---
  59.               target.refrexed = true
  60.               @target_battlers.delete(target)
  61.               unless @target_battlers.include?(@active_battler)
  62.                 @target_battlers.push(@active_battler)
  63.               end
  64.               # ---反射の設定完了
  65.             end
  66.             
  67.             
  68.             if state_id1 != nil and target.state?(state_id1)
  69.               # 反射---
  70.               target.refrexed = true
  71.               @target_battlers.delete(target)
  72.               unless @target_battlers.include?(@active_battler)
  73.                 @target_battlers.push(@active_battler)
  74.               end
  75.               # ---反射の設定完了
  76.             end
  77.             
  78.             
  79.             if state_id2 != nil and target.state?(state_id2)
  80.               # 反射---
  81.               target.refrexed = true
  82.               @target_battlers.delete(target)
  83.               unless @target_battlers.include?(@active_battler)
  84.                 @target_battlers.push(@active_battler)
  85.               end
  86.               # ---反射の設定完了
  87.             end
  88.             
  89.             
  90.             if state_id3 != nil and target.state?(state_id3)
  91.               # 反射---
  92.               target.refrexed = true
  93.               @target_battlers.delete(target)
  94.               unless @target_battlers.include?(@active_battler)
  95.                 @target_battlers.push(@active_battler)
  96.               end
  97.               # ---反射の設定完了
  98.             end
  99.             
  100.             
  101.             if state_id4 != nil and target.state?(state_id4)
  102.               # 反射---
  103.               target.refrexed = true
  104.               @target_battlers.delete(target)
  105.               unless @target_battlers.include?(@active_battler)
  106.                 @target_battlers.push(@active_battler)
  107.               end
  108.               # ---反射の設定完了
  109.             end
  110.             
  111.           end
  112.         end
  113.       end
  114.     end
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● スキルに反射貫通属性が付加されているか
  118.   #--------------------------------------------------------------------------
  119.   def skill_state_penetration(skill, element_id, user)
  120.     if skill.element_set.include?(element_id)
  121.       # 反射フラグリセット
  122.       user.refrexed = false
  123.       # 貫通フラグをセット
  124.       user.penetration = true
  125.     end
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  129.   #--------------------------------------------------------------------------
  130.   alias xrxs_skill_refrex_update_phase4_step4 update_phase4_step4
  131.   def update_phase4_step4
  132.     # 対象側アニメーション
  133.     xrxs_skill_refrex_update_phase4_step4
  134.     # 魔法反射(貫通しない場合)
  135.     for target in $game_party.actors + $game_troop.enemies - @target_battlers
  136.       next if target.refrexed == nil or target.refrexed == false
  137.       target.animation_id = SKILL_REFREX_ANIMATION_ID
  138.       target.animation_hit = (target.damage != "Miss")
  139.       # 反射フラグリセット
  140.       target.refrexed = false
  141.     end
  142.     for target in @target_battlers
  143.       # 反射フラグリセット
  144.       target.refrexed = false
  145.     end
  146.     # 貫通フラグリセット
  147.     @active_battler.penetration = false
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ○ 魔法反射ステートのID取得
  151.   #--------------------------------------------------------------------------
  152.   def get_skillal_refrex_id
  153.     if @xrxs27a_magic_refrex_state_id == nil
  154.       result = nil
  155.       for i in 1 ... $data_states.size
  156.         if $data_states[i].name[/\A#{SKILL_REFREX_STATE_NAME}\Z/]
  157.           result = $data_states[i].id
  158.           break
  159.         end
  160.       end
  161.       @xrxs27a_magic_refrex_state_id = result
  162.     end
  163.     return @xrxs27a_magic_refrex_state_id
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ○ 魔法反射ステートのID取得
  167.   #--------------------------------------------------------------------------
  168.   def get_skillal_refrex_id1
  169.     if @xrxs27a_magic_refrex_state_id1 == nil
  170.       result = nil
  171.       for i in 1 ... $data_states.size
  172.         if $data_states[i].name[/\A#{SKILL_REFREX_STATE_NAME1}\Z/]
  173.           result = $data_states[i].id
  174.           break
  175.         end
  176.       end
  177.       @xrxs27a_magic_refrex_state_id1 = result
  178.     end
  179.     return @xrxs27a_magic_refrex_state_id1
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ○ 魔法反射ステートのID取得
  183.   #--------------------------------------------------------------------------
  184.   def get_skillal_refrex_id2
  185.     if @xrxs27a_magic_refrex_state_id2 == nil
  186.       result = nil
  187.       for i in 1 ... $data_states.size
  188.         if $data_states[i].name[/\A#{SKILL_REFREX_STATE_NAME2}\Z/]
  189.           result = $data_states[i].id
  190.           break
  191.         end
  192.       end
  193.       @xrxs27a_magic_refrex_state_id2 = result
  194.     end
  195.     return @xrxs27a_magic_refrex_state_id2
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ○ 魔法反射ステートのID取得
  199.   #--------------------------------------------------------------------------
  200.   def get_skillal_refrex_id3
  201. if @xrxs27a_magic_refrex_state_id3 == nil
  202.       result = nil
  203.       for i in 1 ... $data_states.size
  204.         if $data_states[i].name[/\A#{SKILL_REFREX_STATE_NAME3}\Z/]
  205.           result = $data_states[i].id
  206.           break
  207.         end
  208.       end
  209.       @xrxs27a_magic_refrex_state_id3 = result
  210.     end
  211.     return @xrxs27a_magic_refrex_state_id3
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ○ 魔法反射ステートのID取得
  215.   #--------------------------------------------------------------------------
  216.   def get_skillal_refrex_id4
  217.     if @xrxs27a_magic_refrex_state_id4 == nil
  218.       result = nil
  219.       for i in 1 ... $data_states.size
  220.         if $data_states[i].name[/\A#{SKILL_REFREX_STATE_NAME4}\Z/]
  221.           result = $data_states[i].id
  222.           break
  223.         end
  224.       end
  225.       @xrxs27a_magic_refrex_state_id4 = result
  226.     end
  227.     return @xrxs27a_magic_refrex_state_id4
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ○ 反射貫通属性のID取得
  231.   #--------------------------------------------------------------------------
  232.   def get_refrex_skill_penetration_id
  233.     if @xrxs27a_refrex_penetration_element_id == nil
  234.       result = nil
  235.       for i in 1 ... $data_system.elements.size
  236.         if $data_system.elements[i] == REFREX_PENETRATION_ELEMENT_SKILL_NAME
  237.           result = i
  238.           break
  239.         end
  240.       end
  241.       @xrxs27a_refrex_penetration_element_id = result
  242.     end
  243.     return @xrxs27a_refrex_penetration_element_id
  244.   end
  245. end
  246. #==============================================================================
  247. # ■ Game_Battler
  248. #==============================================================================
  249. class Game_Battler
  250.   attr_accessor :refrexed
  251.   attr_accessor :penetration
  252. end
复制代码
  1. # ▼▲▼ XRXS27. 特殊効果 SuperEX「魔法反射」 ver.1.03 ▼▲▼
  2. # by 桜雅 在土, clum-sea

  3. #==============================================================================
  4. # □ カスタマイズポイント
  5. #==============================================================================
  6. class Scene_Battle
  7.   MAGIC_REFREX_STATE_NAME          = "魔法反弹"   # 「魔法反射」ステート名
  8.   MAGIC_REFREX_STATE_NAME1         = "魔法反弹高级"   # 「魔法反射」ステート名
  9.   MAGIC_REFREX_STATE_NAME2         = ""   # 「魔法反射」ステート名
  10.   MAGIC_REFREX_STATE_NAME3         = ""   # 「魔法反射」ステート名
  11.   MAGIC_REFREX_STATE_NAME4         = ""   # 「魔法反射」ステート名
  12.   MAGIC_REFREX_ANIMATION_ID        =  303          #  魔法反射のアニメーションID
  13.   REFREX_PENETRATION_ELEMENT_NAME  = "魔法反弹"   # 「反射貫通」属性名
  14. end
  15. class Scene_Battle
  16.   #--------------------------------------------------------------------------
  17.   # ○ スキルが魔法であるかどうか
  18.   #--------------------------------------------------------------------------
  19.   def skill_is_a_magic?(skill)
  20.     return false unless skill.is_a?(RPG::Skill)
  21.     return (skill.int_f > skill.str_f) if skill.power > 0
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ○ スキルが魔法であるかどうか
  25.   #--------------------------------------------------------------------------
  26.   def skill1_is_a_magic?(skill)
  27.     return false unless skill.is_a?(RPG::Skill)
  28.     return (skill.int_f > skill.atk_f) if skill.power > 0
  29.   end
  30. end
  31. #=============================================================================
  32. # ◇ 「魔法反射」ステート by 桜雅 在土
  33. #=============================================================================
  34. class Scene_Battle
  35.   #--------------------------------------------------------------------------
  36.   # ● スキルまたはアイテムの対象側バトラー設定
  37.   #--------------------------------------------------------------------------
  38.   alias xrxs_magic_refrex_set_target_battlers set_target_battlers
  39.   def set_target_battlers(scope)
  40.     xrxs_magic_refrex_set_target_battlers(scope)
  41.     # スキル使用時
  42.     if @active_battler.current_action.kind == 1
  43.       # 魔法である場合
  44.       if skill_is_a_magic?(@skill) or skill1_is_a_magic?(@skill)
  45.         element_id = get_refrex_penetration_id
  46.         # スキルに反射貫通が付加されているか。
  47.         skill_state_penetration(@skill, element_id, @active_battler)
  48.         if @active_battler.penetration != true
  49.           # 検索
  50.           for target in @target_battlers.dup
  51.             # 魔法反射ステートにかかっているか?
  52.             state_id = get_magical_refrex_id
  53.             state_id1 = get_magical_refrex_id1
  54.             state_id2 = get_magical_refrex_id2
  55.             state_id3 = get_magical_refrex_id3
  56.             state_id4 = get_magical_refrex_id4
  57.             if state_id != nil and target.state?(state_id)
  58.               # 反射---
  59.               target.refrexed = true
  60.               @target_battlers.delete(target)
  61.               unless @target_battlers.include?(@active_battler)
  62.                 @target_battlers.push(@active_battler)
  63.               end
  64.               # ---反射の設定完了
  65.             end
  66.             
  67.             
  68.             if state_id1 != nil and target.state?(state_id1)
  69.               # 反射---
  70.               target.refrexed = true
  71.               @target_battlers.delete(target)
  72.               unless @target_battlers.include?(@active_battler)
  73.                 @target_battlers.push(@active_battler)
  74.               end
  75.               # ---反射の設定完了
  76.             end
  77.             
  78.             
  79.             if state_id2 != nil and target.state?(state_id2)
  80.               # 反射---
  81.               target.refrexed = true
  82.               @target_battlers.delete(target)
  83.               unless @target_battlers.include?(@active_battler)
  84.                 @target_battlers.push(@active_battler)
  85.               end
  86.               # ---反射の設定完了
  87.             end
  88.             
  89.             
  90.             if state_id3 != nil and target.state?(state_id3)
  91.               # 反射---
  92.               target.refrexed = true
  93.               @target_battlers.delete(target)
  94.               unless @target_battlers.include?(@active_battler)
  95.                 @target_battlers.push(@active_battler)
  96.               end
  97.               # ---反射の設定完了
  98.             end
  99.             
  100.             
  101.             if state_id4 != nil and target.state?(state_id4)
  102.               # 反射---
  103.               target.refrexed = true
  104.               @target_battlers.delete(target)
  105.               unless @target_battlers.include?(@active_battler)
  106.                 @target_battlers.push(@active_battler)
  107.               end
  108.               # ---反射の設定完了
  109.             end
  110.             
  111.           end
  112.         end
  113.       end
  114.     end
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● スキルに反射貫通属性が付加されているか
  118.   #--------------------------------------------------------------------------
  119.   def skill_state_penetration(skill, element_id, user)
  120.     if skill.element_set.include?(element_id)
  121.       # 反射フラグリセット
  122.       user.refrexed = false
  123.       # 貫通フラグをセット
  124.       user.penetration = true
  125.     end
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  129.   #--------------------------------------------------------------------------
  130.   alias xrxs_magic_refrex_update_phase4_step4 update_phase4_step4
  131.   def update_phase4_step4
  132.     # 対象側アニメーション
  133.     xrxs_magic_refrex_update_phase4_step4
  134.     # 魔法反射(貫通しない場合)
  135.     for target in $game_party.actors + $game_troop.enemies - @target_battlers
  136.       next if target.refrexed == nil or target.refrexed == false
  137.       target.animation_id = MAGIC_REFREX_ANIMATION_ID
  138.       target.animation_hit = (target.damage != "Miss")
  139.       # 反射フラグリセット
  140.       target.refrexed = false
  141.     end
  142.     for target in @target_battlers
  143.       # 反射フラグリセット
  144.       target.refrexed = false
  145.     end
  146.     # 貫通フラグリセット
  147.     @active_battler.penetration = false
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ○ 魔法反射ステートのID取得
  151.   #--------------------------------------------------------------------------
  152.   def get_magical_refrex_id
  153.     if @xrxs27_magic_refrex_state_id == nil
  154.       result = nil
  155.       for i in 1 ... $data_states.size
  156.         if $data_states[i].name[/\A#{MAGIC_REFREX_STATE_NAME}\Z/]
  157.           result = $data_states[i].id
  158.           break
  159.         end
  160.       end
  161.       @xrxs27_magic_refrex_state_id = result
  162.     end
  163.     return @xrxs27_magic_refrex_state_id
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ○ 魔法反射ステートのID取得
  167.   #--------------------------------------------------------------------------
  168.   def get_magical_refrex_id1
  169.     if @xrxs27_magic_refrex_state_id1 == nil
  170.       result = nil
  171.       for i in 1 ... $data_states.size
  172.         if $data_states[i].name[/\A#{MAGIC_REFREX_STATE_NAME1}\Z/]
  173.           result = $data_states[i].id
  174.           break
  175.         end
  176.       end
  177.       @xrxs27_magic_refrex_state_id1 = result
  178.     end
  179.     return @xrxs27_magic_refrex_state_id1
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ○ 魔法反射ステートのID取得
  183.   #--------------------------------------------------------------------------
  184.   def get_magical_refrex_id2
  185.     if @xrxs27_magic_refrex_state_id2 == nil
  186.       result = nil
  187.       for i in 1 ... $data_states.size
  188.         if $data_states[i].name[/\A#{MAGIC_REFREX_STATE_NAME2}\Z/]
  189.           result = $data_states[i].id
  190.           break
  191.         end
  192.       end
  193.       @xrxs27_magic_refrex_state_id2 = result
  194.     end
  195.     return @xrxs27_magic_refrex_state_id2
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ○ 魔法反射ステートのID取得
  199.   #--------------------------------------------------------------------------
  200.   def get_magical_refrex_id3
  201. if @xrxs27_magic_refrex_state_id3 == nil
  202.       result = nil
  203.       for i in 1 ... $data_states.size
  204.         if $data_states[i].name[/\A#{MAGIC_REFREX_STATE_NAME3}\Z/]
  205.           result = $data_states[i].id
  206.           break
  207.         end
  208.       end
  209.       @xrxs27_magic_refrex_state_id3 = result
  210.     end
  211.     return @xrxs27_magic_refrex_state_id3
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ○ 魔法反射ステートのID取得
  215.   #--------------------------------------------------------------------------
  216.   def get_magical_refrex_id4
  217.     if @xrxs27_magic_refrex_state_id4 == nil
  218.       result = nil
  219.       for i in 1 ... $data_states.size
  220.         if $data_states[i].name[/\A#{MAGIC_REFREX_STATE_NAME4}\Z/]
  221.           result = $data_states[i].id
  222.           break
  223.         end
  224.       end
  225.       @xrxs27_magic_refrex_state_id4 = result
  226.     end
  227.     return @xrxs27_magic_refrex_state_id4
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ○ 反射貫通属性のID取得
  231.   #--------------------------------------------------------------------------
  232.   def get_refrex_penetration_id
  233.     if @xrxs27_refrex_penetration_element_id == nil
  234.       result = nil
  235.       for i in 1 ... $data_system.elements.size
  236.         if $data_system.elements[i] == REFREX_PENETRATION_ELEMENT_NAME
  237.           result = i
  238.           break
  239.         end
  240.       end
  241.       @xrxs27_refrex_penetration_element_id = result
  242.     end
  243.     return @xrxs27_refrex_penetration_element_id
  244.   end
  245. end
  246. #==============================================================================
  247. # ■ Game_Battler
  248. #==============================================================================
  249. class Game_Battler
  250.   attr_accessor :refrexed
  251.   attr_accessor :penetration
  252. end
复制代码
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
465
在线时间
3 小时
注册时间
2011-9-15
帖子
3
3
 楼主| 发表于 2013-10-17 00:07:27 | 只看该作者
美丽晨露 发表于 2013-10-15 23:40
可以使用攻击和魔法反弹的脚本
然后设置技能和状态即可。

哇哦~ 谢谢BOSS~~ 又有得学习了~~ 万分感谢啊·
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 17:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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