ありがとうございます。
おかげでようやくオート戦闘出来るようになりました。
ただ恐縮ですが、あと使い方に関して3つばかり分からないところがありまして・・・
まず一番目に、291~296行目辺りのスキルタイプの設定で、
スキルタイプの3番目以降の設定はどうやればいいのでしょうか。
二番目に、コスト制限とリスク制限の違い、というかリスク制限というのが
ちょっとよく分からなくて・・・HPが少ない時の行動制限という意味なのでしょうか。。
三番目に、443行目の「自身が行動制約ありとして扱うステートIDの配列(加算設定)」
の意味もちょっとよく分からなくて・・・
行動制約ありとして扱うステートIDの配列とあるけど、デフォで設定されてるのは
2,3,4と、どれも実際は行動制約のないものが選ばれていて (。´・ω・)?
みたいな状態になってしまっております・・・
自動戦闘 + 自動戦闘強化AI
Re: 自動戦闘 + 自動戦闘強化AI
1:3番目以降の使用は想定していません。想定されていませんが仕様候補には含まれます。
2:コスト制限はHP、MP、TP消費量が一定値以上の高コストスキルを仕様候補から除外するための設定です。リスク制限は命中率や相手の反撃、魔法反射率が高すぎる場合にスキルを仕様候補から除外するための設定です。どちらも1.0に近いほど基準が緩くなりますが効率が悪くなります。2の設定はそのままの設定をおすすめします。
3:毒や命中率低下ステートなどの行動制約のないステートを治療(ステート解除)が必要な行動制約ありのステートとして扱うための設定です。設定されていないステートは治療不要と判断されます。
2:コスト制限はHP、MP、TP消費量が一定値以上の高コストスキルを仕様候補から除外するための設定です。リスク制限は命中率や相手の反撃、魔法反射率が高すぎる場合にスキルを仕様候補から除外するための設定です。どちらも1.0に近いほど基準が緩くなりますが効率が悪くなります。2の設定はそのままの設定をおすすめします。
3:毒や命中率低下ステートなどの行動制約のないステートを治療(ステート解除)が必要な行動制約ありのステートとして扱うための設定です。設定されていないステートは治療不要と判断されます。
Re: 自動戦闘 + 自動戦闘強化AI
返答ありがとうございます。
設定はちょっと複雑でしたけど入れてしまえば
他のオート戦闘系よりも精度が高くて使いやすいです。
いろいろと教えて頂いて本当にありがとうございました。
設定はちょっと複雑でしたけど入れてしまえば
他のオート戦闘系よりも精度が高くて使いやすいです。
いろいろと教えて頂いて本当にありがとうございました。
Re: 自動戦闘 + 自動戦闘強化AI
はじめまして。にいちゃんと申します。
スクリプトの公開をしていただき、ありがとうございます。
要望になると思いますが、PT編成(戦闘中にメンバーを変更する)に対応されているでしょうか。
私は『誰かへの宣戦布告』ブログにある『レーネさんの素材まとめ』 にある『戦闘中にPT編成 RGSS3 ももまるさんのXPスタイルバトル対応版』というスクリプトを使用します。
戦闘中にメンバーを変更すると、加入したメンバーの作戦の変更ができなくなります。
全体指示では変更できますが、個別に変更ができない状況です。
できれば、加入したメンバーの作戦も個別に変更できるようにしたいです。
お忙しいところ申し訳ありませんが、ご検討をよろしくお願いいたします。
スクリプトの公開をしていただき、ありがとうございます。
要望になると思いますが、PT編成(戦闘中にメンバーを変更する)に対応されているでしょうか。
私は『誰かへの宣戦布告』ブログにある『レーネさんの素材まとめ』 にある『戦闘中にPT編成 RGSS3 ももまるさんのXPスタイルバトル対応版』というスクリプトを使用します。
戦闘中にメンバーを変更すると、加入したメンバーの作戦の変更ができなくなります。
全体指示では変更できますが、個別に変更ができない状況です。
できれば、加入したメンバーの作戦も個別に変更できるようにしたいです。
お忙しいところ申し訳ありませんが、ご検討をよろしくお願いいたします。
Re: 自動戦闘 + 自動戦闘強化AI
お返事が遅れてしまい申し訳ありません。
こちらのスクリプトを試していただけないでしょうか?急ピッチで修正したので別に不具合が生じるかもしれません。
こちらのスクリプトを試していただけないでしょうか?急ピッチで修正したので別に不具合が生じるかもしれません。
コード: 全て選択
#==============================================================================
# ■ 自動戦闘強化AI:戦闘用
#------------------------------------------------------------------------------
#
#■必要なスクリプト
# ・自動戦闘強化AI 2.0.2以上
# ・自動戦闘強化AI:メニュー用
# ・自動戦闘コマンド
#
#
#■導入位置
# "▼ 素材"から"▼ メイン"の範囲であればどこでも構いません。
#
#
# *このスクリプトはパーティコマンドに項目を追加する必要がない場合は導入する
# 必要はありません。
#==============================================================================
module Reinforce_Auto_AI
#==============================================================================
# ~↓設定ここから↓~
#==============================================================================
#アクター選択ウィンドウのY座標
ACTOR_WINDOW_Y = 0
#アクター選択ウィンドウの最大表示行数
ACTOR_WINDOW_LINE_NUMBER = 6
#アクター名のテキストの幅
ACTOR_NAME_TEXT_WIDTH = 100
#"作戦"のテキスト
ACTOR_OPERATION_TEXT = "作戦:"
#"作戦"のテキスト幅
ACTOR_OPERATION_TEXT_WIDTH = 50
#"作戦"のテキストの色
ACTOR_OPERATION_TEXT_COLOR = Color.new(102,204,64)
#作戦名のテキストX座標調整
ADJUST_OPERATION_TEXT_X = -5
#作戦名のテキストの色
ACTOR_OPERATION_NAME_TEXT_COLOR = Color.new(255,120,76)
#自動戦闘開始を追加する
ACTOR_OPERATION_BATTLE_START = true
#自動戦闘開始のテキストの色
ACTOR_OPERATION_BATTLE_START_TEXT_COLOR = Color.new(255,255,255)
#全体指示を追加する
ACTOR_OPERATION_ALL_SET = true
#全体指示のテキスト
ACTOR_OPERATION_ALL_SET_TEXT = "- 全体指示 -"
#全体指示のテキストの色
ACTOR_OPERATION_ALL_SET_TEXT_COLOR = Color.new(102,204,64)
#==============================================================================
# ~↑設定ここまで↑~
#==============================================================================
#==============================================================================
# ■ Operation_Settings
#==============================================================================
module Operation_Settings
#インクルード用
end
#==============================================================================
# ■ Window_Operation_Select_Actor
#==============================================================================
class Window_Operation_Select_Actor < ::Window_Command
include Operation_Settings
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y)
super
self.y = ACTOR_WINDOW_Y
self.openness = 0
actor_select_cancel()
end
#--------------------------------------------------------------------------
# ● ウィンドウ幅の取得
#--------------------------------------------------------------------------
def window_width
return Graphics.width
end
#--------------------------------------------------------------------------
# ● ウィンドウ高さの取得
#--------------------------------------------------------------------------
def window_height
return fitting_height(visible_line_number)
end
#--------------------------------------------------------------------------
# ● 表示行数の取得
#--------------------------------------------------------------------------
def visible_line_number
return [item_max(),ACTOR_WINDOW_LINE_NUMBER].min
end
#--------------------------------------------------------------------------
# ● 設定:デフォルトの作戦
#--------------------------------------------------------------------------
def operation_code_0
return {operation_name: DEAFAULT_EVALUATE_ACTOR_SETTINGS[:operation_name]}
end
#--------------------------------------------------------------------------
# ●~*
#--------------------------------------------------------------------------
def call
actor_select_ok()
end
#--------------------------------------------------------------------------
# ● コマンドリストの作成
#--------------------------------------------------------------------------
def make_command_list
battle_members = $game_party.battle_members
battle_members.delete_if{|actor|actor.auto_battle?}
@ok_handler_list = []
#自動戦闘開始
if ACTOR_OPERATION_BATTLE_START
add_command(AUTO_COMMAND_NAME,:auto_battle_start,true)
end
#全体指示
if ACTOR_OPERATION_ALL_SET
method_name = :all_operation_set
add_command(ACTOR_OPERATION_ALL_SET_TEXT,method_name,true,battle_members)
@ok_handler_list << method_name
end
#個別
battle_members.each do |actor|
operation_code = actor.auto_operation
unless operation_code
actor.auto_operation = DEAFAULT_ACTOR_OPERATION
end
method_name = operation_code_method_name(actor.auto_operation)
@ok_handler_list << actor
unless respond_to?(method_name)
actor.auto_operation = DEAFAULT_ACTOR_OPERATION
method_name = operation_code_method_name(actor.auto_operation)
end
command_name = [actor,__send__(method_name)[:operation_name]]
add_command(command_name,actor,true,actor)
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
def draw_item(index)
command_text = command_name(index)
text_rect = item_rect_for_text(index)
max_width = text_rect.width - text_rect.x
if command_text.is_a?(Array)
#アクター名
text_rect.width = ACTOR_NAME_TEXT_WIDTH
change_color(normal_color,true)
draw_text(text_rect,command_text[0].name,0)
#"作戦"
text_rect.x += text_rect.width + 20
text_rect.width = ACTOR_OPERATION_TEXT_WIDTH
change_color(ACTOR_OPERATION_TEXT_COLOR,true)
draw_text(text_rect,ACTOR_OPERATION_TEXT,0)
#作戦名
text_rect.x += text_rect.width + ADJUST_OPERATION_TEXT_X
text_rect.width = max_width - text_rect.x
change_color(ACTOR_OPERATION_NAME_TEXT_COLOR,true)
draw_text(text_rect,command_text[1],0)
elsif command_text.equal?(AUTO_COMMAND_NAME)
#自動戦闘開始
change_color(ACTOR_OPERATION_BATTLE_START_TEXT_COLOR,true)
draw_text(text_rect,command_text,1)
elsif command_text.equal?(ACTOR_OPERATION_ALL_SET_TEXT)
#全体指示
change_color(ACTOR_OPERATION_ALL_SET_TEXT_COLOR,true)
draw_text(text_rect,command_text,1)
end
end
#--------------------------------------------------------------------------
# ● コマンドの設定
#--------------------------------------------------------------------------
def setup_actor_command
refresh()
select_ok_handler(&@select_ok)
self.height = window_height()
activate()
select(0)
open()
end
#--------------------------------------------------------------------------
# ● コマンドの選択時のハンドラを設定
#--------------------------------------------------------------------------
def select_ok_handler(&block)
@ok_handler_list.each{|method_name|set_handler(method_name,self)}
@select_ok = block
end
#--------------------------------------------------------------------------
# ● 共通ハンドラを設定
#--------------------------------------------------------------------------
def common_handler(block)
return ->{actor_select_cancel() ; block.()}
end
#--------------------------------------------------------------------------
# ● 自動戦闘開始時のハンドラを設定
#--------------------------------------------------------------------------
def auto_battle_start_handler(&block)
set_handler(:auto_battle_start,common_handler(block))
end
#--------------------------------------------------------------------------
# ● コマンド選択キャンセル時のハンドラを設定
#--------------------------------------------------------------------------
def select_cancel_handler(&block)
set_handler(:cancel,common_handler(block))
end
#--------------------------------------------------------------------------
# ● コマンド選択
#--------------------------------------------------------------------------
def actor_select_ok
@select_ok.() if @select_ok
end
#--------------------------------------------------------------------------
# ● コマンド選択キャンセル
#--------------------------------------------------------------------------
def actor_select_cancel
unselect()
deactivate()
close()
end
end
end
#==============================================================================
# ■ Window_PartyCommand
#------------------------------------------------------------------------------
# バトル画面で、戦うか逃げるかを選択するウィンドウです。
#==============================================================================
class Window_PartyCommand < Window_Command
#--------------------------------------------------------------------------
# ● コマンドリストの作成
#--------------------------------------------------------------------------
alias _make_command_list_reinforce_auto_ai make_command_list
def make_command_list
_make_command_list_reinforce_auto_ai()
add_command(Reinforce_Auto_AI::MENU_COMMAND_NAME,:select_operation,true)
end
end
#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 全ウィンドウの作成
#--------------------------------------------------------------------------
alias _create_all_windows_reinforce_auto_ai create_all_windows
def create_all_windows
_create_all_windows_reinforce_auto_ai()
create_operation_select_actor_window()
create_command_operation()
end
#--------------------------------------------------------------------------
# ● パーティコマンドウィンドウの作成
#--------------------------------------------------------------------------
alias _create_party_command_window_reinforce_auto_ai create_party_command_window
def create_party_command_window
_create_party_command_window_reinforce_auto_ai()
@party_command_window.set_handler(:select_operation,->{
@actor_select_operation_window.setup_actor_command
})
end
#--------------------------------------------------------------------------
# ● 作戦選択用アクターウィンドウの作成
#--------------------------------------------------------------------------
def create_operation_select_actor_window
@actor_select_operation_window =
Reinforce_Auto_AI::Window_Operation_Select_Actor.new(0,0)
@actor_select_operation_window.select_ok_handler do
select_actor = @actor_select_operation_window.current_ext
select_actor = select_actor.index unless select_actor.is_a?(Array)
@operation_window.setup_operation_command(select_actor)
end
if Reinforce_Auto_AI::ACTOR_OPERATION_BATTLE_START
@actor_select_operation_window.auto_battle_start_handler do
auto_battle_start_handler()
end
end
@actor_select_operation_window.select_cancel_handler do
@party_command_window.activate
end
end
#--------------------------------------------------------------------------
# ● 作戦ウィンドウの作成
#--------------------------------------------------------------------------
def create_command_operation
@operation_window = Reinforce_Auto_AI::Window_AI_Operation.new(0,0)
if Reinforce_Auto_AI::MENU_COORDINATE_CENTER
@operation_window.x = (Graphics.width - @operation_window.width) / 2
@operation_window.y = (Graphics.height - @operation_window.height) / 2
end
@operation_window.select_ok_handler do
@actor_select_operation_window.refresh
@actor_select_operation_window.activate
end
@operation_window.select_cancel_handler do
@actor_select_operation_window.activate
end
end
end
Re: 自動戦闘 + 自動戦闘強化AI
SBR殿
お返事が遅れてしまい、申し訳ありません。
確認をさせていただいたところ、無事に動作確認を致しました。
加入したアクターも個別に作戦変更ができました。
お忙しいところ、ご対応をしていただき、ありがとうございました。
今後もよろしくお願いいたします。
お返事が遅れてしまい、申し訳ありません。
確認をさせていただいたところ、無事に動作確認を致しました。
加入したアクターも個別に作戦変更ができました。
お忙しいところ、ご対応をしていただき、ありがとうございました。
今後もよろしくお願いいたします。
自動戦闘強化AI 2.0.4α
2.0.4試作版(α)です。前バージョンのバグ修正、処理速度の向上を図りました。
動作チェックを行う暇がないので試作版として公開します。
11/28 テスト用のイベントの不具合の修正。(スクリプトの問題ではありません)
動作チェックを行う暇がないので試作版として公開します。
11/28 テスト用のイベントの不具合の修正。(スクリプトの問題ではありません)
Re: 自動戦闘 + 自動戦闘強化AI
サイドビューと併用するとめちゃめちゃ面白いけれど
重いです
なんとかならないでしょうか。。。
重いです
なんとかならないでしょうか。。。
Re: 自動戦闘 + 自動戦闘強化AI
はじめまして。
こちらのスクリプトを導入させていただいたのですが、
#攻撃可能対象が1体だけの時は全体攻撃と対象がランダムな攻撃を禁止する
limitation_whole_attack: false,
このようにやっても、敵が一体だと全体攻撃をしてくれません。
あと、通常攻撃も自動だとしてくれないのですが、どうしたらいいですか?
こちらのスクリプトを導入させていただいたのですが、
#攻撃可能対象が1体だけの時は全体攻撃と対象がランダムな攻撃を禁止する
limitation_whole_attack: false,
このようにやっても、敵が一体だと全体攻撃をしてくれません。
あと、通常攻撃も自動だとしてくれないのですが、どうしたらいいですか?