Project1

标题: 请教一个有关战斗QTE功能脚本的问题(已经附带了脚本) [打印本页]

作者: 智将Jesse    时间: 2023-10-29 11:19
标题: 请教一个有关战斗QTE功能脚本的问题(已经附带了脚本)
想请教一个问题
有关一个战斗QTE脚本
RUBY 代码复制下载
  1. #==============================================================================
  2. # ★ スペシャルアタック+特殊スキル
  3. # 作成・配布元:misty_rain(http://kilisamenosekai.web.fc2.com/)
  4. # ver:1.3 作成(2014/10/13)
  5. #
  6. # スペシャルアタックに指定されたスキルIDのスキルが使われた時、
  7. # 特殊な入力をさせ、その結果で威力を補正します
  8. #
  9. #   スペシャルアタック1:連打
  10. #     制限時間内に特定のボタンを連打し、その連打回数でダメージを補正します。
  11. #   スペシャルアタック2:ランダムコマンド入力
  12. #     制限時間内に指定されるボタンを入力し、その成否でダメージを補正します。
  13. #   スペシャルアタック3:ジャストヒット
  14. #     ゲージ中に1個ある☆の位置でボタン押下し、その成否でダメージを補正します。
  15. #   ☆からずれていても小当たりとして設定できます。
  16. #   ゲージは制限時間内なら何度も動きます。
  17. #   スペシャルアタック4:ジャストヒットN
  18. #     ゲージ中に複数ある☆の位置でボタン押下し、その成否回数でダメージを補正します。
  19. #   ☆にぴったり合っていないとカウントされません。
  20. #   ゲージは一度通り過ぎたら終わります。
  21. #   ☆の数より多く押下しても無効です(連射対策)。
  22. #
  23. # ver1.0:公開(2011/01/06)
  24. # ver1.1:ダメージへの反映を後から変更しやすく(2012/03/22)
  25. # ver1.2:バグ修正(2012/06/15)
  26. # ver1.3:メニューでヒールすると落ちるバグ修正(2014/10/15)
  27. #
  28. #==============================================================================
  29. # ■ MR_SPECIAL_ATTACK_CUSTOM
  30. #------------------------------------------------------------------------------
  31. #  自由にカスタマイズしてください
  32. #==============================================================================
  33. module MR_SPECIAL_ATTACK_CUSTOM
  34.   # 連打対象スキルID=>[制限時間(秒),最低レート,1打レート,最高レート]
  35.   RENDA_INFO = {
  36.     8=>[5,0,1,100]
  37.   }
  38.   # 連打するボタン
  39.   RENDA_BTN = :C
  40.   # 連打スキル制限時間表示のメッセージ1
  41.   RENDA_MSG_TIME1 = "连续按下决定键! 剩余 "
  42.   # 連打スキル制限時間表示のメッセージ2
  43.   RENDA_MSG_TIME2 = " 秒"
  44.   # 連打回数表示時のメッセージ1
  45.   RENDA_MSG_RET1 = ""
  46.   # 連打回数表示時のメッセージ2
  47.   RENDA_MSG_RET2 = "x"
  48.  
  49.   # ランダムコマンド入力対象
  50.   #   スキルID=>[制限時間(秒),失敗時レート,成功時レート,入力数]
  51.   RNDCMD_INFO = {
  52.     8=>[3,0,100,5]
  53.   }
  54.   # ランダムコマンド入力キー
  55.   RNDCMD_KEYS = [:DOWN,:LEFT,:RIGHT,:UP]
  56.   # ランダムコマンド入力キー表示文字(全角一文字推奨)
  57.   RNDCMD_KEY_OUTS = ["↓","←","→","↑"]
  58.   # ランダムコマンド入力キー表示文字間
  59.   RNDCMD_KEY_OUTS_SPACE = "  "
  60.   # ランダムコマンド入力一つ成功
  61.   RNDCMD_KEY_OUTS_OK = "○"
  62.   # ランダムコマンド入力スキル制限時間表示のメッセージ1
  63.   RNDCMD_MSG_TIME1 = "按指示按下按键! 剩余"
  64.   # ランダムコマンド入力スキル制限時間表示のメッセージ2
  65.   RNDCMD_MSG_TIME2 = "秒"
  66.   # ランダムコマンド入力成功時のメッセージ
  67.   RNDCMD_MSG_RET_OK = "HIT!"
  68.   # ランダムコマンド入力失敗時のメッセージ
  69.   RNDCMD_MSG_RET_NG = "MISS"
  70.  
  71.   # ジャストヒット入力対象
  72.   #   スキルID=>[制限時間(秒),失敗時レート,ヒット時レート,ジャストヒット時レート,
  73.   #               速さ,ゲージ長,ジャストヒット位置,ヒット許可数左,ヒット許可数右]
  74.   JSTHIT_INFO = {
  75.     1=>[1,50,100,150,2,21,11,4,4],
  76.     61=>[1,25,135,200,2,21,13,2,2],
  77.     63=>[1,0,0,300,2,21,14,0,0]
  78.  
  79.   }
  80.   # ジャストヒットで押下するボタン
  81.   JSTHIT_BTN = :C
  82.   # ジャストヒットスキル制限時間表示のメッセージ1
  83.   JSTHIT_MSG_TIME1 = "在☆的位置按下决定键! 剩余"
  84.   # ジャストヒットスキル制限時間表示のメッセージ2
  85.   JSTHIT_MSG_TIME2 = "秒"
  86.   # ジャストヒットゲージ_ミス_オフ
  87.   JSTHIT_GAGE_MISS_OFF= "-"
  88.   # ジャストヒットゲージ_ミス_オン
  89.   JSTHIT_GAGE_MISS_ON= "|"
  90.   # ジャストヒットゲージ_ヒット_オフ
  91.   JSTHIT_GAGE_HIT_OFF= "○"
  92.   # ジャストヒットゲージ_ヒット_オン
  93.   JSTHIT_GAGE_HIT_ON= "●"
  94.   # ジャストヒットゲージ_ジャストヒット_オフ
  95.   JSTHIT_GAGE_JUSTHIT_OFF= "☆"
  96.   # ジャストヒットゲージ_ジャストヒット_オン
  97.   JSTHIT_GAGE_JUSTHIT_ON= "★"
  98.   # ジャストヒット時のメッセージ
  99.   JSTHIT_JUST_HIT = "SMAAAAASH!"
  100.   # ヒット時のメッセージ
  101.   JSTHIT_HIT = "NICE!"
  102.   # ヒット時のメッセージ
  103.   JSTHIT_MISS = "MISS"
  104.  
  105.   # ジャストヒットN入力対象
  106.   #   スキルID=>[最低レート,1ヒット加算レート,速さ,ゲージ長]
  107.   JSTHITN_INFO = {
  108.     8=>[100,50,4,30]
  109.   }
  110.   # ジャストヒットNヒット位置定義
  111.   #   スキルID=>[ヒット位置1,ヒット位置2,ヒット位置3・・・]
  112.   JSTHITN_HIT_INFO = {
  113.     8=>[5,10,15,25,28]
  114.   }
  115.   # ジャストヒットNで押下するボタン
  116.   JSTHITN_BTN = :C
  117.   # ジャストヒットNスキル制限時間表示のメッセージ
  118.   JSTHITN_MSG_TIME = "在恰当的时机按下决定键!"
  119.   # ジャストヒットNゲージ_ミス_オフ
  120.   JSTHITN_GAGE_MISS_OFF = "-"
  121.   # ジャストヒットNゲージ_ミス_オン
  122.   JSTHITN_GAGE_MISS_ON = "□"
  123.   # ジャストヒットNゲージ_ヒット_オフ
  124.   JSTHITN_GAGE_JUSTHIT_OFF = "☆"
  125.   # ジャストヒットNゲージ_ヒット_オン
  126.   JSTHITN_GAGE_JUSTHIT_ON = "■"
  127.   # ヒット数のメッセージ
  128.   JSTHITN_HIT = "x"
  129.  
  130. end
  131. #==============================================================================
  132. # ■ Scene_Battle
  133. #------------------------------------------------------------------------------
  134. #  バトル画面の処理を行うクラスです。
  135. #==============================================================================
  136. class Scene_Battle < Scene_Base
  137.   #--------------------------------------------------------------------------
  138.   # ● 連打一打
  139.   #--------------------------------------------------------------------------
  140.   def se_renda
  141.     RPG::SE.new("cursverti", 100, 100).play
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● ランダムコマンド入力OK
  145.   #--------------------------------------------------------------------------
  146.   def se_rndcmd_ok
  147.     RPG::SE.new("item_streak_2", 100, 100).play
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● ランダムコマンド入力NG
  151.   #--------------------------------------------------------------------------
  152.   def se_rndcmd_ng
  153.     RPG::SE.new("Buzzer1", 100, 100).play
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● ジャストヒット入力大当たり
  157.   #--------------------------------------------------------------------------
  158.   def se_jsthit_justhit
  159.     RPG::SE.new("item_streak_1", 100, 100).play
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● ジャストヒット入力小当たり
  163.   #--------------------------------------------------------------------------
  164.   def se_jsthit_hit
  165.     RPG::SE.new("item_streak_2", 100, 100).play
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● ジャストヒット入力ミス
  169.   #--------------------------------------------------------------------------
  170.   def se_jsthit_miss
  171.     RPG::SE.new("Buzzer1", 100, 100).play
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ● ジャストヒットN入力当たり
  175.   #--------------------------------------------------------------------------
  176.   def se_jsthitn_hit
  177.     RPG::SE.new("item_streak_2", 100, 100).play
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   # ● ジャストヒットN入力ミス
  181.   #--------------------------------------------------------------------------
  182.   def se_jsthitn_miss
  183.     RPG::SE.new("Buzzer1", 100, 100).play
  184.   end
  185. end
  186. #==============================================================================
  187. # ■ MR_SPECIAL_ATTACK
  188. #------------------------------------------------------------------------------
  189. #  定数
  190. #==============================================================================
  191. module MR_SPECIAL_ATTACK
  192.   #
  193.   TYPE_NONE = 0
  194.   TYPE_RENDA = 1
  195.   TYPE_RNDCMD = 2
  196.   TYPE_JSTHIT = 3
  197.   TYPE_JSTHITN = 4
  198.  
  199.   FRAME_RATE = 60
  200. end
  201. #==============================================================================
  202. # ■ Game_Battler
  203. #------------------------------------------------------------------------------
  204. #  スプライトや行動に関するメソッドを追加したバトラーのクラスです。このクラス
  205. # は Game_Actor クラスと Game_Enemy クラスのスーパークラスとして使用されます。
  206. #==============================================================================
  207.  
  208. class Game_Battler < Game_BattlerBase
  209.   #--------------------------------------------------------------------------
  210.   # ● ダメージ計算 再定義
  211.   #--------------------------------------------------------------------------
  212.   def make_damage_value(user, item, ssr = nil)
  213.     value = item.damage.eval(user, self, $game_variables)
  214.     value *= item_element_rate(user, item)
  215.     value *= pdr if item.physical?
  216.     value *= mdr if item.magical?
  217.     value *= rec if item.damage.recover?
  218.     # ↓追加
  219.     #p "ダメージ = " + value.to_s
  220.     #p " スペシャルアタックレート = " + $special_attack_rate.to_s
  221.     value = sp_attack_to_damage(user,item,value,ssr)
  222.     #p "ダメージ反映結果 = " + value.to_s
  223.     # ↑追加
  224.     value = apply_critical(value) if @result.critical
  225.     value = apply_variance(value, item.damage.variance)
  226.     value = apply_guard(value)
  227.     @result.make_damage(value.to_i, item)
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● ダメージにスペシャルアタック反映
  231.   #--------------------------------------------------------------------------
  232.   def sp_attack_to_damage(user,item,value,ssr)
  233.     ret = value
  234.     # スペシャルアタックの反映
  235.     if $special_attack_rate == nil
  236.       $special_attack_rate = 100
  237.     end
  238.     ret = (ret * $special_attack_rate) / 100
  239.     return ret
  240.   end
  241. end
  242. #==============================================================================
  243. # ■ Scene_Battle
  244. #------------------------------------------------------------------------------
  245. #  バトル画面の処理を行うクラスです。
  246. #==============================================================================
  247. class Scene_Battle < Scene_Base
  248.   #--------------------------------------------------------------------------
  249.   # ● 開始処理
  250.   #--------------------------------------------------------------------------
  251.   alias mr_ac0201_start start
  252.   def start
  253.     mr_ac0201_start
  254.     init_special_attack
  255.     # スペシャルアタックによるアタックレート
  256.     $special_attack_rate = 100
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● スペシャルアタック関連変数(メンバ)の初期化
  260.   #--------------------------------------------------------------------------
  261.   def init_special_attack
  262.     @special_attack = false
  263.     @special_type = MR_SPECIAL_ATTACK::TYPE_NONE
  264.     @special_id = 0
  265.     @special_frm_cnt = 0
  266.     @special_ret = 0
  267.  
  268.     @renda_times = 0
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 戦闘行動の処理 再定義
  272.   #--------------------------------------------------------------------------
  273.   def process_action
  274.     return if scene_changing?
  275.     # ↓追加
  276.     if @special_attack == true
  277.       process_special_attack
  278.       return
  279.     end
  280.     # ↑追加
  281.     if !@subject || !@subject.current_action
  282.       @subject = BattleManager.next_subject
  283.     end
  284.     return turn_end unless @subject
  285.     if @subject.current_action
  286.       @subject.current_action.prepare
  287.       if @subject.current_action.valid?
  288.         # ↓追加
  289.         if @special_attack == false \
  290.          and @subject.current_action.item.is_a?(RPG::Skill )
  291.           id = @subject.current_action.item.id
  292.           chk = MR_SPECIAL_ATTACK_CUSTOM::RENDA_INFO[id]
  293.           if chk != nil
  294.             #p "連打スキル開始"
  295.             @special_id = id
  296.             @special_frm_cnt = 0
  297.             @special_type = MR_SPECIAL_ATTACK::TYPE_RENDA
  298.             @special_attack = true
  299.             process_special_attack
  300.             return
  301.           else
  302.             chk = MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_INFO[id]
  303.             if chk != nil
  304.               #p "ランダムコマンド入力スキル開始"
  305.               @special_id = id
  306.               @special_frm_cnt = 0
  307.               @special_type = MR_SPECIAL_ATTACK::TYPE_RNDCMD
  308.               @special_attack = true
  309.               process_special_attack
  310.               return
  311.             else
  312.               chk = MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[id]
  313.               if chk != nil
  314.                 #p "ジャストヒット入力スキル開始"
  315.                 @special_id = id
  316.                 @special_frm_cnt = 0
  317.                 @special_type = MR_SPECIAL_ATTACK::TYPE_JSTHIT
  318.                 @special_attack = true
  319.                 process_special_attack
  320.                 return
  321.               else
  322.                 chk = MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_INFO[id]
  323.                 if chk != nil
  324.                   #p "ジャストヒットN入力スキル開始"
  325.                   @special_id = id
  326.                   @special_frm_cnt = 0
  327.                   @special_type = MR_SPECIAL_ATTACK::TYPE_JSTHITN
  328.                   @special_attack = true
  329.                   process_special_attack
  330.                   return
  331.                 end
  332.               end
  333.             end
  334.           end
  335.         end
  336.         # ↑追加
  337.         @status_window.open
  338.         execute_action
  339.         # ↓追加
  340.         $special_attack_rate = 100
  341.         # ↑追加
  342.       end
  343.       @subject.remove_current_action
  344.     end
  345.     process_action_end unless @subject.current_action
  346.   end
  347.   #--------------------------------------------------------------------------
  348.   # ● 戦闘行動の実行 再定義
  349.   #--------------------------------------------------------------------------
  350.   def execute_action(flg = true)
  351.     @subject.sprite_effect_type = :whiten
  352.     # ↓変更
  353.     #use_item
  354.     # "○○の攻撃!"はスペシャルアタック後で表示するのは不自然な気がするので消す
  355.     use_item(flg)
  356.     # ↑変更
  357.     @log_window.wait_and_clear
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ● スキル/アイテムの使用 再定義
  361.   #--------------------------------------------------------------------------
  362.   def use_item(flg = true)
  363.     item = @subject.current_action.item
  364.     # ↓変更
  365.     #@log_window.display_use_item(@subject, item)
  366.     # "○○の攻撃!"はスペシャルアタック後で表示するのは不自然な気がするので消す
  367.     if flg == true
  368.       @log_window.display_use_item(@subject, item)
  369.     end
  370.     # ↑変更
  371.     @subject.use_item(item)
  372.     refresh_status
  373.     targets = @subject.current_action.make_targets.compact
  374.     show_animation(targets, item.animation_id)
  375.     targets.each {|target| item.repeats.times { invoke_item(target, item) } }
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● スペシャルアタックの処理
  379.   #--------------------------------------------------------------------------
  380.   def process_special_attack
  381.     case(@special_type)
  382.     when MR_SPECIAL_ATTACK::TYPE_NONE
  383.       @special_attack = false
  384.     when MR_SPECIAL_ATTACK::TYPE_RENDA
  385.       process_special_attack_renda
  386.     when MR_SPECIAL_ATTACK::TYPE_RNDCMD
  387.       process_special_attack_rndcmd
  388.     when MR_SPECIAL_ATTACK::TYPE_JSTHIT
  389.       process_special_attack_jsthit
  390.     when MR_SPECIAL_ATTACK::TYPE_JSTHITN
  391.       process_special_attack_jsthitn
  392.     else
  393.       @special_attack = false
  394.     end
  395.     if @special_frm_cnt % MR_SPECIAL_ATTACK::FRAME_RATE == 0
  396.       #p "スペシャルアタック中!:" \
  397.       #  + (@special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE).to_s
  398.     end
  399.     if @special_attack == false
  400.       process_special_attack_end
  401.     end
  402.   end
  403.   #--------------------------------------------------------------------------
  404.   # ● スペシャルアタックの終了処理
  405.   #--------------------------------------------------------------------------
  406.   def process_special_attack_end
  407.     #p "終了"
  408.     init_special_attack
  409.     # 戦闘行動の処理後半と同じ処理
  410.     @status_window.open
  411.     # "○○の攻撃!"はスペシャルアタック後で表示するのは不自然な気がするので消す
  412.     execute_action(false)
  413.     $special_attack_rate = 100
  414.     @subject.remove_current_action
  415.     process_action_end unless @subject.current_action
  416.   end
  417.   #--------------------------------------------------------------------------
  418.   # ▲▲▲スペシャルアタック1:連打▲▲▲
  419.   #--------------------------------------------------------------------------
  420.   #--------------------------------------------------------------------------
  421.   # ● 連打の出力先クリア
  422.   #--------------------------------------------------------------------------
  423.   def renda_output_clear
  424.     @log_window.clear
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ● 連打の出力 スキル発動メッセージ
  428.   #--------------------------------------------------------------------------
  429.   def renda_output_display_use_item
  430.     item = @subject.current_action.item
  431.     @log_window.display_use_item(@subject, item)
  432.   end
  433.   #--------------------------------------------------------------------------
  434.   # ● 連打の出力
  435.   #--------------------------------------------------------------------------
  436.   def renda_output(str)
  437.     @log_window.add_text(str)
  438.   end
  439.   #--------------------------------------------------------------------------
  440.   # ● 連打の処理
  441.   #--------------------------------------------------------------------------
  442.   def process_special_attack_renda
  443.     # フレームと残り秒数の取得
  444.     t_limit = MR_SPECIAL_ATTACK_CUSTOM::RENDA_INFO[@special_id][0]
  445.     t_zan = t_limit - @special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE
  446.     # 1秒ごとの処理
  447.     if @special_frm_cnt % MR_SPECIAL_ATTACK::FRAME_RATE == 0
  448.       renda_output_clear
  449.       renda_output_display_use_item
  450.       renda_output(MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_TIME1 \
  451.         + t_zan.to_s + MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_TIME2)
  452.       renda_output(MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_RET1 + \
  453.         @renda_times.to_s + MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_RET2)
  454.       # 初回の処理
  455.       if @special_frm_cnt == 0
  456.         @renda_times = 0
  457.       end
  458.     end
  459.     @special_frm_cnt = @special_frm_cnt + 1
  460.     # 一打の処理
  461.     if Input.trigger?(MR_SPECIAL_ATTACK_CUSTOM::RENDA_BTN)
  462.       @renda_times = @renda_times + 1
  463.       se_renda
  464.       renda_output_clear
  465.       renda_output_display_use_item
  466.       renda_output(MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_TIME1 \
  467.         + t_zan.to_s + MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_TIME2)
  468.       renda_output(MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_RET1 + \
  469.         @renda_times.to_s + MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_RET2)
  470.       #p "連打!" + @renda_times.to_s
  471.     end
  472.     # 制限時間経過事(終了)の処理
  473.     if (@special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE) == t_limit
  474.       renda_output_clear
  475.       renda_output(MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_RET1 + \
  476.         @renda_times.to_s + MR_SPECIAL_ATTACK_CUSTOM::RENDA_MSG_RET2)
  477.       # 最低レート
  478.       @special_ret = MR_SPECIAL_ATTACK_CUSTOM::RENDA_INFO[@special_id][1]
  479.       #p "最低レート:" + @special_ret.to_s
  480.       # 連打数の反映
  481.       a = MR_SPECIAL_ATTACK_CUSTOM::RENDA_INFO[@special_id][2]
  482.       a = a * @renda_times
  483.       @special_ret = @special_ret + a
  484.       #p "連打数反映:" + @special_ret.to_s
  485.       # 最高レート
  486.       b = MR_SPECIAL_ATTACK_CUSTOM::RENDA_INFO[@special_id][3]
  487.       if @special_ret > b
  488.         @special_ret = b
  489.         #p "最高レートを突破した為、修正:" + @special_ret.to_s
  490.       end
  491.       #p "結果:" + @special_ret.to_s
  492.       $special_attack_rate = @special_ret
  493.       @special_attack = false
  494.     end
  495.   end
  496.   #--------------------------------------------------------------------------
  497.   # ▲▲▲スペシャルアタック2:ランダムコマンド▲▲▲
  498.   #--------------------------------------------------------------------------
  499.   #--------------------------------------------------------------------------
  500.   # ● ランコマの出力先クリア
  501.   #--------------------------------------------------------------------------
  502.   def rndcmd_output_clear
  503.     @log_window.clear
  504.   end
  505.   #--------------------------------------------------------------------------
  506.   # ● ランコマの出力 スキル発動メッセージ
  507.   #--------------------------------------------------------------------------
  508.   def rndcmd_output_display_use_item
  509.     item = @subject.current_action.item
  510.     @log_window.display_use_item(@subject, item)
  511.   end
  512.   #--------------------------------------------------------------------------
  513.   # ● ランコマの出力
  514.   #--------------------------------------------------------------------------
  515.   def rndcmd_output(str)
  516.     @log_window.add_text(str)
  517.   end
  518.   #--------------------------------------------------------------------------
  519.   # ● ランダムコマンド決定処理
  520.   #--------------------------------------------------------------------------
  521.   def rndcmd_desc(t)
  522.     @rndcmds = []
  523.     @rndcmds_txt = ""
  524.     for i in 0...t
  525.       j = rand(MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_KEYS.size)
  526.       @rndcmds.push(MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_KEYS[j])
  527.       @rndcmds_txt = @rndcmds_txt + \
  528.         MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_KEY_OUTS[j] + \
  529.         MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_KEY_OUTS_SPACE
  530.     end
  531.   end
  532.   #--------------------------------------------------------------------------
  533.   # ● ランダムコマンド入力状況初期化
  534.   #--------------------------------------------------------------------------
  535.   def rndcmd_input_init
  536.     @rndcmds_input_ok = 0
  537.     @rndcmds_input_txt = ""
  538.   end
  539.   #--------------------------------------------------------------------------
  540.   # ● ランダムコマンド入力状況OK追加
  541.   #--------------------------------------------------------------------------
  542.   def rndcmd_input_ok
  543.     # フレームと残り秒数の取得
  544.     t_limit = MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_INFO[@special_id][0]
  545.     t_zan = t_limit - @special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE
  546.     se_rndcmd_ok
  547.     @rndcmds_input_ok = @rndcmds_input_ok + 1
  548.     @rndcmds_input_txt = @rndcmds_input_txt + \
  549.       MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_KEY_OUTS_OK + \
  550.       MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_KEY_OUTS_SPACE
  551.     rndcmd_output_clear
  552.     rndcmd_output_display_use_item
  553.     rndcmd_output(MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_MSG_TIME1 \
  554.       + t_zan.to_s + MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_MSG_TIME2)
  555.     rndcmd_ret_output
  556.   end
  557.   #--------------------------------------------------------------------------
  558.   # ● ランダムコマンド入力状況NG
  559.   #--------------------------------------------------------------------------
  560.   def rndcmd_input_ng
  561.     # フレームと残り秒数の取得
  562.     t_limit = MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_INFO[@special_id][0]
  563.     t_zan = t_limit - @special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE
  564.     se_rndcmd_ng
  565.     rndcmd_input_init
  566.     rndcmd_output_clear
  567.     rndcmd_output_display_use_item
  568.     rndcmd_output(MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_MSG_TIME1 \
  569.       + t_zan.to_s + MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_MSG_TIME2)
  570.     rndcmd_ret_output
  571.   end
  572.   #--------------------------------------------------------------------------
  573.   # ● ランダムコマンド、成否状況出力処理
  574.   #--------------------------------------------------------------------------
  575.   def rndcmd_ret_output
  576.     rndcmd_output(@rndcmds_txt)
  577.     rndcmd_output(@rndcmds_input_txt)
  578.   end
  579.   #--------------------------------------------------------------------------
  580.   # ● ランコマの処理
  581.   #--------------------------------------------------------------------------
  582.   def process_special_attack_rndcmd
  583.     # フレームと残り秒数の取得
  584.     t_limit = MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_INFO[@special_id][0]
  585.     t_zan = t_limit - @special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE
  586.     # 1秒ごとの処理
  587.     if @special_frm_cnt % MR_SPECIAL_ATTACK::FRAME_RATE == 0
  588.       # 初回の処理
  589.       if @special_frm_cnt == 0
  590.         rndcmd_desc(MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_INFO[@special_id][3])
  591.         rndcmd_input_init
  592.       end
  593.       rndcmd_output_clear
  594.       rndcmd_output_display_use_item
  595.       rndcmd_output(MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_MSG_TIME1 \
  596.         + t_zan.to_s + MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_MSG_TIME2)
  597.       rndcmd_ret_output
  598.     end
  599.     @special_frm_cnt = @special_frm_cnt + 1
  600.     # 一打の処理
  601.     if Input.trigger?(@rndcmds[@rndcmds_input_ok])
  602.       rndcmd_input_ok
  603.       #p "成功!" + @rndcmds_input_ok.to_s
  604.     else
  605.       if Input.trigger?(:DOWN)
  606.         rndcmd_input_ng
  607.         #p "失敗" + @rndcmds_input_ok.to_s
  608.       elsif Input.trigger?(:UP)
  609.         rndcmd_input_ng
  610.         #p "失敗" + @rndcmds_input_ok.to_s
  611.       elsif Input.trigger?(:RIGHT)
  612.         rndcmd_input_ng
  613.         #p "失敗" + @rndcmds_input_ok.to_s
  614.       elsif Input.trigger?(:LEFT)
  615.         rndcmd_input_ng
  616.         #p "失敗" + @rndcmds_input_ok.to_s
  617.       elsif Input.trigger?(:A)
  618.         rndcmd_input_ng
  619.         #p "失敗" + @rndcmds_input_ok.to_s
  620.       elsif Input.trigger?(:B)
  621.         rndcmd_input_ng
  622.         #p "失敗" + @rndcmds_input_ok.to_s
  623.       elsif Input.trigger?(:C)
  624.         rndcmd_input_ng
  625.         #p "失敗" + @rndcmds_input_ok.to_s
  626.       elsif Input.trigger?(:X)
  627.         rndcmd_input_ng
  628.         #p "失敗" + @rndcmds_input_ok.to_s
  629.       elsif Input.trigger?(:Y)
  630.         rndcmd_input_ng
  631.         #p "失敗" + @rndcmds_input_ok.to_s
  632.       elsif Input.trigger?(:Z)
  633.         rndcmd_input_ng
  634.         #p "失敗" + @rndcmds_input_ok.to_s
  635.       elsif Input.trigger?(:L)
  636.         rndcmd_input_ng
  637.         #p "失敗" + @rndcmds_input_ok.to_s
  638.       elsif Input.trigger?(:R)
  639.         rndcmd_input_ng
  640.         #p "失敗" + @rndcmds_input_ok.to_s
  641.       elsif Input.trigger?(:Shift)
  642.         rndcmd_input_ng
  643.         #p "失敗" + @rndcmds_input_ok.to_s
  644.       elsif Input.trigger?(:CTRL)
  645.         rndcmd_input_ng
  646.         #p "失敗" + @rndcmds_input_ok.to_s
  647.       elsif Input.trigger?(:ALT)
  648.         rndcmd_input_ng
  649.         #p "失敗" + @rndcmds_input_ok.to_s
  650.       end
  651.     end
  652.     # 制限時間経過事(終了)、または全部入力終了時の処理
  653.     if (@special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE) == t_limit \
  654.       or @rndcmds_input_ok == @rndcmds.size
  655.       rndcmd_output_clear
  656.       # 成功時
  657.       if @rndcmds_input_ok == @rndcmds.size
  658.         rndcmd_output(MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_MSG_RET_OK)
  659.         # 成功レート
  660.         @special_ret = MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_INFO[@special_id][2]
  661.         #p "成功レート:" + @special_ret.to_s
  662.       else
  663.         # 失敗時  
  664.         rndcmd_output(MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_MSG_RET_NG)
  665.         # 失敗レート
  666.         @special_ret = MR_SPECIAL_ATTACK_CUSTOM::RNDCMD_INFO[@special_id][1]
  667.         #p "失敗レート:" + @special_ret.to_s
  668.       end
  669.       #p "結果:" + @special_ret.to_s
  670.       $special_attack_rate = @special_ret
  671.       @special_attack = false
  672.     end
  673.   end
  674.   #--------------------------------------------------------------------------
  675.   # ▲▲▲スペシャルアタック3:ジャストヒット▲▲▲
  676.   #--------------------------------------------------------------------------
  677.   #--------------------------------------------------------------------------
  678.   # ● ジャスヒの出力先クリア
  679.   #--------------------------------------------------------------------------
  680.   def jsthit_output_clear
  681.     @log_window.clear
  682.   end
  683.   #--------------------------------------------------------------------------
  684.   # ● ジャスヒの出力 スキル発動メッセージ
  685.   #--------------------------------------------------------------------------
  686.   def jsthit_output_display_use_item
  687.     item = @subject.current_action.item
  688.     @log_window.display_use_item(@subject, item)
  689.   end
  690.   #--------------------------------------------------------------------------
  691.   # ● ジャスヒの出力
  692.   #--------------------------------------------------------------------------
  693.   def jsthit_output(str)
  694.     @log_window.add_text(str)
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # ● ジャストヒット入力状況初期化
  698.   #--------------------------------------------------------------------------
  699.   def jsthit_input_init
  700.     t_limit = MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][0]
  701.     t_zan = t_limit - @special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE
  702.     @jsthit_cnt = 0
  703.     @jsthit_pos = 1
  704.     jsthit_output_clear
  705.     jsthit_output_display_use_item
  706.     jsthit_output(MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_MSG_TIME1 \
  707.       + t_zan.to_s + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_MSG_TIME2)
  708.     jsthit_gage_output
  709.   end
  710.   #--------------------------------------------------------------------------
  711.   # ● ジャストヒットゲージ進行処理
  712.   #--------------------------------------------------------------------------
  713.   def jsthit_count
  714.     # 速さ
  715.     if @jsthit_cnt == MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][4]
  716.       if @jsthit_pos == MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][5]
  717.         @jsthit_pos = 1
  718.       else
  719.         @jsthit_pos = @jsthit_pos + 1
  720.       end
  721.       @jsthit_cnt = 0
  722.       t_limit = MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][0]
  723.       t_zan = t_limit - @special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE
  724.       jsthit_output_clear
  725.       jsthit_output_display_use_item
  726.       jsthit_output(MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_MSG_TIME1 \
  727.         + t_zan.to_s + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_MSG_TIME2)
  728.       jsthit_gage_output
  729.     else
  730.       @jsthit_cnt = @jsthit_cnt + 1
  731.     end
  732.   end
  733.   #--------------------------------------------------------------------------
  734.   # ● ジャストヒットゲージ出力処理
  735.   #--------------------------------------------------------------------------
  736.   def jsthit_gage_output
  737.     @jsthits_txt = ""
  738.     # ゲージ長
  739.     for i in 1..MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][5]
  740.       if i == @jsthit_pos
  741.         # ジャストヒット位置
  742.         if i == MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][6]
  743.           @jsthits_txt = @jsthits_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_GAGE_JUSTHIT_ON
  744.         # ヒット
  745.         elsif (MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][6] \
  746.           - MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][7])  <= i \
  747.         and i <= (MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][6] \
  748.           + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][8])
  749.           @jsthits_txt = @jsthits_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_GAGE_HIT_ON
  750.         else
  751.           @jsthits_txt = @jsthits_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_GAGE_MISS_ON
  752.         end
  753.       else
  754.         # ジャストヒット位置
  755.         if i == MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][6]
  756.           @jsthits_txt = @jsthits_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_GAGE_JUSTHIT_OFF
  757.         # ヒット
  758.         elsif (MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][6] \
  759.           - MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][7])  <= i \
  760.         and i <= (MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][6] \
  761.           + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][8])
  762.           @jsthits_txt = @jsthits_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_GAGE_HIT_OFF
  763.         else
  764.           @jsthits_txt = @jsthits_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_GAGE_MISS_OFF
  765.         end
  766.       end
  767.  
  768.     end
  769.     jsthit_output(@jsthits_txt)
  770.   end
  771.   #--------------------------------------------------------------------------
  772.   # ● ジャスヒの処理
  773.   #--------------------------------------------------------------------------
  774.   def process_special_attack_jsthit
  775.     # フレームと残り秒数の取得
  776.     t_limit = MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][0]
  777.     t_zan = t_limit - @special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE
  778.     # 1秒ごとの処理
  779.     if @special_frm_cnt % MR_SPECIAL_ATTACK::FRAME_RATE == 0
  780.       # 初回の処理
  781.       if @special_frm_cnt == 0
  782.         jsthit_input_init
  783.       end
  784.     end
  785.     jsthit_count
  786.     @special_frm_cnt = @special_frm_cnt + 1
  787.     # 制限時間経過事(終了)、または全部入力終了時の処理
  788.     if (@special_frm_cnt / MR_SPECIAL_ATTACK::FRAME_RATE) == t_limit \
  789.       or Input.trigger?(MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_BTN)
  790.       jsthit_output_clear
  791.       # ジャストヒット位置
  792.       if @jsthit_pos == MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][6]
  793.         jsthit_output(MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_JUST_HIT)
  794.         se_jsthit_justhit
  795.         # ジャストヒットレート
  796.         @special_ret = MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][3]
  797.         p "ジャストヒットレート:" + @special_ret.to_s
  798.       # ヒット
  799.       elsif (MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][6] \
  800.         - MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][7]) <= @jsthit_pos \
  801.       and @jsthit_pos <= (MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][6] \
  802.         + MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][8])
  803.         jsthit_output(MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_HIT)
  804.         se_jsthit_hit
  805.         # ヒットレート
  806.         @special_ret = MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][2]
  807.         #p "ヒットレート:" + @special_ret.to_s
  808.       else
  809.         se_jsthit_miss
  810.         jsthit_output(MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_MISS)
  811.         # 失敗レート
  812.         @special_ret = MR_SPECIAL_ATTACK_CUSTOM::JSTHIT_INFO[@special_id][1]
  813.         #p "失敗レート:" + @special_ret.to_s
  814.       end
  815.       jsthit_gage_output
  816.       #p "結果:" + @special_ret.to_s
  817.       $special_attack_rate = @special_ret
  818.       @special_attack = false
  819.     end
  820.   end
  821.  
  822.   #--------------------------------------------------------------------------
  823.   # ▲▲▲スペシャルアタック4:ジャストヒットN▲▲▲
  824.   #--------------------------------------------------------------------------
  825.   #--------------------------------------------------------------------------
  826.   # ● ジャスヒNの出力先クリア
  827.   #--------------------------------------------------------------------------
  828.   def jsthitn_output_clear
  829.     @log_window.clear
  830.   end
  831.   #--------------------------------------------------------------------------
  832.   # ● ジャスヒNの出力 スキル発動メッセージ
  833.   #--------------------------------------------------------------------------
  834.   def jsthitn_output_display_use_item
  835.     item = @subject.current_action.item
  836.     @log_window.display_use_item(@subject, item)
  837.   end
  838.   #--------------------------------------------------------------------------
  839.   # ● ジャスヒNの出力
  840.   #--------------------------------------------------------------------------
  841.   def jsthitn_output(str)
  842.     @log_window.add_text(str)
  843.   end
  844.   #--------------------------------------------------------------------------
  845.   # ● ジャストヒットN入力状況初期化
  846.   #--------------------------------------------------------------------------
  847.   def jsthitn_input_init
  848.     @jsthitn_cnt = 0
  849.     @jsthitn_hitcnt = 0
  850.     @jsthitn_pos = 1
  851.     @jsthitn_pushcnt = 0
  852.     @jsthitn_hitted = []
  853.     jsthitn_output_clear
  854.     jsthitn_output_display_use_item
  855.     jsthitn_output(MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_MSG_TIME)
  856.     jsthitn_gage_output
  857.     @jsthitn_next_hit = 999
  858.   end
  859.   #--------------------------------------------------------------------------
  860.   # ● ジャストヒットNゲージ進行処理
  861.   #--------------------------------------------------------------------------
  862.   def jsthitn_count
  863.     # 速さ
  864.     if @jsthitn_cnt == MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_INFO[@special_id][2]
  865.       if @jsthitn_pos != MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_INFO[@special_id][3]
  866.         @jsthitn_pos = @jsthitn_pos + 1
  867.       end
  868.       @jsthitn_cnt = 0
  869.       jsthitn_output_clear
  870.       jsthitn_output_display_use_item
  871.       jsthitn_output(MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_MSG_TIME)
  872.       jsthitn_gage_output
  873.     else
  874.       @jsthitn_cnt = @jsthitn_cnt + 1
  875.     end
  876.   end
  877.   #--------------------------------------------------------------------------
  878.   # ● ジャストヒットNゲージ出力処理
  879.   #--------------------------------------------------------------------------
  880.   def jsthitn_gage_output
  881.     @jsthitns_txt = ""
  882.     # ゲージ長
  883.     j = 999
  884.     for k in 0...MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id].size
  885.       if MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id][k] >= @jsthitn_pos \
  886.         and j > k
  887.         j = k
  888.         #p "#{j.to_s]"
  889.       end
  890.     end
  891.     e = @jsthitn_pos + 29
  892.     if e > MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_INFO[@special_id][3]
  893.       e = MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_INFO[@special_id][3]
  894.     end
  895.     for i in @jsthitn_pos..e
  896.       if i == @jsthitn_pos
  897.         # ヒットN位置
  898.         if i == MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id][j]
  899.           j = j + 1
  900.           @jsthitns_txt = @jsthitns_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_GAGE_JUSTHIT_ON
  901.         else
  902.           @jsthitns_txt = @jsthitns_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_GAGE_MISS_ON
  903.         end
  904.       else
  905.         # ヒットN位置
  906.         if i == MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id][j]
  907.           j = j + 1
  908.           @jsthitns_txt = @jsthitns_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_GAGE_JUSTHIT_OFF
  909.         else
  910.           @jsthitns_txt = @jsthitns_txt + MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_GAGE_MISS_OFF
  911.         end
  912.       end
  913.     end
  914.     jsthitn_output(@jsthitns_txt)
  915.   end
  916.   #--------------------------------------------------------------------------
  917.   # ● ジャスヒNの処理
  918.   #--------------------------------------------------------------------------
  919.   def process_special_attack_jsthitn
  920.     # 1秒ごとの処理
  921.     if @special_frm_cnt % MR_SPECIAL_ATTACK::FRAME_RATE == 0
  922.       # 初回の処理
  923.       if @special_frm_cnt == 0
  924.         jsthitn_input_init
  925.       end
  926.     end
  927.     # 押下時の処理
  928.     if Input.trigger?(MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_BTN)
  929.       #p MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id].size.to_s
  930.       jsthitn_next_hit_time = 999
  931.       jsthitn_next_hit = 999
  932.       for k in 0...MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id].size
  933.         if jsthitn_next_hit_time > MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id][k] \
  934.           and MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id][k] >= @jsthitn_pos
  935.           jsthitn_next_hit = k
  936.           jsthitn_next_hit_time = MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id][k]
  937.         end
  938.       end
  939.       #p "次のヒット:" + MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id][jsthitn_next_hit].to_s
  940.       #p "#{@jsthitn_pos.to_s}"
  941.       if @jsthitn_pos == \
  942.         MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id][jsthitn_next_hit]
  943.         #p "入力成功"
  944.         se_jsthitn_hit
  945.         @jsthitn_hitted.push @jsthitn_pos
  946.         jsthitn_output_clear
  947.         jsthitn_output_display_use_item
  948.         jsthitn_output(MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_MSG_TIME)
  949.         jsthitn_gage_output
  950.         @jsthitn_hitcnt = @jsthitn_hitcnt + 1
  951.         @jsthitn_pushcnt = @jsthitn_pushcnt + 1
  952.       else
  953.         #p "入力失敗"
  954.         @jsthitn_pushcnt = @jsthitn_pushcnt + 1
  955.         se_jsthitn_miss
  956.       end
  957.     end
  958.     jsthitn_count
  959.     @special_frm_cnt = @special_frm_cnt + 1
  960.     # ゲージ終了時、またはヒット数よりたくさん押した場合の処理
  961.     if @jsthitn_pos == MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_INFO[@special_id][3] \
  962.       or @jsthitn_pushcnt >= MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT_INFO[@special_id].size
  963.       @jsthitn_pos = 0
  964.       jsthitn_output_clear
  965.       jsthitn_output(@jsthitn_hitcnt.to_s + MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_HIT)
  966.  
  967.       # 最低レート
  968.       @special_ret = MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_INFO[@special_id][0]
  969.       #p "最低レート:" + @special_ret.to_s
  970.       # 成功数の反映
  971.       a = MR_SPECIAL_ATTACK_CUSTOM::JSTHITN_INFO[@special_id][1]
  972.       a = a * @jsthitn_hitcnt
  973.       @special_ret = @special_ret + a
  974.       #p "成功数反映:" + @special_ret.to_s
  975.       #p "結果:" + @special_ret.to_s
  976.       $special_attack_rate = @special_ret
  977.       @special_attack = false
  978.  
  979.     end
  980.   end
  981. end

就是想知道 如何修改这个脚本
因为它现在在战斗时轮到敌人回合时也会弹出判断条来决定敌人的攻击
而我需要敌人的伤害是定量的

(就是说玩家可以决定敌人的攻击伤害)
我想修改这个脚本 使得在战斗时玩家只能决定自己的伤害是否击中
(只实现下图的功能)

在这里请教各位大佬 要怎么做才能实现
麻烦了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1