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

Project1

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

[已经过期] 【ACE】魔法反射先是被攻击然后在反射的效果如何达成?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1985
在线时间
176 小时
注册时间
2022-6-24
帖子
176
跳转到指定楼层
1
发表于 2022-7-6 06:08:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 ACRI 于 2022-7-6 19:30 编辑

RUBY 代码复制
  1. #==============================================================================
  2. #                   「攻撃を受けてから反撃」(ACE) Ver.1.4
  3. #   製作者:奈々(なな)
  4. #   へぷたなすくろーる http://heptanas.mamagoto.com/
  5. #
  6. #   ◇使用規約
  7. #   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
  8. #   スクリプトの改変は自由に行って頂いて構いませんが
  9. #   その場合も元のスクリプトの作成者として名前を載せて下さい。
  10. #   また配布前に必ず、ブログにある利用規約を確認して下さい。
  11. #
  12. #------------------------------------------------------------------------------
  13. #   
  14. #   デフォルトの「反撃」は相手の攻撃を無効にして反撃しますが
  15. #   これを相手の攻撃を受けた上で行動可能なら反撃するように変更します。
  16. #   また、反撃にもアニメーションが表示されるようになります。
  17. #   
  18. #   技能和物品备注栏
  19. #   <反撃不可> <反撃可能>
  20. #   就是无法反击的技能和必定命中技能可以被物理反击。
  21. #   
  22. #   データベースのメモ欄に
  23. #   <反撃スキル n>
  24. #   放角色,职业,装备,敌人,装备里,效果是反击的时候用n里面写的ID的技能
  25. #   如果有好几个技能ID,会用最大的那个
  26. #   不论什么技能,随机,多次或者全体都是不行的,只会反击攻击你的敌人一次(用追加行动也没用)
  27. #   
  28. #   放技能里使用的,配合上面的
  29. #   <確定反撃>  如果你使用这个技能进行反击,即使你失去行动能力,反击也会被激活。
  30. #   <先行反撃>  如果你使用这个技能进行反击,你会先反击,然后被敌人攻击。
  31. #   <従来反撃>  使用该技能进行反击时,与以往规格一样,敌人的攻击无效。
  32. #   <固有文章>  显示技能使用信息而不是反击信息
  33. #   と記述して仕様を調整できます。
  34. #   
  35. #==============================================================================
  36.  
  37. #==============================================================================
  38. # ■ RPG::BaseItem
  39. #------------------------------------------------------------------------------
  40. #  アクター・装備・ステートなどを総括して扱うデータクラス。
  41. #==============================================================================
  42.  
  43. class RPG::BaseItem
  44.   #--------------------------------------------------------------------------
  45.   # ● 反撃スキルの指定
  46.   #--------------------------------------------------------------------------
  47.   def cnt_atk_skill_id
  48.     @note[/\<\s*反撃スキル\s*(\d+)\s*\>/]
  49.     return $1 ? $1.to_i : 0
  50.   end
  51. end
  52.  
  53. #==============================================================================
  54. # ■ Game_Battler
  55. #------------------------------------------------------------------------------
  56. #  スプライトや行動に関するメソッドを追加したバトラーのクラスです。このクラス
  57. # は Game_Actor クラスと Game_Enemy クラスのスーパークラスとして使用されます。
  58. #==============================================================================
  59.  
  60. class Game_Battler < Game_BattlerBase
  61.   #--------------------------------------------------------------------------
  62.   # ● スキル/アイテムの反撃率計算
  63.   #--------------------------------------------------------------------------
  64.   alias item_cnt_mod item_cnt
  65.   def item_cnt(user, item)
  66.     return 0 unless opposite?(user)         # 味方には反撃しない
  67.     return 0 if item.note.include?("<反撃不可>")
  68.     return cnt if item.note.include?("<反撃可能>")
  69.     return item_cnt_mod(user, item)
  70.   end
  71. end
  72.  
  73. #==============================================================================
  74. # ■ Game_Actor
  75. #------------------------------------------------------------------------------
  76. #  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
  77. # の内部で使用され、Game_Party クラス($game_party)からも参照されます。
  78. #==============================================================================
  79.  
  80. class Game_Actor < Game_Battler
  81.   #--------------------------------------------------------------------------
  82.   # ● 反撃のスキル ID を取得
  83.   #--------------------------------------------------------------------------
  84.   def cnt_atk_skill_id
  85.     list = []
  86.     self.states.each do |state|
  87.       next unless state
  88.       list.push(state.cnt_atk_skill_id)
  89.     end
  90.     self.equips.each do |equip|
  91.       next unless equip
  92.       list.push(equip.cnt_atk_skill_id)
  93.     end
  94.     list.push(self.actor.cnt_atk_skill_id)
  95.     list.push(self.class.cnt_atk_skill_id)
  96.     return list.sort.reverse[0] > 0 ? list.sort.reverse[0] : attack_skill_id
  97.   end
  98. end
  99.  
  100. #==============================================================================
  101. # ■ Game_Enemy
  102. #------------------------------------------------------------------------------
  103. #  敵キャラを扱うクラスです。このクラスは Game_Troop クラス($game_troop)の
  104. # 内部で使用されます。
  105. #==============================================================================
  106.  
  107. class Game_Enemy < Game_Battler
  108.   #--------------------------------------------------------------------------
  109.   # ● 反撃のスキル ID を取得
  110.   #--------------------------------------------------------------------------
  111.   def cnt_atk_skill_id
  112.     list = []
  113.     self.states.each do |state|
  114.       next unless state
  115.       list.push(state.cnt_atk_skill_id)
  116.     end
  117.     list.push(self.enemy.cnt_atk_skill_id)
  118.     return list.sort.reverse[0] > 0 ? list.sort.reverse[0] : attack_skill_id
  119.   end
  120. end
  121.  
  122. #==============================================================================
  123. # ■ Scene_Battle
  124. #------------------------------------------------------------------------------
  125. #  バトル画面の処理を行うクラスです。
  126. #==============================================================================
  127.  
  128. class Scene_Battle < Scene_Base
  129.   #--------------------------------------------------------------------------
  130.   # ● 反撃の発動
  131.   #--------------------------------------------------------------------------
  132.   def invoke_counter_attack(target, item)
  133.     attack_skill = $data_skills[target.cnt_atk_skill_id]
  134.  
  135.     #反撃前に攻撃を適用
  136.     if !attack_skill.note.include?("<先行反撃>") && !attack_skill.note.include?("<従来反撃>")
  137.       apply_item_effects(apply_substitute(target, item), item)
  138.     end
  139.  
  140.     if target.movable? || (target.alive? && attack_skill.note.include?("<確定反撃>"))
  141.       #反撃メッセージを表示
  142.       if attack_skill.note.include?("<固有文章>")
  143.         @log_window.display_use_item(target, attack_skill)
  144.       else
  145.         @log_window.display_counter(target, item)
  146.       end
  147.  
  148.       #反撃のアニメーションを追加
  149.       show_animation_counter(target, attack_skill.animation_id)
  150.  
  151.       #反撃
  152.       @subject.item_apply(target, attack_skill)
  153.       refresh_status
  154.       @log_window.display_action_results(@subject, attack_skill)
  155.     end
  156.  
  157.     #反撃後に攻撃を適用
  158.     if @subject.movable? && attack_skill.note.include?("<先行反撃>")
  159.       apply_item_effects(apply_substitute(target, item), item)
  160.     end   
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 反撃用アニメーションの表示
  164.   #--------------------------------------------------------------------------
  165.   def show_animation_counter(target, animation_id)
  166.     if animation_id < 0
  167.       if target.actor?
  168.         show_normal_animation([@subject], target.atk_animation_id1, false)
  169.         show_normal_animation([@subject], target.atk_animation_id2, true)
  170.       else
  171.         Sound.play_enemy_attack
  172.         abs_wait_short
  173.       end
  174.     else
  175.       show_normal_animation([@subject], animation_id)
  176.     end
  177.     @log_window.wait
  178.     wait_for_animation
  179.   end
  180. end

类似于这个脚本的,但是是魔法反射的版本,如果可能的话,我还想要知道如何让魔法反射按自身的属性来计算反射的伤害,而不是敌方的属性计算
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))

Lv3.寻梦者

梦石
0
星屑
1985
在线时间
176 小时
注册时间
2022-6-24
帖子
176
2
 楼主| 发表于 2022-7-7 01:53:48 | 只看该作者
啊,没人啊

点评

这种得大幅修改脚本的提问,,,没人答很正常,,,zzz  发表于 2022-7-7 06:11
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-3 05:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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