ページ 1 / 1
【解決済み】戦闘時の行動回数
Posted: 2017年7月09日(日) 20:17
by 鼻毛ぷいぷい
お世話になります。
戦闘時の行動回数ですが、標準だと同じアクターもしくはエネミーが2、3回行動する時、連続で行動しますが、
続けて連続行動ではなく、
アクターA 攻撃
エネミーB 攻撃
アクターA スキル
エネミーB 攻撃
アクターB 防御
エネミーA スキル
といった具合に、行動順が入り乱れる感じのスクリプトが欲しいため、リクエストさせていただきました。
また、出来るだけ選択したコマンド順で実行される仕様の方が嬉しいです。
是非、宜しくお願い致します。
Re: 戦闘時の行動回数
Posted: 2017年7月10日(月) 06:22
by TOMO
鳥小屋.txt様の「ターン消費無しスキルさん+」はどうですか?
Re: 戦闘時の行動回数
Posted: 2017年7月10日(月) 18:25
by 鼻毛ぷいぷい
>>TOMO様
ご返信ありがとうございます。
一応私の方からも鳥小屋.txt様のスクリプトを拝見し、理想に近いスクリプトだったのですが、
どうやらスキルの速度依存で各選択したコマンドが実行されるようでして、
攻撃→防御→スキル といった順番にコマンド選択しても実際には速度依存の関係で
防御→攻撃→スキル といった感じに実行されてしまいます。
どちらかというとDAIpage様がRGSS2素材として公開されている「戦闘時複数回行動」というスクリプトの方が理想に近いかもしれません。
Re: 戦闘時の行動回数
Posted: 2017年7月11日(火) 02:12
by TOMO
敏捷性や速度補正等を無視した仕様となってますが、これでいいのですか?
コード: 全て選択
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: 戦闘時の行動回数
Posted: 2017年7月11日(火) 08:43
by 鼻毛ぷいぷい
>>TOMO様
ご対応してくださり誠にありがとうございます!
選択したコマンド通りに実行されるという所が理想にピッタリの仕様だったのですが、
誠に恐れながら、敏捷性の方は考慮されるという仕様に出来ませんでしょうか?
具体的には、2回目以降は敏捷性が落ちて行動順が遅れていく、という仕様には出来ませんでしょうか?
出来れば%形式での敏捷性低下のが嬉しいです。
そうすれば正に
敏捷性100 アクターA 攻撃
敏捷性 90 エネミーB 攻撃
敏捷性 80 アクターA スキル
敏捷性 70 エネミーB 攻撃
敏捷性 60 アクターB 防御
敏捷性 50 エネミーA スキル
のような理想にピッタリのスクリプトになりそうです。
どうか宜しくお願い致します。
Re: 戦闘時の行動回数
Posted: 2017年7月12日(水) 20:13
by TOMO
多分これで出来ます
コード: 全て選択
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: 戦闘時の行動回数
Posted: 2017年7月12日(水) 20:43
by 鼻毛ぷいぷい
>>TOMO様
おお、正に理想的なスクリプトです、ありがとうございます!
選択したコマンド順で実行され且つ敏捷性が考慮される素晴らしいスクリプトです!
ただ、テストバトルしてみた結果、どうも行動が途中で終わるっぽいんです…
アクターA 攻撃
アクターB 防御
アクターB 攻撃
エネミーA 攻撃
2ターン目開始
アクターAとエネミーAがそれぞれまだ一つ行動が残されてるのに関わらず、これで1ターン目が終わり、2ターン目開始、といった感じです。
全員分の行動が最後まで終わってから2ターン目開始、という感じには出来ませんでしょうか?
何度もお願いして本当に申し訳ございません…
Re: 戦闘時の行動回数
Posted: 2017年7月12日(水) 23:11
by TOMO
多分私の方が悪いので気にしなくていいです
スクリプト内の
コード: 全て選択
member.make_speed * ((100.0 - n * i) / 100)
を、両方とも
コード: 全て選択
member.make_speed * ((100.0 - n * i) / 100) + rand
としてみて下さい
これで直るはずです
Re: 戦闘時の行動回数
Posted: 2017年7月13日(木) 01:40
by 鼻毛ぷいぷい
>>TOMO様
おお、出来ました!!
これで文句無しの理想のスクリプトになりました!
お忙しい中リクエストに応えてくださって誠にありがとうございました!!
これにて解決済みとさせていただきます。
本当にありがとうございました!