【解決済み】戦闘時の行動回数

鼻毛ぷいぷい

【解決済み】戦闘時の行動回数

投稿記事by 鼻毛ぷいぷい » 2017年7月09日(日) 20:17

お世話になります。
戦闘時の行動回数ですが、標準だと同じアクターもしくはエネミーが2、3回行動する時、連続で行動しますが、
続けて連続行動ではなく、

アクターA 攻撃
エネミーB 攻撃
アクターA スキル
エネミーB 攻撃
アクターB 防御
エネミーA スキル

といった具合に、行動順が入り乱れる感じのスクリプトが欲しいため、リクエストさせていただきました。
また、出来るだけ選択したコマンド順で実行される仕様の方が嬉しいです。
是非、宜しくお願い致します。
最後に編集したユーザー 鼻毛ぷいぷい on 2017年7月13日(木) 01:41 [ 編集 1 回目 ]

TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 戦闘時の行動回数

投稿記事by TOMO » 2017年7月10日(月) 06:22

鳥小屋.txt様の「ターン消費無しスキルさん+」はどうですか?
鼻毛ぷいぷい

Re: 戦闘時の行動回数

投稿記事by 鼻毛ぷいぷい » 2017年7月10日(月) 18:25

>>TOMO様

ご返信ありがとうございます。
一応私の方からも鳥小屋.txt様のスクリプトを拝見し、理想に近いスクリプトだったのですが、
どうやらスキルの速度依存で各選択したコマンドが実行されるようでして、

攻撃→防御→スキル といった順番にコマンド選択しても実際には速度依存の関係で
防御→攻撃→スキル といった感じに実行されてしまいます。

どちらかというとDAIpage様がRGSS2素材として公開されている「戦闘時複数回行動」というスクリプトの方が理想に近いかもしれません。
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 戦闘時の行動回数

投稿記事by TOMO » 2017年7月11日(火) 02:12

敏捷性や速度補正等を無視した仕様となってますが、これでいいのですか?

コード: 全て選択

module BattleManager
  def self.make_action_orders
    @action_battlers = []
    unless @surprise # 不意打ちでない
      $game_party.members.each do |member|
        @action_battlers += [member] * member.actions.size # 行動回数分バトラー追加
      end
    end
    unless @preemptive # 先制でない
      $game_troop.members.each do |member|
        @action_battlers += [member] * member.actions.size # 行動回数分バトラー追加
      end
    end
    @action_battlers.sort_by!{rand} # ランダム順にソート
  end
end
鼻毛ぷいぷい

Re: 戦闘時の行動回数

投稿記事by 鼻毛ぷいぷい » 2017年7月11日(火) 08:43

>>TOMO様

ご対応してくださり誠にありがとうございます!
選択したコマンド通りに実行されるという所が理想にピッタリの仕様だったのですが、
誠に恐れながら、敏捷性の方は考慮されるという仕様に出来ませんでしょうか?

具体的には、2回目以降は敏捷性が落ちて行動順が遅れていく、という仕様には出来ませんでしょうか?
出来れば%形式での敏捷性低下のが嬉しいです。

そうすれば正に

敏捷性100 アクターA 攻撃
敏捷性 90 エネミーB 攻撃
敏捷性 80 アクターA スキル
敏捷性 70 エネミーB 攻撃
敏捷性 60 アクターB 防御
敏捷性 50 エネミーA スキル

のような理想にピッタリのスクリプトになりそうです。
どうか宜しくお願い致します。
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 戦闘時の行動回数

投稿記事by TOMO » 2017年7月12日(水) 20:13

多分これで出来ます

コード: 全て選択

module BattleManager
  def self.make_action_orders
    n = 10
    battlers = {}
    @action_battlers = []
    unless @surprise
      $game_party.members.each do |member|
        member.actions.size.times do |i|
          battlers[member.make_speed * ((100.0 - n * i) / 100)] = member
        end
      end
    end
    unless @surprise
      $game_troop.members.each do |member|
        member.actions.size.times do |i|
          battlers[member.make_speed * ((100.0 - n * i) / 100)] = member
        end
      end
    end
    battlers.sort{|a, b| b[0] - a[0] }.each do |data|
      @action_battlers.push(data[1])
    end
  end
end

class Scene_Battle
  alias tomo_action_order_process_action process_action
  def process_action
    tomo_action_order_process_action
    @subject = BattleManager.next_subject
  end
end

一回毎に10%低下するようにしてます
(「n = 10」の所の数値を変えて下さい)


ちなみに、速度補正がマイナスのスキルがある場合、
その補正で順番が後ろの方になる事があります

元々そういう仕様だったので、特に弄ってません


あと、前のランダム順のスクリプトを使う人は、
上記スクリプトの「Scene_Battle」の所の処理を入れて使って下さい
(入れないと、間に他キャラが割り込めません)
鼻毛ぷいぷい

Re: 戦闘時の行動回数

投稿記事by 鼻毛ぷいぷい » 2017年7月12日(水) 20:43

>>TOMO様

おお、正に理想的なスクリプトです、ありがとうございます!
選択したコマンド順で実行され且つ敏捷性が考慮される素晴らしいスクリプトです!

ただ、テストバトルしてみた結果、どうも行動が途中で終わるっぽいんです…

アクターA 攻撃
アクターB 防御
アクターB 攻撃
エネミーA 攻撃
2ターン目開始

アクターAとエネミーAがそれぞれまだ一つ行動が残されてるのに関わらず、これで1ターン目が終わり、2ターン目開始、といった感じです。
全員分の行動が最後まで終わってから2ターン目開始、という感じには出来ませんでしょうか?
何度もお願いして本当に申し訳ございません…
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 戦闘時の行動回数

投稿記事by TOMO » 2017年7月12日(水) 23:11

多分私の方が悪いので気にしなくていいです

スクリプト内の

コード: 全て選択

member.make_speed * ((100.0 - n * i) / 100)

を、両方とも

コード: 全て選択

member.make_speed * ((100.0 - n * i) / 100) + rand

としてみて下さい

これで直るはずです
鼻毛ぷいぷい

Re: 戦闘時の行動回数

投稿記事by 鼻毛ぷいぷい » 2017年7月13日(木) 01:40

>>TOMO様

おお、出来ました!!
これで文句無しの理想のスクリプトになりました!
お忙しい中リクエストに応えてくださって誠にありがとうございました!!

これにて解決済みとさせていただきます。
本当にありがとうございました!

“VX / Ace:スクリプト素材のリクエスト” へ戻る