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

Project1

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

[已经过期] 关于战斗技能释放和QTE脚本(大概是叫这个吧)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
46 小时
注册时间
2014-10-6
帖子
94
跳转到指定楼层
1
发表于 2014-11-1 10:52:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想要让技能释放前让玩家在规定时间内按下指定的按键,
例如:↓→↓→AD
没有在规定时间内按好,失败;按错一个键,失败。
成功则技能威力提升1倍,100%命中;
失败则技能威力、命中率下降。
之前我已经在66rpg搜索过相关的帖子,
可惜没有符合我要求的脚本。

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2014-11-1 16:59:27 | 只看该作者
这么具体的效果你得会点脚本自己改才是最好的。

一般的影响战斗的QTE系统可以很简单的改出你需要的效果。

你不觉得你这个设定太吃QTE的成功率了吗……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
99
在线时间
900 小时
注册时间
2012-11-13
帖子
893
3
发表于 2014-11-2 09:41:43 | 只看该作者
废弃
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
46 小时
注册时间
2014-10-6
帖子
94
4
 楼主| 发表于 2014-11-2 20:12:12 | 只看该作者
三途亚梦 发表于 2014-11-1 16:59
这么具体的效果你得会点脚本自己改才是最好的。

一般的影响战斗的QTE系统可以很简单的改出你需要 ...

之前我看过【Timed Button Attacks v.1.7】的QTE系统,
可惜里面一大堆外文注释,看不懂。而且那个是按照动画帧数来设定反应时间的,
我不需要普通攻击反应,我需要的是技能释放反应。
而且里面反应按键太单调,
至于快速反应的成功率可以调整反应时间来控制。

点评

我只能劝你,学会看懂这个脚本并且去修改它。要么放弃使用QTE系统。  发表于 2014-11-2 20:44
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
46 小时
注册时间
2014-10-6
帖子
94
5
 楼主| 发表于 2014-11-2 20:13:14 | 只看该作者
3106345123 发表于 2014-11-2 09:41
http://www.atelier-rgss.com/RGSS/System/ACE_SYS02.html

外文看不懂。

点评

China so far no one wrote "vx ace" QTE system  发表于 2014-11-4 12:52
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
46 小时
注册时间
2014-10-6
帖子
94
6
 楼主| 发表于 2014-11-4 17:32:54 | 只看该作者
3106345123 发表于 2014-11-2 09:41
http://www.atelier-rgss.com/RGSS/System/ACE_SYS02.html

中国没有人写出来QTE脚本,可其他国家不是有吗?66RPG的网站里难道就连肯翻译QTE脚本的人都没有吗?

点评

然后机翻影响理解所以基本上都是都是自己用不拿来误人子弟,再说机翻也很容易  发表于 2014-11-4 21:13
至于翻译吗,基本上翻译单个脚本的人很少。有能力的很少翻(直接看懂……),只有机翻较多人用(比如我)  发表于 2014-11-4 21:11
first,善用点评  发表于 2014-11-4 21:07
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
46 小时
注册时间
2014-10-6
帖子
94
7
 楼主| 发表于 2014-11-4 17:35:30 | 只看该作者
3106345123 发表于 2014-11-2 09:41
http://www.atelier-rgss.com/RGSS/System/ACE_SYS02.html

而且,像很多国产游戏里,也有QTE脚本。
比如【狂想物语】【黑暗圣剑传说】【拳皇之恶魔使者】等,
可惜我用不了。

点评

还有,国外有几十个网站,中国大陆就一个…  发表于 2014-11-4 22:50
China "xp" QTE System: http://rm.66rpg.com/thread-366898-1-1.html  发表于 2014-11-4 21:16
实际上中国不是没有好脚本只是肯拿出来共享的太少了  发表于 2014-11-4 21:15
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22948
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
8
发表于 2014-11-4 19:18:46 | 只看该作者
這様?

点评

没错,这个就是我所想要的。  发表于 2014-11-16 15:19
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22948
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
9
发表于 2014-11-19 21:09:11 | 只看该作者
  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.     80=>[5,0,1,100],
  37.     132=>[5,0,1,100]
  38.   }
  39.   # 連打するボタン
  40.   RENDA_BTN = :C
  41.   # 連打スキル制限時間表示のメッセージ1
  42.   RENDA_MSG_TIME1 = "決定ボタンを連打しろ! 残 "
  43.   # 連打スキル制限時間表示のメッセージ2
  44.   RENDA_MSG_TIME2 = " 秒"
  45.   # 連打回数表示時のメッセージ1
  46.   RENDA_MSG_RET1 = ""
  47.   # 連打回数表示時のメッセージ2
  48.   RENDA_MSG_RET2 = "Hits!"
  49.   
  50.   # ランダムコマンド入力対象
  51.   #   スキルID=>[制限時間(秒),失敗時レート,成功時レート,入力数]
  52.   RNDCMD_INFO = {
  53.     81=>[3,0,100,5],
  54.     85=>[3,0,100,5]
  55.   }
  56.   # ランダムコマンド入力キー
  57.   RNDCMD_KEYS = [:DOWN,:LEFT,:RIGHT,:UP,:C]
  58.   # ランダムコマンド入力キー表示文字(全角一文字推奨)
  59.   RNDCMD_KEY_OUTS = ["↓","←","→","↑","C"]
  60.   # ランダムコマンド入力キー表示文字間
  61.   RNDCMD_KEY_OUTS_SPACE = "  "
  62.   # ランダムコマンド入力一つ成功
  63.   RNDCMD_KEY_OUTS_OK = "○"
  64.   # ランダムコマンド入力スキル制限時間表示のメッセージ1
  65.   RNDCMD_MSG_TIME1 = "コマンドを入力しろ! 残 "
  66.   # ランダムコマンド入力スキル制限時間表示のメッセージ2
  67.   RNDCMD_MSG_TIME2 = " 秒"
  68.   # ランダムコマンド入力成功時のメッセージ
  69.   RNDCMD_MSG_RET_OK = "コマンド入力成功!"
  70.   # ランダムコマンド入力失敗時のメッセージ
  71.   RNDCMD_MSG_RET_NG = "コマンド入力失敗・・・orz"
  72.   
  73.   # ジャストヒット入力対象
  74.   #   スキルID=>[制限時間(秒),失敗時レート,ヒット時レート,ジャストヒット時レート,
  75.   #               速さ,ゲージ長,ジャストヒット位置,ヒット許可数左,ヒット許可数右]
  76.   JSTHIT_INFO = {
  77.     82=>[5,0,75,100,2,21,11,2,2],
  78.     86=>[5,0,75,100,2,21,11,2,2]
  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 = "Graet!"
  100.   # ヒット時のメッセージ
  101.   JSTHIT_HIT = "OK"
  102.   # ヒット時のメッセージ
  103.   JSTHIT_MISS = "Miss..."
  104.   
  105.   # ジャストヒットN入力対象
  106.   #   スキルID=>[最低レート,1ヒット加算レート,速さ,ゲージ長]
  107.   JSTHITN_INFO = {
  108.     83=>[0,50,2,60],
  109.     87=>[0,50,2,60]
  110.   }
  111.   # ジャストヒットNヒット位置定義
  112.   #   スキルID=>[ヒット位置1,ヒット位置2,ヒット位置3・・・]
  113.   JSTHITN_HIT_INFO = {
  114.     84=>[10,20,30,50,55],
  115.     88=>[10,20,30,50,55]
  116.   }
  117.   # ジャストヒットNで押下するボタン
  118.   JSTHITN_BTN = :C
  119.   # ジャストヒットNスキル制限時間表示のメッセージ
  120.   JSTHITN_MSG_TIME = "↓☆がこの位置に来たら決定ボタンを押せ!"
  121.   # ジャストヒットNゲージ_ミス_オフ
  122.   JSTHITN_GAGE_MISS_OFF = "・"
  123.   # ジャストヒットNゲージ_ミス_オン
  124.   JSTHITN_GAGE_MISS_ON = "□"
  125.   # ジャストヒットNゲージ_ヒット_オフ
  126.   JSTHITN_GAGE_JUSTHIT_OFF = "☆"
  127.   # ジャストヒットNゲージ_ヒット_オン
  128.   JSTHITN_GAGE_JUSTHIT_ON = "■"
  129.   # ヒット数のメッセージ
  130.   JSTHITN_HIT = "Hits!"

  131. end
  132. #==============================================================================
  133. # ■ Scene_Battle
  134. #------------------------------------------------------------------------------
  135. #  バトル画面の処理を行うクラスです。
  136. #==============================================================================
  137. class Scene_Battle < Scene_Base
  138.   #--------------------------------------------------------------------------
  139.   # ● 連打一打
  140.   #--------------------------------------------------------------------------
  141.   def se_renda
  142.     RPG::SE.new("Cursor2", 100, 100).play
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● ランダムコマンド入力OK
  146.   #--------------------------------------------------------------------------
  147.   def se_rndcmd_ok
  148.     RPG::SE.new("Chime2", 100, 100).play
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● ランダムコマンド入力NG
  152.   #--------------------------------------------------------------------------
  153.   def se_rndcmd_ng
  154.     RPG::SE.new("Buzzer1", 100, 100).play
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● ジャストヒット入力大当たり
  158.   #--------------------------------------------------------------------------
  159.   def se_jsthit_justhit
  160.     RPG::SE.new("Chime2", 100, 100).play
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● ジャストヒット入力小当たり
  164.   #--------------------------------------------------------------------------
  165.   def se_jsthit_hit
  166.     RPG::SE.new("Decision2", 100, 100).play
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● ジャストヒット入力ミス
  170.   #--------------------------------------------------------------------------
  171.   def se_jsthit_miss
  172.     RPG::SE.new("Buzzer1", 100, 100).play
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● ジャストヒットN入力当たり
  176.   #--------------------------------------------------------------------------
  177.   def se_jsthitn_hit
  178.     RPG::SE.new("Decision2", 100, 100).play
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ● ジャストヒットN入力ミス
  182.   #--------------------------------------------------------------------------
  183.   def se_jsthitn_miss
  184.     RPG::SE.new("Buzzer1", 100, 100).play
  185.   end
  186. end
  187. #==============================================================================
  188. # ■ MR_SPECIAL_ATTACK
  189. #------------------------------------------------------------------------------
  190. #  定数
  191. #==============================================================================
  192. module MR_SPECIAL_ATTACK
  193.   #
  194.   TYPE_NONE = 0
  195.   TYPE_RENDA = 1
  196.   TYPE_RNDCMD = 2
  197.   TYPE_JSTHIT = 3
  198.   TYPE_JSTHITN = 4
  199.   
  200.   FRAME_RATE = 60
  201. end
  202. #==============================================================================
  203. # ■ Game_Battler
  204. #------------------------------------------------------------------------------
  205. #  スプライトや行動に関するメソッドを追加したバトラーのクラスです。このクラス
  206. # は Game_Actor クラスと Game_Enemy クラスのスーパークラスとして使用されます。
  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 || [email protected]_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

复制代码

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 14:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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