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

Project1

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

[已经过期] Yanfly脚本 连续技 如何添加是否学习过该技能的条件

[复制链接]

Lv1.梦旅人

梦石
0
星屑
143
在线时间
82 小时
注册时间
2015-5-15
帖子
40
跳转到指定楼层
1
发表于 2018-4-18 12:15:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RT,默认的连续技脚本是不能够判断是否学习过该技能的,我想增加这个条件。
例如:玩家释放技能1,如果学习了技能2的话则会通过连续技释放技能2否则不释放。
我看到脚本里面写道可以通过在技能上增加备注的方法,额外增加条件
  1. <连续技条件>
  2.   内容
  3. 内容
  4. </连续技条件>
  5. 为高级用户准备的功能,将"内容"替换为代码,设定连续技触发的各种条件.
复制代码



我想通过这个方法来实现但是我不会脚本,不知道该如何在备注里面书写

通过搜索我看到脚本里面有这么一个方法
  1.   #--------------------------------------------------------------------------
  2.   # ● 判定技能是否已经学会
  3.   #--------------------------------------------------------------------------
  4.   def skill_learn?(skill)
  5.     skill.is_a?(RPG::Skill) && @skills.include?(skill.id)
  6.   end
复制代码
但是我应该如何调用这个方法,如何传入参数?这个参数是一个对象还是技能ID还是什么?想问下我应该如何才能实现这个功能?

附YA 连续技脚本
  1. #==============================================================================
  2. #
  3. # ▼ Yanfly Engine Ace - 连续技 v1.01
  4. # -- 最后更新: 2012.02.12
  5. # -- 使用难度: 普通
  6. # -- 需要脚本: 无
  7. #
  8. #==============================================================================

  9. $imported = {} if $imported.nil?
  10. $imported["YEA-FollowUpSkill"] = true

  11. #==============================================================================
  12. # ▼ Updates
  13. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  14. # 2012.02.12 - Bug Fixed: Follow Up skills do not stack with multi-hits.
  15. # 2012.02.05 - Started Script and Finished.
  16. #
  17. #==============================================================================
  18. # ▼ 介绍
  19. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  20. # 当技能成功命中后可以触发另一个技能,做到连续技的效果.
  21. #
  22. #==============================================================================
  23. # ▼ 安装方式
  24. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  25. # 打开脚本编辑器,将本脚本拷贝/复制到一个在▼ 插件脚本之下▼ Main之上的新
  26. # 脚本页/槽中.记得保存你的工程以使脚本生效.
  27. #
  28. # -----------------------------------------------------------------------------
  29. # 技能备注 - 在数据库-技能中可以使用的备注.
  30. # -----------------------------------------------------------------------------
  31. # <连续技 x>
  32. # 该技能命中成功后,100%会触发x号技能.
  33. #
  34. # <连续技 x: y%>
  35. # 该技能命中成功后,y%会触发x号技能.
  36. #
  37. # <连续技需要状态: x>
  38. # 如果该技能有连续技,则连续技施放的条件为:角色身上有x号状态.
  39. #
  40. # <连续技需要全部状态: a, b...>
  41. # 如果该技能有连续技,则连续技施放的条件为:角色身上有a、b...号状态.
  42. # 缺少任何一个状态都不会触发连续技.
  43. #
  44. # <连续技需要任意状态: a, b...>
  45. # 如果该技能有连续技,则连续技施放的条件为:角色身上有a、b...号状态中的任意一个.
  46. #
  47. # <连续技需要开关: x>
  48. # 如果该技能有连续技,则连续技施放的条件为:x号开关为开启状态.
  49. #
  50. # <连续技需要全部开关: a, b...>
  51. # 如果该技能有连续技,则连续技施放的条件为:a、b...号开关全部为开启状态.
  52. # 任何一个开关为关闭状态都不会触发连续技.
  53. #
  54. # <连续技需要任意开关: a, b...>
  55. # 如果该技能有连续技,则连续技施放的条件为:a、b...号开关中的任意一个为开启状态.
  56. #
  57. # <连续技条件>
  58. #  内容
  59. #  内容
  60. # </连续技条件>
  61. # 为高级用户准备的功能,将"内容"替换为代码,设定连续技触发的各种条件.
  62. # 缺少任何一个条件都不会触发连续技.
  63. #
  64. #==============================================================================
  65. # ▼ 兼容性
  66. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  67. # 本脚本仅为RPG Maker VX Ace编写.极不可能在无任何修改的情况下运行于RPG Maker VX.
  68. #
  69. #==============================================================================
  70. # ▼ 编辑以下内容可能会出现电脑损坏、死机,电脑主人脑袋爆炸、昏迷、死亡或口臭
  71. # 所以编辑了后果自负。
  72. #==============================================================================

  73. module YEA
  74.   module REGEXP
  75.   module SKILL
  76.    
  77.     FOLLOWUP = /<(?:FOLLOW_UP|连续技)[ ](\d+)>/i
  78.     FOLLOWUP_CHANCE = /<(?:FOLLOW_UP|连续技)[ ](\d+):[ ](\d+)([%%])>/i
  79.     FOLLOWUP_STATES =
  80.       /<(?:FOLLOW_UP_STATE|连续技需要状态):[ ](\d+(?:\s*,\s*\d+)*)>/i
  81.     FOLLOWUP_ALL_STATES =
  82.       /<(?:FOLLOW_UP_ALL_STATES|连续技需要全部状态):[ ](\d+(?:\s*,\s*\d+)*)>/i
  83.     FOLLOWUP_ANY_STATES =
  84.       /<(?:FOLLOW_UP_ANY_STATES|连续技需要任意状态):[ ](\d+(?:\s*,\s*\d+)*)>/i
  85.     FOLLOWUP_SWITCH =
  86.       /<(?:FOLLOW_UP_SWITCH|连续技需要开关):[ ](\d+(?:\s*,\s*\d+)*)>/i
  87.     FOLLOWUP_ALL_SWITCH =
  88.       /<(?:FOLLOW_UP_ALL_SWITCH|连续技需要全部开关):[ ](\d+(?:\s*,\s*\d+)*)>/i
  89.     FOLLOWUP_ANY_SWITCH =
  90.       /<(?:FOLLOW_UP_ANY_SWITCH|连续技需要任意开关):[ ](\d+(?:\s*,\s*\d+)*)>/i
  91.     FOLLOWUP_EVAL_ON = /<(?:FOLLOW_UP_EVAL|连续技条件)>/i
  92.     FOLLOWUP_EVAL_OFF = /<\/(?:FOLLOW_UP_EVAL|连续技条件)>/i
  93.    
  94.   end # SKILL
  95.   end # REGEXP
  96. end # YEA

  97. #==============================================================================
  98. # ■ DataManager
  99. #==============================================================================

  100. module DataManager
  101.   
  102.   #--------------------------------------------------------------------------
  103.   # alias method: load_database
  104.   #--------------------------------------------------------------------------
  105.   class <<self; alias load_database_fus load_database; end
  106.   def self.load_database
  107.     load_database_fus
  108.     load_notetags_fus
  109.   end
  110.   
  111.   #--------------------------------------------------------------------------
  112.   # new method: load_notetags_fus
  113.   #--------------------------------------------------------------------------
  114.   def self.load_notetags_fus
  115.     for obj in $data_skills
  116.       next if obj.nil?
  117.       obj.load_notetags_fus
  118.     end
  119.   end
  120.   
  121. end # DataManager

  122. #==============================================================================
  123. # ■ RPG::BaseItem
  124. #==============================================================================

  125. class RPG::Skill < RPG::UsableItem
  126.   
  127.   #--------------------------------------------------------------------------
  128.   # public instance variables
  129.   #--------------------------------------------------------------------------
  130.   attr_accessor :follow_up
  131.   attr_accessor :follow_chance
  132.   attr_accessor :follow_states_all
  133.   attr_accessor :follow_states_any
  134.   attr_accessor :follow_switch_all
  135.   attr_accessor :follow_switch_any
  136.   attr_accessor :follow_eval
  137.   
  138.   #--------------------------------------------------------------------------
  139.   # common cache: load_notetags_fus
  140.   #--------------------------------------------------------------------------
  141.   def load_notetags_fus
  142.     @follow_up = 0
  143.     @follow_chance = 1.0
  144.     @follow_states_all = []
  145.     @follow_states_any = []
  146.     @follow_switch_all = []
  147.     @follow_switch_any = []
  148.     @follow_eval = ""
  149.     @follow_eval_on = false
  150.     #---
  151.     self.note.split(/[\r\n]+/).each { |line|
  152.       case line
  153.       #---
  154.       when YEA::REGEXP::SKILL::FOLLOWUP
  155.         @follow_up = $1.to_i
  156.         @follow_chance = 1.0
  157.       when YEA::REGEXP::SKILL::FOLLOWUP_CHANCE
  158.         @follow_up = $1.to_i
  159.         @follow_chance = $2.to_i * 0.01
  160.       #---
  161.       when YEA::REGEXP::SKILL::FOLLOWUP_STATES
  162.         $1.scan(/\d+/).each { |num|
  163.         @follow_states_all.push(num.to_i) if num.to_i > 0 }
  164.       when YEA::REGEXP::SKILL::FOLLOWUP_ALL_STATES
  165.         $1.scan(/\d+/).each { |num|
  166.         @follow_states_all.push(num.to_i) if num.to_i > 0 }
  167.       when YEA::REGEXP::SKILL::FOLLOWUP_ANY_STATES
  168.         $1.scan(/\d+/).each { |num|
  169.         @follow_states_any.push(num.to_i) if num.to_i > 0 }
  170.       #---
  171.       when YEA::REGEXP::SKILL::FOLLOWUP_SWITCH
  172.         $1.scan(/\d+/).each { |num|
  173.         @follow_switch_all.push(num.to_i) if num.to_i > 0 }
  174.       when YEA::REGEXP::SKILL::FOLLOWUP_ALL_SWITCH
  175.         $1.scan(/\d+/).each { |num|
  176.         @follow_switch_all.push(num.to_i) if num.to_i > 0 }
  177.       when YEA::REGEXP::SKILL::FOLLOWUP_ANY_SWITCH
  178.         $1.scan(/\d+/).each { |num|
  179.         @follow_switch_any.push(num.to_i) if num.to_i > 0 }
  180.       #---
  181.       when YEA::REGEXP::SKILL::FOLLOWUP_EVAL_ON
  182.         @follow_eval_on = true
  183.       when YEA::REGEXP::SKILL::FOLLOWUP_EVAL_OFF
  184.         @follow_eval_off = false
  185.       #---
  186.       else
  187.         @follow_eval += line.to_s if @follow_eval_on
  188.       end
  189.     } # self.note.split
  190.     #---
  191.   end
  192.   
  193. end # RPG::Skill

  194. #==============================================================================
  195. # ■ Game_Action
  196. #==============================================================================

  197. class Game_Action
  198.   
  199.   #--------------------------------------------------------------------------
  200.   # public instance variables
  201.   #--------------------------------------------------------------------------
  202.   attr_accessor :follow_up
  203.   
  204. end # Game_Action

  205. #==============================================================================
  206. # ■ Game_Battler
  207. #==============================================================================

  208. class Game_Battler < Game_BattlerBase
  209.   
  210.   #--------------------------------------------------------------------------
  211.   # alias method: item_user_effect
  212.   #--------------------------------------------------------------------------
  213.   alias game_battler_item_user_effect_fus item_user_effect
  214.   def item_user_effect(user, item)
  215.     game_battler_item_user_effect_fus(user, item)
  216.     user.process_follow_up_skill(item)
  217.   end
  218.   
  219.   #--------------------------------------------------------------------------
  220.   # new method: process_follow_up_skill
  221.   #--------------------------------------------------------------------------
  222.   def process_follow_up_skill(item)
  223.     return unless meet_follow_up_requirements?(item)
  224.     action = Game_Action.new(self)
  225.     action.set_skill(item.follow_up)
  226.     if current_action.nil?
  227.       action.decide_random_target
  228.     else
  229.       action.target_index = current_action.target_index
  230.     end
  231.     @actions.insert(1, action)
  232.     @actions[1].follow_up = true
  233.   end
  234.   
  235.   #--------------------------------------------------------------------------
  236.   # new method: meet_follow_up_requirements?
  237.   #--------------------------------------------------------------------------
  238.   def meet_follow_up_requirements?(item)
  239.     return false if item.nil?
  240.     return false unless item.is_a?(RPG::Skill)
  241.     return false if @actions[1] != nil && @actions[1].follow_up
  242.     return false if $data_skills[item.follow_up].nil?
  243.     return false unless follow_up_all_states?(item)
  244.     return false unless follow_up_any_states?(item)
  245.     return false unless follow_up_all_switch?(item)
  246.     return false unless follow_up_any_switch?(item)
  247.     return false unless follow_up_eval?(item)
  248.     return rand < item.follow_chance
  249.   end
  250.   
  251.   #--------------------------------------------------------------------------
  252.   # new method: follow_up_all_states?
  253.   #--------------------------------------------------------------------------
  254.   def follow_up_all_states?(item)
  255.     for state_id in item.follow_states_all
  256.       next if $data_states[state_id].nil?
  257.       return false unless state?(state_id)
  258.     end
  259.     return true
  260.   end
  261.   
  262.   #--------------------------------------------------------------------------
  263.   # new method: follow_up_any_states?
  264.   #--------------------------------------------------------------------------
  265.   def follow_up_any_states?(item)
  266.     return true if item.follow_states_any == []
  267.     for state_id in item.follow_states_any
  268.       next if $data_states[state_id].nil?
  269.       return true if state?(state_id)
  270.     end
  271.     return false
  272.   end
  273.   
  274.   #--------------------------------------------------------------------------
  275.   # new method: follow_up_all_switch?
  276.   #--------------------------------------------------------------------------
  277.   def follow_up_all_switch?(item)
  278.     for switch_id in item.follow_switch_all
  279.       return false unless $game_switches[switch_id]
  280.     end
  281.     return true
  282.   end
  283.   
  284.   #--------------------------------------------------------------------------
  285.   # new method: follow_up_any_switch?
  286.   #--------------------------------------------------------------------------
  287.   def follow_up_any_switch?(item)
  288.     return true if item.follow_switch_all == []
  289.     for switch_id in item.follow_switch_all
  290.       return true if $game_switches[switch_id]
  291.     end
  292.     return false
  293.   end
  294.   
  295.   #--------------------------------------------------------------------------
  296.   # new method: follow_up_eval?
  297.   #--------------------------------------------------------------------------
  298.   def follow_up_eval?(item)
  299.     return true if item.follow_eval == ""
  300.     return eval(item.follow_eval)
  301.   end
  302.   
  303. end # Game_Battler

  304. #==============================================================================
  305. #
  306. # ▼ End of File
  307. #
  308. #==============================================================================
复制代码




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

本版积分规则

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

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

GMT+8, 2024-11-17 10:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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