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

Project1

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

[已经过期] 请问有没有 战斗时 一次出两招的 方法

[复制链接]

Lv1.梦旅人

梦石
0
星屑
75
在线时间
139 小时
注册时间
2014-5-4
帖子
69
跳转到指定楼层
1
发表于 2015-12-18 21:49:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在战斗时 每次只能出一招 有没有什么方法 可以做到 主要MP 够 想出几招都行呢?
呵呵···

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1089 小时
注册时间
2014-5-9
帖子
504
2
发表于 2015-12-19 10:16:00 | 只看该作者
RUBY 代码复制
  1. #==============================================================================
  2. #
  3. # ▼ Yanfly Engine Ace - Active Chain Skills v1.01
  4. # -- Last Updated: 2011.12.22
  5. # -- Level: Hard
  6. # -- Requires: n/a
  7. #
  8. #==============================================================================
  9.  
  10. $imported = {} if $imported.nil?
  11. $imported["YEA-ActiveChainSkills"] = true
  12.  
  13. #==============================================================================
  14. # ▼ Updates
  15. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  16. # 2011.12.22 - Better updating speed for window.
  17. # 2011.12.18 - Started Script and Finished.
  18. #
  19. #==============================================================================
  20. # ▼ Introduction
  21. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  22. # 這腳本實現了主動連技的可能性,當帶有連技屬性的技能發動時,畫面左下方會出現
  23. # 可以連甚麼技的訊息列表,透過簡單QTE,能立刻發動下一招連技。理論上,只要有足夠
  24. # 的資源(MP, TP) 和連技屬性的設定,是可以無限連技的。
  25. #==============================================================================
  26. # ▼ Instructions
  27. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  28. # To install this script, open up your script editor and copy/paste this script
  29. # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
  30. #
  31. # -----------------------------------------------------------------------------
  32. # 以下是要放進[技能][註]的東東
  33. # -----------------------------------------------------------------------------
  34. # <chain skill L: x>
  35. # <chain skill R: x>
  36. # <chain skill X: x>
  37. # <chain skill Y: x>
  38. # <chain skill Z: x>
  39. # 這個是給予可連技屬性的東東,X 是技能的編號, 013,102 之類的。放了進去就是代表
  40. # 此技能能連去編號XXX 的技能。當沒有設定時,如只設定了Skill X,Y,Z ,L和R 是不
  41. # 會在連技訊息列表中出現。而不夠資源如MP,TP 時,連技訊息列表中該技能就會黑掉。
  42. # <chain only>
  43. # 這個東東是令該技能在正常技能表中不能選擇,只能透過連技去發動。
  44. #==============================================================================
  45. # ▼ Compatibility
  46. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  47. # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
  48. # it will run with RPG Maker VX without adjusting.
  49. #
  50. # While this script doesn't interfere with Input Combo Skills, it will most
  51. # likely be unable to used in conjunction with Input Combo Skills. I will not
  52. # provide support for any errors that may occur from this, nor will I be
  53. # responsible for any damage doing this may cause your game.
  54. #
  55. #==============================================================================
  56.  
  57. module YEA
  58.   module ACTIVE_CHAIN
  59.  
  60.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  61.     # - Chain Skill Settings -
  62.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  63.     # Adjust general settings here. These settings adjust the sound effect
  64.     # played when an active skill is selected and what the minimum time window
  65.     # is for an active chain skill.
  66.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  67.     # 下面是連技成功時的音效,可改。
  68.     ACTIVE_SKILL_SOUND = RPG::SE.new("Skill2", 80, 100)
  69.  
  70.     # 下面是設定連技訊息列表出現的時間長度,也就是QTE 的限時。
  71.     MINIMUM_TIME = 120
  72.  
  73.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  74.     # - Chain Skill Text -
  75.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  76.     # 這裡是設定連技訊息列表內容的地方,除了Title 外,都可用text codes.
  77.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  78.     CHAIN_TITLE  = "Active Chain Skills"
  79.     TITLE_SIZE   = 20
  80.     L_SKILL_ON   = "\eC[17]Q\eC[0]Chain: "
  81.     L_SKILL_OFF  = "\eC[7]QChain: "
  82.     L_SKILL_ACT  = "\eC[17]QChain: "
  83.     R_SKILL_ON   = "\eC[17]W\eC[0]Chain: "
  84.     R_SKILL_OFF  = "\eC[7]WChain: "
  85.     R_SKILL_ACT  = "\eC[17]WChain: "
  86.     X_SKILL_ON   = "\eC[17]A\eC[0]ttack: "
  87.     X_SKILL_OFF  = "\eC[7]Attack: "
  88.     X_SKILL_ACT  = "\eC[17]Attack: "
  89.     Y_SKILL_ON   = "\eC[17]S\eC[0]trike: "
  90.     Y_SKILL_OFF  = "\eC[7]Strike: "
  91.     Y_SKILL_ACT  = "\eC[17]Strike: "
  92.     Z_SKILL_ON   = "\eC[17]D\eC[0]efend: "
  93.     Z_SKILL_OFF  = "\eC[7]Defend: "
  94.     Z_SKILL_ACT  = "\eC[17]Defend: "
  95.  
  96.   end # ACTIVE_CHAIN
  97. end # YEA
  98.  
  99. #==============================================================================
  100. # ▼ Editting anything past this point may potentially result in causing
  101. # computer damage, incontinence, explosion of user's head, coma, death, and/or
  102. # halitosis so edit at your own risk.
  103. #==============================================================================
  104.  
  105. module YEA
  106.   module REGEXP
  107.   module SKILL
  108.  
  109.     CHAIN_ONLY  = /<(?:CHAIN_ONLY|chain only)>/i
  110.     CHAIN_SKILL = /<(?:CHAIN_SKILL|chain skill)[ ]([LRXYZ]):[ ](\d+)>/i
  111.  
  112.   end # SKILL
  113.   end # REGEXP
  114. end # YEA
  115.  
  116. #==============================================================================
  117. # ■ DataManager
  118. #==============================================================================
  119.  
  120. module DataManager
  121.  
  122.   #--------------------------------------------------------------------------
  123.   # alias method: load_database
  124.   #--------------------------------------------------------------------------
  125.   class <<self; alias load_database_acs load_database; end
  126.   def self.load_database
  127.     load_database_acs
  128.     load_notetags_acs
  129.   end
  130.  
  131.   #--------------------------------------------------------------------------
  132.   # new method: load_notetags_acs
  133.   #--------------------------------------------------------------------------
  134.   def self.load_notetags_acs
  135.     for skill in $data_skills
  136.       next if skill.nil?
  137.       skill.load_notetags_acs
  138.     end
  139.   end
  140.  
  141. end # DataManager
  142.  
  143. #==============================================================================
  144. # ■ RPG::Skill
  145. #==============================================================================
  146.  
  147. class RPG::Skill < RPG::UsableItem
  148.  
  149.   #--------------------------------------------------------------------------
  150.   # public instance variables
  151.   #--------------------------------------------------------------------------
  152.   attr_accessor :chain_only
  153.   attr_accessor :chain_skill
  154.  
  155.   #--------------------------------------------------------------------------
  156.   # common cache: load_notetags_acs
  157.   #--------------------------------------------------------------------------
  158.   def load_notetags_acs
  159.     @chain_only = false
  160.     @chain_skill = {}
  161.     #---
  162.     self.note.split(/[\r\n]+/).each { |line|
  163.       case line
  164.       #---
  165.       when YEA::REGEXP::SKILL::CHAIN_ONLY
  166.         @chain_only = true
  167.       when YEA::REGEXP::SKILL::CHAIN_SKILL
  168.         case $1.upcase
  169.         when "L"; @chain_skill[:L] = $2.to_i
  170.         when "R"; @chain_skill[:R] = $2.to_i
  171.         when "X"; @chain_skill[:X] = $2.to_i
  172.         when "Y"; @chain_skill[:Y] = $2.to_i
  173.         when "Z"; @chain_skill[:Z] = $2.to_i
  174.         else; next
  175.         end
  176.       #---
  177.       end
  178.     } # self.note.split
  179.     #---
  180.   end
  181.  
  182. end # RPG::UsableItem
  183.  
  184. #==============================================================================
  185. # ■ Game_Action
  186. #==============================================================================
  187.  
  188. class Game_Action
  189.  
  190.   #--------------------------------------------------------------------------
  191.   # new method: set_active_chain_skill
  192.   #--------------------------------------------------------------------------
  193.   def set_active_chain_skill(skill_id)
  194.     set_skill(skill_id)
  195.     @target_index = subject.current_action.target_index
  196.     @active_chain_skill = true
  197.   end
  198.  
  199.   #--------------------------------------------------------------------------
  200.   # alias method: valid?
  201.   #--------------------------------------------------------------------------
  202.   alias game_action_valid_acs valid?
  203.   def valid?
  204.     subject.enable_active_chain(true) if @active_chain_skill
  205.     result = game_action_valid_acs
  206.     subject.enable_active_chain(false) if @active_chain_skill
  207.     return result
  208.   end
  209.  
  210. end # Game_Action
  211.  
  212. #==============================================================================
  213. # ■ Game_BattlerBase
  214. #==============================================================================
  215.  
  216. class Game_BattlerBase
  217.  
  218.   #--------------------------------------------------------------------------
  219.   # alias method: skill_conditions_met?
  220.   #--------------------------------------------------------------------------
  221.   alias game_battlerbase_skill_conditions_met_acs skill_conditions_met?
  222.   def skill_conditions_met?(skill)
  223.     return false if chain_skill_restriction?(skill)
  224.     return game_battlerbase_skill_conditions_met_acs(skill)
  225.   end
  226.  
  227.   #--------------------------------------------------------------------------
  228.   # new method: chain_skill_restriction?
  229.   #--------------------------------------------------------------------------
  230.   def chain_skill_restriction?(skill)
  231.     return false unless actor?
  232.     return false unless $game_party.in_battle
  233.     return false unless skill.chain_only
  234.     return !@active_chain_enabled
  235.   end
  236.  
  237.   #--------------------------------------------------------------------------
  238.   # alias method: hp=
  239.   #--------------------------------------------------------------------------
  240.   alias game_battlerbase_hpequals_acs hp=
  241.   def hp=(value)
  242.     game_battlerbase_hpequals_acs(value)
  243.     return unless SceneManager.scene_is?(Scene_Battle)
  244.     return unless actor?
  245.     return if value == 0
  246.     SceneManager.scene.refresh_active_chain_skill_window(self)
  247.   end
  248.  
  249.   #--------------------------------------------------------------------------
  250.   # alias method: mp=
  251.   #--------------------------------------------------------------------------
  252.   alias game_battlerbase_mpequals_acs mp=
  253.   def mp=(value)
  254.     game_battlerbase_mpequals_acs(value)
  255.     return unless SceneManager.scene_is?(Scene_Battle)
  256.     return unless actor?
  257.     return if value == 0
  258.     SceneManager.scene.refresh_active_chain_skill_window(self)
  259.   end
  260.  
  261.   #--------------------------------------------------------------------------
  262.   # alias method: tp=
  263.   #--------------------------------------------------------------------------
  264.   alias game_battlerbase_tpequals_acs tp=
  265.   def tp=(value)
  266.     game_battlerbase_tpequals_acs(value)
  267.     return unless SceneManager.scene_is?(Scene_Battle)
  268.     return unless actor?
  269.     return if value == 0
  270.     SceneManager.scene.refresh_active_chain_skill_window(self)
  271.   end
  272.  
  273. end # Game_BattlerBase
  274.  
  275. #==============================================================================
  276. # ■ Game_Battler
  277. #==============================================================================
  278.  
  279. class Game_Battler < Game_BattlerBase
  280.  
  281.   #--------------------------------------------------------------------------
  282.   # alias method: on_battle_start
  283.   #--------------------------------------------------------------------------
  284.   alias game_battler_on_battle_start_acs on_battle_start
  285.   def on_battle_start
  286.     game_battler_on_battle_start_acs
  287.     @active_chain_enabled = false
  288.   end
  289.  
  290.   #--------------------------------------------------------------------------
  291.   # alias method: on_battle_end
  292.   #--------------------------------------------------------------------------
  293.   alias game_battler_on_battle_end_acs on_battle_end
  294.   def on_battle_end
  295.     game_battler_on_battle_end_acs
  296.     @active_chain_enabled = false
  297.   end
  298.  
  299.   #--------------------------------------------------------------------------
  300.   # new method: enable_active_chain
  301.   #--------------------------------------------------------------------------
  302.   def enable_active_chain(active)
  303.     return unless actor?
  304.     @active_chain_enabled = active
  305.   end
  306.  
  307.   #--------------------------------------------------------------------------
  308.   # new method: add_active_skill_chain
  309.   #--------------------------------------------------------------------------
  310.   def add_active_skill_chain(skill_id)
  311.     chain_skill = Game_Action.new(self)
  312.     chain_skill.set_active_chain_skill(skill_id)
  313.     @actions.insert(1, chain_skill)
  314.   end
  315.  
  316. end # Game_Battler
  317.  
  318. #==============================================================================
  319. # ■ Window_ChainSkillList
  320. #==============================================================================
  321.  
  322. class Window_ChainSkillList < Window_Base
  323.  
  324.   #--------------------------------------------------------------------------
  325.   # initialize
  326.   #--------------------------------------------------------------------------
  327.   def initialize
  328.     dw = [Graphics.width/2, 320].max
  329.     super(-standard_padding, 0, dw, fitting_height(6))
  330.     self.z = 200
  331.     self.opacity = 0
  332.     hide
  333.   end
  334.  
  335.   #--------------------------------------------------------------------------
  336.   # reveal
  337.   #--------------------------------------------------------------------------
  338.   def reveal(battler, skill)
  339.     @battler = battler
  340.     @skill = skill
  341.     @chain_skills = []
  342.     for key in skill.chain_skill
  343.       next if key[1].nil?
  344.       next if $data_skills[key[1]].nil?
  345.       next unless @battler.skills.include?($data_skills[key[1]])
  346.       @chain_skills.push($data_skills[key[1]])
  347.     end
  348.     return if @chain_skills == []
  349.     self.y = Graphics.height - fitting_height(4)
  350.     self.y -= fitting_height(@chain_skills.size + 1)
  351.     show
  352.     activate
  353.     @enabled = true
  354.     refresh
  355.   end
  356.  
  357.   #--------------------------------------------------------------------------
  358.   # button=
  359.   #--------------------------------------------------------------------------
  360.   def button=(button)
  361.     @button = button
  362.     @enabled = false
  363.     refresh unless @button.nil?
  364.   end
  365.  
  366.   #--------------------------------------------------------------------------
  367.   # refresh_check
  368.   #--------------------------------------------------------------------------
  369.   def refresh_check(battler)
  370.     return if @battler != battler
  371.     refresh
  372.   end
  373.  
  374.   #--------------------------------------------------------------------------
  375.   # refresh
  376.   #--------------------------------------------------------------------------
  377.   def refresh
  378.     @button = nil if @enabled
  379.     contents.clear
  380.     draw_background_colour
  381.     draw_horz_line(0)
  382.     draw_combo_title
  383.     draw_chain_skills
  384.   end
  385.  
  386.   #--------------------------------------------------------------------------
  387.   # draw_background_colour
  388.   #--------------------------------------------------------------------------
  389.   def draw_background_colour
  390.     dh = line_height * (@chain_skills.size + 1)
  391.     rect = Rect.new(0, 0, contents.width, dh)
  392.     back_colour1 = Color.new(0, 0, 0, 192)
  393.     back_colour2 = Color.new(0, 0, 0, 0)
  394.     contents.gradient_fill_rect(rect, back_colour1, back_colour2)
  395.   end
  396.  
  397.   #--------------------------------------------------------------------------
  398.   # draw_horz_line
  399.   #--------------------------------------------------------------------------
  400.   def draw_horz_line(dy)
  401.     line_y = dy + line_height - 2
  402.     line_colour = normal_color
  403.     line_colour.alpha = 48
  404.     contents.fill_rect(0, line_y, contents.width, 2, line_colour)
  405.   end
  406.  
  407.   #--------------------------------------------------------------------------
  408.   # draw_combo_title
  409.   #--------------------------------------------------------------------------
  410.   def draw_combo_title
  411.     reset_font_settings
  412.     text = YEA::ACTIVE_CHAIN::CHAIN_TITLE
  413.     contents.font.size = YEA::ACTIVE_CHAIN::TITLE_SIZE
  414.     contents.font.bold = true
  415.     contents.font.italic = true
  416.     draw_text(12, 0, contents.width - 12, line_height, text)
  417.     reset_font_settings
  418.   end
  419.  
  420.   #--------------------------------------------------------------------------
  421.   # draw_chain_skills
  422.   #--------------------------------------------------------------------------
  423.   def draw_chain_skills
  424.     button_array = [:L, :R, :X, :Y, :Z]
  425.     dx = 24
  426.     dy = line_height
  427.     for button in button_array
  428.       next if @skill.chain_skill[button].nil?
  429.       chain_skill = $data_skills[@skill.chain_skill[button]]
  430.       next unless @battler.skills.include?(chain_skill)
  431.       text = text_setting(button, chain_skill)
  432.       text += sprintf("\eI[%d]", chain_skill.icon_index)
  433.       text += chain_skill.name
  434.       draw_text_ex(dx, dy, text)
  435.       dy += line_height
  436.     end
  437.   end
  438.  
  439.   #--------------------------------------------------------------------------
  440.   # text_setting
  441.   #--------------------------------------------------------------------------
  442.   def text_setting(button, skill)
  443.     active = button == @button
  444.     text = ""
  445.     case button
  446.     when :L
  447.       if @enabled && @battler.usable?(skill)
  448.         text = YEA::ACTIVE_CHAIN::L_SKILL_ON
  449.       elsif !@enabled && active
  450.         text = YEA::ACTIVE_CHAIN::L_SKILL_ACT
  451.       else
  452.         text = YEA::ACTIVE_CHAIN::L_SKILL_OFF
  453.       end
  454.     when :R
  455.       if @enabled && @battler.usable?(skill)
  456.         text = YEA::ACTIVE_CHAIN::R_SKILL_ON
  457.       elsif !@enabled && active
  458.         text = YEA::ACTIVE_CHAIN::R_SKILL_ACT
  459.       else
  460.         text = YEA::ACTIVE_CHAIN::R_SKILL_OFF
  461.       end
  462.     when :X
  463.       if @enabled && @battler.usable?(skill)
  464.         text = YEA::ACTIVE_CHAIN::X_SKILL_ON
  465.       elsif !@enabled && active
  466.         text = YEA::ACTIVE_CHAIN::X_SKILL_ACT
  467.       else
  468.         text = YEA::ACTIVE_CHAIN::X_SKILL_OFF
  469.       end
  470.     when :Y
  471.       if @enabled && @battler.usable?(skill)
  472.         text = YEA::ACTIVE_CHAIN::Y_SKILL_ON
  473.       elsif !@enabled && active
  474.         text = YEA::ACTIVE_CHAIN::Y_SKILL_ACT
  475.       else
  476.         text = YEA::ACTIVE_CHAIN::Y_SKILL_OFF
  477.       end
  478.     when :Z
  479.       if @enabled && @battler.usable?(skill)
  480.         text = YEA::ACTIVE_CHAIN::Z_SKILL_ON
  481.       elsif !@enabled && active
  482.         text = YEA::ACTIVE_CHAIN::Z_SKILL_ACT
  483.       else
  484.         text = YEA::ACTIVE_CHAIN::Z_SKILL_OFF
  485.       end
  486.     end
  487.     return text
  488.   end
  489.  
  490. end # Window_ChainSkillList
  491.  
  492. #==============================================================================
  493. # ■ Scene_Battle
  494. #==============================================================================
  495.  
  496. class Scene_Battle < Scene_Base
  497.  
  498.   #--------------------------------------------------------------------------
  499.   # alias method: create_all_windows
  500.   #--------------------------------------------------------------------------
  501.   alias scene_battle_create_all_windows_acs create_all_windows
  502.   def create_all_windows
  503.     scene_battle_create_all_windows_acs
  504.     create_chain_skill_window
  505.   end
  506.  
  507.   #--------------------------------------------------------------------------
  508.   # new method: create_chain_skill_window
  509.   #--------------------------------------------------------------------------
  510.   def create_chain_skill_window
  511.     @active_chain_skill_window = Window_ChainSkillList.new
  512.     @active_chain_skill_counter = 0
  513.   end
  514.  
  515.   #--------------------------------------------------------------------------
  516.   # alias method: use_item
  517.   #--------------------------------------------------------------------------
  518.   alias scene_battle_use_item_acs use_item
  519.   def use_item
  520.     @subject.enable_active_chain(true)
  521.     item = @subject.current_action.item
  522.     chain_skill_list_appear(true, item)
  523.     start_active_skill_counter(item)
  524.     scene_battle_use_item_acs
  525.     wait_active_skill_counter
  526.     chain_skill_list_appear(false, item)
  527.     @subject.enable_active_chain(false)
  528.   end
  529.  
  530.   #--------------------------------------------------------------------------
  531.   # new method: chain_skill_list_appear
  532.   #--------------------------------------------------------------------------
  533.   def chain_skill_list_appear(visible, skill)
  534.     return if @subject.nil?
  535.     return unless @subject.actor?
  536.     return unless skill.is_a?(RPG::Skill)
  537.     @active_chain_skill = 0
  538.     @current_chain_skill = skill
  539.     @active_chain_skill_window.reveal(@subject, skill) if visible
  540.     @active_chain_skill_window.hide unless visible
  541.   end
  542.  
  543.   #--------------------------------------------------------------------------
  544.   # new method: refresh_active_chain_skill_window
  545.   #--------------------------------------------------------------------------
  546.   def refresh_active_chain_skill_window(battler)
  547.     return unless @active_chain_skill_window.visible
  548.     @active_chain_skill_window.refresh_check(battler)
  549.   end
  550.  
  551.   #--------------------------------------------------------------------------
  552.   # new method: start_active_skill_counter
  553.   #--------------------------------------------------------------------------
  554.   def start_active_skill_counter(skill)
  555.     return unless @active_chain_skill_window.visible
  556.     @active_chain_skill_counter = YEA::ACTIVE_CHAIN::MINIMUM_TIME
  557.   end
  558.  
  559.   #--------------------------------------------------------------------------
  560.   # new method: wait_active_skill_counter
  561.   #--------------------------------------------------------------------------
  562.   def wait_active_skill_counter
  563.     return unless @active_chain_skill_window.visible
  564.     wait(@active_chain_skill_counter)
  565.   end
  566.  
  567.   #--------------------------------------------------------------------------
  568.   # new method: update_active_chain_skill_counter
  569.   #--------------------------------------------------------------------------
  570.   def update_active_chain_skill_counter
  571.     return if @active_chain_skill_counter == 0
  572.     @active_chain_skill_counter -= 1
  573.   end
  574.  
  575.   #--------------------------------------------------------------------------
  576.   # alias method: update_basic
  577.   #--------------------------------------------------------------------------
  578.   alias scene_battle_update_basic_acs update_basic
  579.   def update_basic
  580.     scene_battle_update_basic_acs
  581.     update_active_chain_skill_counter
  582.     update_active_chain_skill_select
  583.   end
  584.  
  585.   #--------------------------------------------------------------------------
  586.   # new method: update_active_chain_skill_select
  587.   #--------------------------------------------------------------------------
  588.   def update_active_chain_skill_select
  589.     return unless @active_chain_skill_window.visible
  590.     return if @active_chain_skill > 0
  591.     if Input.press?(:L)
  592.       check_active_chain_skill(:L)
  593.     elsif Input.press?(:R)
  594.       check_active_chain_skill(:R)
  595.     elsif Input.press?(:X)
  596.       check_active_chain_skill(:X)
  597.     elsif Input.press?(:Y)
  598.       check_active_chain_skill(:Y)
  599.     elsif Input.press?(:Z)
  600.       check_active_chain_skill(:Z)
  601.     end
  602.   end
  603.  
  604.   #--------------------------------------------------------------------------
  605.   # new method: check_active_chain_skill
  606.   #--------------------------------------------------------------------------
  607.   def check_active_chain_skill(button)
  608.     skill_id = @current_chain_skill.chain_skill[button]
  609.     return if skill_id.nil?
  610.     return if $data_skills[skill_id].nil?
  611.     chain_skill = $data_skills[skill_id]
  612.     return unless @subject.usable?(chain_skill)
  613.     return unless @subject.skills.include?(chain_skill)
  614.     @active_chain_skill_counter = 12
  615.     @active_chain_skill = skill_id
  616.     @active_chain_skill_window.button = button
  617.     YEA::ACTIVE_CHAIN::ACTIVE_SKILL_SOUND.play
  618.     @subject.add_active_skill_chain(skill_id)
  619.   end
  620.  
  621. end # Scene_Battle
  622.  
  623. #==============================================================================
  624. #
  625. # ▼ End of File
  626. #
  627. #==============================================================================
已填坑作品:唤灵师1,唤灵师2-魔灵大陆,唤灵师3-莉娜丝的吊坠。破晓,傲歌。
填坑中作品:三国梦,罗亚大陆之雇佣兵团
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
75
在线时间
139 小时
注册时间
2014-5-4
帖子
69
3
 楼主| 发表于 2015-12-19 15:27:20 | 只看该作者
本帖最后由 invirgin 于 2015-12-19 15:28 编辑
15968715431 发表于 2015-12-19 10:16
#==============================================================================
#
# ▼ Yanfly Engin ...


感谢 你热心提供 的连击脚本 但是 这个脚本是“连击”用的 发招有顺序的 一招连着一招的 我想要实现的是只要MP够,一次可以选上好几招(没有顺序,选那个都行),按确定后,就一起释放了。请问还有其他办法么?谢谢了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
帖子
813

开拓者

4
发表于 2015-12-31 09:15:25 | 只看该作者
每个技能导入事件,让技能再发动行吗?

点评

感谢 您的回答 只是我是小白 能否解说一下 如何操作技能导入事件吗?不胜感谢  发表于 2015-12-31 19:07
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
帖子
813

开拓者

5
发表于 2015-12-31 19:30:31 | 只看该作者
本帖最后由 jianyulei 于 2015-12-31 19:33 编辑


在技能的右边空栏内双击


然后弹出的窗口选最后一页导入公共事件


再在公共事件里面写好命令,因为引擎自带的强制发动技能没有消耗,所以这里我用了T神的 额外战斗行动 脚本

http://taroxd.github.io/rgss/
这是T神的脚本库,里面找找吧,还需要吧一个基础脚本放在额外行动脚本上方才能运行。


以上是MP够就能不断发动某个技能直到MP耗尽的做法,如果你想要的效果是只要MP够就能不断行动,可以自行选择技能使用直到MP不足为止的话……也是可以做到的,而且也不难。

点评

感谢 大大的详尽的解释 我明白了 但第二招是通过extra-action()的参数来选择的,是预先设定好的,如何在游戏中,使玩家自己选择招数呢?  发表于 2016-1-1 15:26
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
帖子
813

开拓者

6
发表于 2016-1-2 12:33:28 | 只看该作者
你是想把MP作为行动力看,当自己行动时可以任意消耗MP,当MP不足时主动结束回合让下个人物开始行动吧?
需要下面2个脚本
‘’
RUBY 代码复制
  1. # coding: utf-8
  2. #===============================================================================
  3. # ■ [hzm]メモ欄拡張共通部分さん+ for RGSS3
  4. #-------------------------------------------------------------------------------
  5. # 2014/09/27 Ru/むっくRu
  6. #-------------------------------------------------------------------------------
  7. #  データベースのメモ欄の情報を読み取るための共通処理.
  8. #  メモ欄の各行に特定もフレーズがついたものだけを取得します.
  9. #
  10. #  鳥小屋.txtのメモ欄を使うスクリプト群を使う場合に必須になります.
  11. #  (※スクリプト名の頭に[hzm]が付いているスクリプト)
  12. #-------------------------------------------------------------------------------
  13. # 【注意】
  14. #  「[hzm]メモ欄拡張共通部分 for RGSS3」の機能を内包しています.
  15. #  このスクリプトを導入する場合は,
  16. #  [hzm]メモ欄拡張共通部分 for RGSS3は導入しないでください.
  17. #-------------------------------------------------------------------------------
  18. # 【旧バージョン([hzm]メモ欄拡張共通部分 for RGSS3)からの仕様変更点】
  19. #  ・メモ欄のヘッダ文字([hzm])の他にも複数指定することを可能に
  20. #    指定のメソッドを呼び出すことで,
  21. #    [hzm]以外のヘッダ文字をつけたものを認識させることを可能に.
  22. #    (僕が)派生スクリプトを作りやすくするのが目的.
  23. #
  24. #  ・同一項目の複数記述に正式対応
  25. #    [hzm]属性耐性:炎,50
  26. #    [hzm]属性耐性:水,100
  27. #    みたいに同じ項目を複数書いても使えるようになります.
  28. #    ※注意:別にこのスクリプトに属性耐性の機能があるわけではないです
  29. #
  30. #-------------------------------------------------------------------------------
  31. # 【更新履歴】
  32. # 2014/09/27 キャッシュが存在しない場合に再生成するように変更
  33. # 2012/06/04 バージョンチェック用メソッド名修正
  34. # 2012/06/04 [hzm]メモ欄拡張共通部分 for RGSS3から派生
  35. #-------------------------------------------------------------------------------
  36.  
  37. #===============================================================================
  38. # ↓ 以下、スクリプト部 ↓
  39. #===============================================================================
  40.  
  41. # 旧スクリプト導入時にエラー処理を行う
  42. raise "「[hzm]メモ欄拡張共通部分 for RGSS3」が導入されています.\n「[hzm]メモ欄拡張共通部分 for RGSS3」は既に不要なので,\n削除してください." if defined?(HZM_VXA::Note)
  43.  
  44. module HZM_VXA
  45.   module Note2
  46.     # ● デフォルトのマークフレーズ
  47.     #    (※変更しないでください)
  48.     DEFAULT_MARK = '[hzm]'
  49.     # ● 「[hzm]メモ欄拡張共通部分 for RGSS3」との互換性を保持するか?
  50.     USE_OLD_STYLE = true
  51.   end
  52. end
  53.  
  54. module HZM_VXA
  55.   module Note2
  56.     #---------------------------------------------------------------------------
  57.     # ● メモスクリプトのバージョン
  58.     #    .区切りの3つの数字で表現
  59.     #    1桁目:メジャーバージョン(仕様変更=互換性破たん時に変更)
  60.     #    2桁目:マイナーバージョン(機能追加時に変更)
  61.     #    3桁目:パッチバージョン(不具合修正時に変更)
  62.     #---------------------------------------------------------------------------
  63.     VERSION = '3.0.0'
  64.     #---------------------------------------------------------------------------
  65.     # ● バージョン比較処理
  66.     #---------------------------------------------------------------------------
  67.     def self.check_version?(version_str)
  68.       version     = version2array(VERSION)
  69.       req_version = version2array(version_str)
  70.       # メジャーバージョンが要求と一致するか?
  71.       return false unless version[0] == req_version[0]
  72.       # マイナーバージョンが要求より低くないか?
  73.       return false unless version[1] >= req_version[1]
  74.       true
  75.     end
  76.     #---------------------------------------------------------------------------
  77.     # ● バージョン文字列の分解
  78.     #---------------------------------------------------------------------------
  79.     def self.version2array(version_str)
  80.       version_str.split('.').map{|n| n.to_i}
  81.     end
  82.     #---------------------------------------------------------------------------
  83.     # ● ヘッダマーク配列
  84.     #---------------------------------------------------------------------------
  85.     @header_mark = []
  86.     #---------------------------------------------------------------------------
  87.     # ● ヘッダマークの取得
  88.     #---------------------------------------------------------------------------
  89.     def self.header_mark
  90.       @header_mark
  91.     end
  92.     #---------------------------------------------------------------------------
  93.     # ● ヘッダマークの追加
  94.     #---------------------------------------------------------------------------
  95.     def self.add_header_mark(mark_str)
  96.       @header_mark.push(mark_str) unless @header_mark.include?(mark_str)
  97.     end
  98.     #---------------------------------------------------------------------------
  99.     # ● メモ欄の内容を解析
  100.     #---------------------------------------------------------------------------
  101.     def self.setup
  102.       add_header_mark(DEFAULT_MARK)
  103.       list = [
  104.         $data_actors,
  105.         $data_classes,
  106.         $data_skills,
  107.         $data_items,
  108.         $data_weapons,
  109.         $data_armors,
  110.         $data_enemies,
  111.         $data_states,
  112.         $data_tilesets,
  113.       ]
  114.       list.each do |data|
  115.         data.each do |d|
  116.           d.hzm_vxa_note2_init if d
  117.         end
  118.       end
  119.     end
  120.     #---------------------------------------------------------------------------
  121.     # ■ メモ欄を持つクラスに追加するメソッド類
  122.     #---------------------------------------------------------------------------
  123.     module Utils
  124.       #-------------------------------------------------------------------------
  125.       # ● メモ欄のチェック
  126.       #-------------------------------------------------------------------------
  127.       def hzm_vxa_note2_init
  128.         hzm_vxa_note2_clear
  129.         self.note.split(/\r?\n/).each do |line|
  130.           HZM_VXA::Note2.header_mark.each do |mark|
  131.             next unless line.index(mark) == 0
  132.             l = line.sub!(mark, '')
  133.             if l =~ /^([^\:]+)\:(.+)$/
  134.               hzm_vxa_note2_add(mark, $1, $2)
  135.             else
  136.               hzm_vxa_note2_add(mark, l, '')
  137.             end
  138.           end
  139.         end
  140.       end
  141.       #-------------------------------------------------------------------------
  142.       # ● メモ欄情報の追加
  143.       #-------------------------------------------------------------------------
  144.       def hzm_vxa_note2_add(mark, key, str)
  145.         # 文字列として保存
  146.         @hzm_vxa_note2_str[mark][key] ||= []
  147.         @hzm_vxa_note2_str[mark][key].push(str.to_s)
  148.         # カンマ区切りのデータとして保存
  149.         @hzm_vxa_note2_data[mark][key] ||= []
  150.         data = str.split(/\s*\,\s*/).map do |d|
  151.           if d =~ /^\-?\d+$/
  152.             d.to_i
  153.           elsif d =~ /^\-?\d+\.\d+$/
  154.             d.to_f
  155.           else
  156.             d.to_s
  157.           end
  158.         end
  159.         @hzm_vxa_note2_data[mark][key].push(data)
  160.       end
  161.       #-------------------------------------------------------------------------
  162.       # ● メモ欄情報の削除
  163.       #-------------------------------------------------------------------------
  164.       def hzm_vxa_note2_clear
  165.         @hzm_vxa_note2_str = {}
  166.         @hzm_vxa_note2_data = {}
  167.         HZM_VXA::Note2.header_mark.each do |mark|
  168.           @hzm_vxa_note2_str[mark] = {}
  169.           @hzm_vxa_note2_data[mark] = {}
  170.         end
  171.       end
  172.       #-------------------------------------------------------------------------
  173.       # ● メモ内容取得
  174.       #-------------------------------------------------------------------------
  175.       def hzm_vxa_note2_match(mark, keys)
  176.         hzm_vxa_note2_matches(mark, keys).last
  177.       end
  178.       def hzm_vxa_note2_match_str(mark, keys)
  179.         hzm_vxa_note2_matches_str(mark, keys).last
  180.       end
  181.       def hzm_vxa_note2_matches(mark, keys)
  182.         mark ||= HZM_VXA::Note2::DEFAULT_MARK
  183.         ret = []
  184.         keys.each do |key|
  185.           ret += self.hzm_vxa_note2_data[mark][key] if self.hzm_vxa_note2_data[mark].include?(key)
  186.         end
  187.         ret
  188.       rescue => e
  189.         puts "#{$!} - #{$@}"
  190.       end
  191.       def hzm_vxa_note2_matches_str(mark, keys)
  192.         mark ||= HZM_VXA::Note2::DEFAULT_MARK
  193.         ret = []
  194.         keys.each do |key|
  195.           ret += self.hzm_vxa_note2_str[mark][key] if self.hzm_vxa_note2_str[mark].include?(key)
  196.         end
  197.         ret
  198.       end
  199.       def hzm_vxa_note2_data
  200.         hzm_vxa_note2_init unless @hzm_vxa_note2_data
  201.         @hzm_vxa_note2_data
  202.       end
  203.       def hzm_vxa_note2_str
  204.         hzm_vxa_note2_init unless @hzm_vxa_note2_str
  205.         @hzm_vxa_note2_str
  206.       end
  207.     end
  208.   end
  209. end
  210.  
  211. # メモ欄を持つクラスに機能追加
  212. class RPG::BaseItem
  213.   include HZM_VXA::Note2::Utils
  214. end
  215. class RPG::Tileset
  216.   include HZM_VXA::Note2::Utils
  217. end
  218.  
  219. # メモ解析
  220. if true
  221.   class << DataManager
  222.     alias hzm_vxa_note2_init init
  223.     def init
  224.       hzm_vxa_note2_init
  225.       HZM_VXA::Note2.setup
  226.     end
  227.   end
  228. end
  229.  
  230. # 旧スクリプトとの互換性保持
  231. if HZM_VXA::Note2::USE_OLD_STYLE
  232.   module HZM_VXA
  233.     module Note
  234.       #-------------------------------------------------------------------------
  235.       # ● メモスクリプトのバージョン
  236.       #-------------------------------------------------------------------------
  237.       VERSION = 2.20
  238.       #-------------------------------------------------------------------------
  239.       # ● バージョンチェック機構
  240.       #-------------------------------------------------------------------------
  241.       def self.check_version(n)
  242.         (n >= 2 and n < 3)
  243.       end
  244.     end
  245.   end
  246.   module HZM_VXA
  247.     module Note2
  248.       module Utils
  249.         #-----------------------------------------------------------------------
  250.         # ● メモ内容取得
  251.         #-----------------------------------------------------------------------
  252.         def hzm_vxa_note_match(keys)
  253.           hzm_vxa_note2_match(HZM_VXA::Note2::DEFAULT_MARK, keys)
  254.         end
  255.         def hzm_vxa_note(key)
  256.           hzm_vxa_note2_match(HZM_VXA::Note2::DEFAULT_MARK, [key])
  257.         end
  258.         #-----------------------------------------------------------------------
  259.         # ● メモ内容(単一文字列)取得
  260.         #-----------------------------------------------------------------------
  261.         def hzm_vxa_note_str_match(keys)
  262.           hzm_vxa_note2_match_str(HZM_VXA::Note2::DEFAULT_MARK, keys)
  263.         end
  264.         def hzm_vxa_note_str(key)
  265.           hzm_vxa_note2_match_str(HZM_VXA::Note2::DEFAULT_MARK, [key])
  266.         end
  267.       end
  268.     end
  269.   end
  270. end



# coding: utf-8
#===============================================================================
# ■ [hzm]ターン消費無しスキルさん+ for RGSS3
# ※ このスクリプトには「[hzm]メモ欄拡張共通部分さん+ for RGSS3」が必要です
#    「[hzm]メモ欄拡張共通部分 for RGSS3」では動作しません
#-------------------------------------------------------------------------------
# 2014/06/22 Ru/むっくRu
#-------------------------------------------------------------------------------
# 【機能1:ターン消費無しスキル/アイテム】
#  ターンを消費せずに,選択した瞬間に発動するスキルを設定します.
#  「データベース」の「スキル」の「メモ」欄に以下のように記述してください.
#
#  [hzm]ターン消費無し:n
#  または
#  [hzm]即発動:n
#  
#  n の部分は1以上の数値に置き換えてください(例:[hzm]ターン消費無し:1)
#  この数字の部分の回数だけ,1ターン中にこのスキルを使用することができます.
#  (:nの部分を省略した場合、:1と記述した場合と同じになります)
#
#  同様にアイテムにも設定を行うことができます.
#  「データベース」の「アイテム」の「メモ」欄に同様に記述してください.
#-------------------------------------------------------------------------------
# 【機能2:行動順序をスキルごとに反映】
#  デフォルトのシステムだと,例えば2回行動のキャラクターが
#  「通常攻撃(速度補正:0)」,「防御(速度補正:2000)」の
#  2つを選択した場合に,速度補正が低い側(通常攻撃)のほうに統一されてしまい,
#  防御がターンの最初に発動しません.
#
#  このスクリプトでは,ターンの順番をキャラクターごとではなく,
#  そのキャラクターの行動ごとに順番を設定することによって,
#  各行動ごとの速度補正を適用できるようにします.
#
#  例)
#  エリック
#    素早さ: 30 行動:通常攻撃(速度補正:0),防御(速度補正:2000)
#  スライム
#    素早さ:100 行動:通常攻撃(速度補正:0)
#
#  ・デフォルトのシステムの場合
#  スライム通常攻撃→エリック通常攻撃→エリック防御
#
#  ・このスクリプト導入後
#  エリック防御→スライム通常攻撃→エリック通常攻撃
#-------------------------------------------------------------------------------
# 【更新履歴】
# 2014/06/22 通常攻撃にも適用できるように
# 2014/06/07 次回行動アクター取得処理が正常に動いていないのを修正v2
# 2013/07/18 行動終了時に解除される行動制約ステートが解除されないのを修正
# 2013/03/17 エネミーの行動ターン数指定がおかしくなるのを修正。おまけ機能追加。
# 2013/02/16 ターン開始時に行動不能が解除された際にエラー落ちするのを修正
# 2013/01/11 コモンイベント呼び出しでアクターを離脱させるとエラー落ちしていたのを修正
# 2012/10/14 行動回数再計算ON時,エネミーが「逃げる」とエラー落ちしていたのを修正
# 2012/10/09 マップ上でアイテムを使用した際にエラー落ちしていたのを修正
# 2012/10/06 戦闘中にパーティ入れ替えを行った場合にエラー落ちしていたのを修正
#            ステータスウィンドウの更新が正常に行われていなかったのを修正
# 2012/10/05 大幅修正を行いました.
#            新メモスクリプト([hzm]メモ欄拡張共通部分さん+ for RGSS3)用に変更
#            行動回数の再計算機能(アクター/エネミー)を追加
#            1ターン内で使用できる回数の設定を追加
#            「各行動ごとに行動順を設定さん for RGSS3」の機能を内包
# 2012/10/03 行動回数の再計算(暫定)を追加
# 2012/06/01 エネミー用設定を追加
# 2012/04/21 複数回行動するアクターが正常に動作しない不具合を修正
# 2012/04/01 味方の行動不能状態を回復した際に強制終了する不具合を修正
# 2012/03/28 アイテムにも対応
# 2012/01/28 コモンイベント内で「戦闘行動の強制」を使用した際に強制終了するのを修正
# 2012/01/28 コモンイベントの呼び出しが正常に動作しないのを少し修正
# 2012/01/03 ぶっぱ
#-------------------------------------------------------------------------------

#===============================================================================
# ● 設定項目
#===============================================================================
module HZM_VXA
  module QuickSkill
    # ● ターン消費無し行動後に行動回数を再計算する(上級設定)
    #   [効果]
    #   ・エネミーも(疑似的に)ターン消費無しスキルを使用可能に
    #   ・行動回数を変化させるステートを即時反映
    #   [副作用]
    #   ・50%の確率で行動回数増加などの設定が使用不可に
    #     true  : する
    #     false : しない
    CHECK_ACTION_TIMES = false

    # ● オマケ機能:敵の行動パターンのターン数の仕様をVX化
    #    1ターン目(最初のターン)に指定の行動をさせたい場合、
    #    VX Aceでは行動パターンを0ターン目に設定する必要があります。
    #    この設定方法をVX同様の仕様に変更し、
    #    1ターン目の場合は1ターン目に設定できるようにします。
    #    (上級設定に関係なく使用できます)
    #    true  : VX仕様にする
    #    false : 変更しない
    ENEMY_TURN_NORMALIZE = false
  end
end

#===============================================================================
# ↑   ここまで設定   ↑
# ↓ 以下、スクリプト部 ↓
#===============================================================================

raise "「[hzm]メモ欄拡張共通部分さん+ for RGSS3」を導入してください" unless defined?(HZM_VXA::Note2)
raise "「[hzm]メモ欄拡張共通部分さん+ for RGSS3」のバージョンが一致しません" unless HZM_VXA::Note2.check_version?('3.0.0')

module HZM_VXA
  module QuickSkill
    # メモ欄から読み込む要素名の候補を設定
    QUICK_KEYS = ['ターン消費無し', '即発動',  'QuickSkill']
    #---------------------------------------------------------------------------
    # ● QuickSkill中か?
    #---------------------------------------------------------------------------
    def self.quickSkill?
      @quickSkill
    end
    #---------------------------------------------------------------------------
    # ● 即時行動開始
    #---------------------------------------------------------------------------
    def self.start
      @quickSkill = true
    end
    #---------------------------------------------------------------------------
    # ● 即時行動終了
    #---------------------------------------------------------------------------
    def self.finish
      @quickSkill = false
      # 全てのbattlerのアクションを戻す
      $game_party.hzm_vxa_quickSkill_force_action_reverse
      $game_troop.hzm_vxa_quickSkill_force_action_reverse
    end
    #---------------------------------------------------------------------------
    # ● スキル使用回数のリセット
    #---------------------------------------------------------------------------
    def self.reset_use_count
      $game_party.hzm_vxa_quickSkill_reset_use_count
      $game_troop.hzm_vxa_quickSkill_reset_use_count
    end
    # ターン消費無しアイテム管理対象
    ITEM_COUNT_PARTY = true
  end
end

module BattleManager
  #-----------------------------------------------------------------------------
  # ● 行動順序の作成(再定義)
  #-----------------------------------------------------------------------------
  def self.make_action_orders
    @action_battlers = []
    all_actions = []
    all_members = []
    all_members += $game_party.members unless @surprise
    all_members += $game_troop.members unless @preemptive
    all_members.each do |member|
      next unless member.movable?
      member.make_speed
      member.actions.each {|action| all_actions.push action }
    end
    all_actions.sort!{|a,b| b.speed - a.speed }
    all_actions.each {|action| @action_battlers.push action.subject}
  end
  #-----------------------------------------------------------------------------
  # ● 行動が未選択のアクターを先頭から探す(独自)
  #-----------------------------------------------------------------------------
  def self.hzm_vxa_quickSkill_can_action_actor_before(daemon)
    return false unless $game_party.members.index(daemon)
    for @actor_index in 0..$game_party.members.index(daemon)
      actor = $game_party.members[@actor_index]
      return true if actor.next_command
    end
    false
  end
end

class Game_Unit
  attr_accessor :hzm_vxa_quickSkill_can_use_item
  #-----------------------------------------------------------------------------
  # ● 戦闘開始処理(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_on_battle_start on_battle_start
  def on_battle_start
    hzm_vxa_quickSkill_on_battle_start
    hzm_vxa_quickSkill_reset_use_count
  end
  #-----------------------------------------------------------------------------
  # ● 戦闘行動の復元(独自)
  #-----------------------------------------------------------------------------
  def hzm_vxa_quickSkill_force_action_reverse
    members.each {|member| member.hzm_vxa_quickSkill_force_action_reverse }
  end
  #-----------------------------------------------------------------------------
  # ● スキル使用回数のリセット(独自)
  #-----------------------------------------------------------------------------
  def hzm_vxa_quickSkill_reset_use_count
    members.each {|member| member.hzm_vxa_quickSkill_reset_use_count }
    if HZM_VXA::QuickSkill::ITEM_COUNT_PARTY
      @hzm_vxa_quickSkill_can_use_item ||= []
      @hzm_vxa_quickSkill_can_use_item.clear
    end
  end
end

class Game_Battler < Game_BattlerBase
  #-----------------------------------------------------------------------------
  # ● 行動速度の決定(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_make_speed make_speed
  def make_speed
    # 空行動は削除する
    @actions.reject! {|a| a == nil}
    # 元の処理
    hzm_vxa_quickSkill_make_speed
    # アクションを速度順にソート
    @actions.sort! {|a,b| b.speed - a.speed }
  end
  #-----------------------------------------------------------------------------
  # ● スキルの使用可能条件チェック(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_skill_conditions_met? skill_conditions_met?
  def skill_conditions_met?(skill)
    # 元の処理
    return false unless hzm_vxa_quickSkill_skill_conditions_met?(skill)
    # 戦闘中でなければOK
    return true unless $game_party.in_battle
    # 指定回数チェック
    if data = skill.hzm_vxa_note_match(HZM_VXA::QuickSkill::QUICK_KEYS)
      cnt = data.first.to_i
      cnt = 1  unless cnt > 0
      hzm_vxa_quickSkill_reset_use_count unless @hzm_vxa_quickSkill_can_use_skill
      return false if cnt > 0 and @hzm_vxa_quickSkill_can_use_skill.count(skill.id) >= cnt
    end
    true
  end
  #-----------------------------------------------------------------------------
  # ● アイテムの使用可能条件チェック(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_item_conditions_met? item_conditions_met?
  def item_conditions_met?(item)
    # 元の処理
    return false unless hzm_vxa_quickSkill_item_conditions_met?(item)
    # 戦闘中でなければOK
    return true unless $game_party.in_battle
    # 指定回数チェック
    if data = item.hzm_vxa_note_match(HZM_VXA::QuickSkill::QUICK_KEYS)
      cnt = data.first.to_i
      cnt = 1  unless cnt > 0
      if HZM_VXA::QuickSkill::ITEM_COUNT_PARTY
        return false if cnt > 0 and $game_party.hzm_vxa_quickSkill_can_use_item.count(item.id) >= cnt
      else
        return false if cnt > 0 and @hzm_vxa_quickSkill_can_use_item.count(item.id) >= cnt
      end
    end
    true
  end
  #-----------------------------------------------------------------------------
  # ● スキル使用回数リセット(独自)
  #-----------------------------------------------------------------------------
  def hzm_vxa_quickSkill_reset_use_count
      @hzm_vxa_quickSkill_can_use_skill ||= []
      @hzm_vxa_quickSkill_can_use_skill.clear
      unless HZM_VXA::QuickSkill::ITEM_COUNT_PARTY
        @hzm_vxa_quickSkill_can_use_item ||= []
        @hzm_vxa_quickSkill_can_use_item.clear
      end
  end
  #-----------------------------------------------------------------------------
  # ● 戦闘行動の強制(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_force_action force_action
  def force_action(skill_id, target_index)
    @hzm_vxa_quickSkill_actions = HZM_VXA::QuickSkill.quickSkill? ? @actions.clone : nil
    hzm_vxa_quickSkill_force_action(skill_id, target_index)
  end
  #-----------------------------------------------------------------------------
  # ● 戦闘行動の復元(独自)
  #-----------------------------------------------------------------------------
  def hzm_vxa_quickSkill_force_action_reverse
    return unless @hzm_vxa_quickSkill_actions
    @actions = @hzm_vxa_quickSkill_actions
    @hzm_vxa_quickSkill_actions = nil
  end
  #-----------------------------------------------------------------------------
  # ● スキル/アイテムの使用(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_use_item use_item
  def use_item(item)
    # 戦闘中かどうか?
    if $game_party.in_battle
      # カウント可能か確認
      hzm_vxa_quickSkill_reset_use_count unless @hzm_vxa_quickSkill_can_use_skill
      # スキル/アイテム使用回数カウント
      @hzm_vxa_quickSkill_can_use_skill.push(item.id) if item.is_a?(RPG::Skill)
      if HZM_VXA::QuickSkill::ITEM_COUNT_PARTY
        $game_party.hzm_vxa_quickSkill_can_use_item.push(item.id)  if item.is_a?(RPG::Item)
      else
        @hzm_vxa_quickSkill_can_use_item.push(item.id)  if item.is_a?(RPG::Item)
      end
    end
    # 元の処理
    hzm_vxa_quickSkill_use_item(item)
  end
end

class Game_Actor < Game_Battler
  #-----------------------------------------------------------------------------
  # ● アクションを先頭に入れ替え(独自)
  #-----------------------------------------------------------------------------
  def hzm_vxa_quickSkill_swapAction
    tmp = @actions[0]
    @actions[0] = @actions[@action_input_index]
    @actions[@action_input_index] = tmp
  end
end

class Game_Action
  #-----------------------------------------------------------------------------
  # ● 行動速度の計算(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkillEnemy_speed speed
  def speed
    # ターン消費無し行動の行動速度を最速化
    item.speed = 999999 if item and item.hzm_vxa_note_match(HZM_VXA::QuickSkill::QUICK_KEYS)
    # 元の処理
    hzm_vxa_quickSkillEnemy_speed
  end
end

class Scene_Battle < Scene_Base
  #-----------------------------------------------------------------------------
  # ● 情報表示ビューポートの更新(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_update_info_viewport update_info_viewport
  def update_info_viewport
    # 元の処理
    hzm_vxa_quickSkill_update_info_viewport
    # ターン消費無し行動中は非表示に
    move_info_viewport(64)   if @hzm_vxa_quickSkill_active
  end
  #-----------------------------------------------------------------------------
  # ● 次のコマンド入力へ(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_next_command next_command
  def next_command
    # ターン消費無し行動が選択されているか確認・実行
    if @hzm_vxa_quickSkill_skill and
       @hzm_vxa_quickSkill_skill.hzm_vxa_note_match(HZM_VXA::QuickSkill::QUICK_KEYS)
      # ターン消費無し行動の実行
      hzm_vxa_quickSkill_run
      # 行動を再選択
      if BattleManager.hzm_vxa_quickSkill_can_action_actor_before(@subject) or
          @subject.inputable?
        @subject.prior_command
        return start_actor_command_selection
      end
    end
    # 元の処理
    hzm_vxa_quickSkill_next_command
  end
  #-----------------------------------------------------------------------------
  # ● コマンド[攻撃](エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_command_attack command_attack
  def command_attack
    @hzm_vxa_quickSkill_skill = $data_skills[BattleManager.actor.attack_skill_id]
    hzm_vxa_quickSkill_command_attack
  end
  #-----------------------------------------------------------------------------
  # ● スキル[決定](エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_on_skill_ok on_skill_ok
  def on_skill_ok
    @hzm_vxa_quickSkill_skill = @skill_window.item
    hzm_vxa_quickSkill_on_skill_ok
  end
  #-----------------------------------------------------------------------------
  # ● スキル[キャンセル](エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_on_skill_cancel on_skill_cancel
  def on_skill_cancel
    @hzm_vxa_quickSkill_skill = nil
    hzm_vxa_quickSkill_on_skill_cancel
  end
  #-----------------------------------------------------------------------------
  # ● アイテム[決定](エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_on_item_ok on_item_ok
  def on_item_ok
    @hzm_vxa_quickSkill_skill = @item_window.item
    hzm_vxa_quickSkill_on_item_ok
  end
  #-----------------------------------------------------------------------------
  # ● アイテム[キャンセル](エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_on_item_cancel on_item_cancel
  def on_item_cancel
    @hzm_vxa_quickSkill_skill = nil
    hzm_vxa_quickSkill_on_item_cancel
  end
  #-----------------------------------------------------------------------------
  # ● アクターコマンド選択の開始(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_start_actor_command_selection start_actor_command_selection
  def start_actor_command_selection
    hzm_vxa_quickSkill_start_actor_command_selection
    BattleManager.actor.make_actions unless BattleManager.actor.input
  end
  #--------------------------------------------------------------------------
  # ● 強制された戦闘行動の処理(エイリアス)
  #--------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_process_forced_action process_forced_action
  def process_forced_action
    @hzm_vxa_quickSkill_force_action = BattleManager.action_forced?

    # 元の処理
    hzm_vxa_quickSkill_process_forced_action

    @hzm_vxa_quickSkill_force_action = nil
  end
  #-----------------------------------------------------------------------------
  # ● 戦闘行動の処理(再定義)
  #-----------------------------------------------------------------------------
#~   def process_action
#~     return if scene_changing?

#~     # 強制行動の場合は次回アクターを計算しない
#~     unless @hzm_vxa_quickSkill_force_action
#~       if HZM_VXA::QuickSkill::CHECK_ACTION_TIMES
#~         HZM_VXA::QuickSkill.re_action_times if @hzm_vxa_quickSkill_re_action_times_flag
#~         @hzm_vxa_quickSkill_re_action_times_flag = false
#~       end

#~       BattleManager.make_action_orders
#~       @subject = BattleManager.next_subject
#~     end

#~     return turn_end unless @subject
#~     if @subject.current_action
#~       @subject.current_action.prepare
#~       if @subject.current_action.valid?
#~         @status_window.open
#~         execute_action
#~       end
#~       @subject.remove_current_action
#~     end
#~     process_action_end unless @subject.current_action
#~   end
  #-----------------------------------------------------------------------------
  # ● ターン終了(エイリアス)
  #-----------------------------------------------------------------------------
  alias hzm_vxa_quickSkill_turn_end turn_end
  def turn_end
    # 行動不能キャラの行動終了処理を実行
    # (※行動順序厳密化によりステート「行動終了時」が実行されないため)
    all_battle_members.each do |battler|
      next if battler.movable?
      @subject = battler
      process_action_end
    end
    @subject = nil
    # 元の処理
    hzm_vxa_quickSkill_turn_end
    # ターン中使用回数リセット
    HZM_VXA::QuickSkill.reset_use_count
  end
  #-----------------------------------------------------------------------------
  # ● ターン消費無し行動の実行(独自)
  #-----------------------------------------------------------------------------
  def hzm_vxa_quickSkill_run
    return unless @hzm_vxa_quickSkill_skill
    @hzm_vxa_quickSkill_skill = nil
    # 行動の開始
    HZM_VXA::QuickSkill::start
    @actor_command_window.close if @actor_command_window
    @hzm_vxa_quickSkill_active = true
    # 行動アクター,行動内容の設定
    @subject = BattleManager.actor
    @subject.hzm_vxa_quickSkill_swapAction # 選んだ行動を先頭に引きずり出す
    # 行動
    execute_action
    # イベント処理
    process_event
    # おわり
    @subject.hzm_vxa_quickSkill_swapAction # 元の位置に戻す
    HZM_VXA::QuickSkill::finish
    # ウィンドウを戻す
    refresh_status
    @hzm_vxa_quickSkill_active = false
    @actor_command_window.open if @actor_command_window
    @status_window.open if @status_window
    # 行動回数の再計算
    HZM_VXA::QuickSkill.re_action_times if HZM_VXA::QuickSkill::CHECK_ACTION_TIMES
  end
end

# 行動回数の再計算用 & エネミー行動ターン数正常化 共通処理
if HZM_VXA::QuickSkill::CHECK_ACTION_TIMES or HZM_VXA::QuickSkill::ENEMY_TURN_NORMALIZE
  class << BattleManager
    #---------------------------------------------------------------------------
    # ● ターン終了(エイリアス)
    #---------------------------------------------------------------------------
    alias hzm_vxa_quickSkill_turn_end turn_end
    def turn_end
      hzm_vxa_quickSkill_turn_end
      $game_troop.hzm_vxa_quickSkill_increase_turn2
    end
  end

  class Game_Troop < Game_Unit
    attr_reader :hzm_vxa_quickSkill_turn_count
    #---------------------------------------------------------------------------
    # ● クリア(エイリアス)
    #---------------------------------------------------------------------------
    alias hzm_vxa_quickSkill_clear clear
    def clear
      hzm_vxa_quickSkill_clear
      @hzm_vxa_quickSkill_turn_count = HZM_VXA::QuickSkill::ENEMY_TURN_NORMALIZE ? 1 : 0
    end
    #---------------------------------------------------------------------------
    # ● クリア(独自)
    #---------------------------------------------------------------------------
    def hzm_vxa_quickSkill_increase_turn2
      @hzm_vxa_quickSkill_turn_count += 1
    end
  end

  class Game_Enemy < Game_Battler
    #--------------------------------------------------------------------------
    # ● 行動条件合致判定[ターン数](再定義)
    #--------------------------------------------------------------------------
    def conditions_met_turns?(param1, param2)
      n = $game_troop.hzm_vxa_quickSkill_turn_count
      if param2 == 0
        n == param1
      else
        n > 0 && n >= param1 && n % param2 == param1 % param2
      end
    end
  end
end

# 行動回数の再計算用
if HZM_VXA::QuickSkill::CHECK_ACTION_TIMES
  module HZM_VXA
    module QuickSkill
      #-------------------------------------------------------------------------
      # ● 行動回数の再計算
      #-------------------------------------------------------------------------
      if CHECK_ACTION_TIMES
        def self.re_action_times
          $game_party.hzm_vxa_quickSkill_re_action_times
          $game_troop.hzm_vxa_quickSkill_re_action_times
        end
      end
    end
  end

  class Game_Unit
    #---------------------------------------------------------------------------
    # ● 行動回数の再計算(独自)
    #---------------------------------------------------------------------------
    def hzm_vxa_quickSkill_re_action_times
      members.each {|member| member.hzm_vxa_quickSkill_re_action_times }
    end
  end

  class Game_Actor < Game_Battler
    #---------------------------------------------------------------------------
    # ● 行動回数の再計算
    #---------------------------------------------------------------------------
    if HZM_VXA::QuickSkill::CHECK_ACTION_TIMES
      def hzm_vxa_quickSkill_re_action_times
        action_cnt = make_action_times
        @actions.push Game_Action.new(self) while @actions.size < action_cnt
        @actions.pop while @actions.size > action_cnt
      end
    end
  end
  
  class Game_Enemy < Game_Battler
    #---------------------------------------------------------------------------
    # ● 行動回数の再計算(独自)
    #---------------------------------------------------------------------------
    def hzm_vxa_quickSkill_re_action_times
      action_cnt = make_action_times
      make_actions if @actions.size < action_cnt
      @actions.pop while @actions.size > action_cnt
    end
  end
  
  class Scene_Battle < Scene_Base
    #---------------------------------------------------------------------------
    # ● スキル/アイテムの使用(エイリアス)
    #---------------------------------------------------------------------------
    alias hzm_vxa_quickSkill_use_item use_item
    def use_item
      # 元の処理
      hzm_vxa_quickSkill_use_item
      # 行動回数の再計算フラグ(エネミーの場合)
      item = (@subject.enemy? and @subject.current_action) ?
        @subject.current_action.item : nil
      @hzm_vxa_quickSkill_re_action_times_flag =
        (item and item.hzm_vxa_note_match(HZM_VXA::QuickSkill::QUICK_KEYS))
    end
  end
end

第一个是前置脚本,第二个脚本可以让技能不消耗回合发动,附带了个技能排序功能,不过这个功能你可以忽视。
在技能备注    [hzm]即発動:99   就能让技能不消耗回合发动出来,你再做个技能,名叫 跳过回合 对自己使用,附加一个没有任何意义的状态,当没有MP的时候用这个技能就到下一个人行动了。
如果你是想某技能的连击只有部分技能可以适用,那么你先建立一个单独的技能类型,把这些技能全放到这个技能类型里,可以造成连击的技能为自己附加1回合的状态,效果是获得技能类型,并失去其他技能类型,如果你不想让攻击和防御指令也能使用的话也可以添加进去。如果是道具不能使用那么需要用某个插件。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36402
在线时间
10791 小时
注册时间
2009-3-15
帖子
4813
7
发表于 2016-1-2 12:41:16 | 只看该作者
LZ其实是想一次行动中选多个技能..MP不夠就不能选才对啊..
然后按确定一次过发动所有技能这样..
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
75
在线时间
139 小时
注册时间
2014-5-4
帖子
69
8
 楼主| 发表于 2016-1-2 13:47:14 | 只看该作者
soulsaga 发表于 2016-1-2 12:41
LZ其实是想一次行动中选多个技能..MP不夠就不能选才对啊..
然后按确定一次过发动所有技能这样.. ...

是的 是的 就是这个意思 有什么 办法 吗?

点评

那要看有没大神帮你解決了..  发表于 2016-1-2 14:18
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 04:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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