#==============================================================================
# 「クラシック選択肢」(ACE) ver1.0
# 製作者:奈々(なな)
# へぷたなすくろーる http://heptanas.mamagoto.com/
#
# ◇使用規約
# 使用される場合はスクリプト作成者として「奈々」を明記して下さい。
# このスクリプトを改変したり、改変したものを配布するなどは自由ですが
# その場合も元のスクリプトの作成者として名前は載せて下さい。
# その他、詳しい利用規約はブログを参照して下さい。
#
#------------------------------------------------------------------------------
#
# 「選択肢の表示」を別枠ではなくメッセージウィンドウ内に配置します。
# (特にスクリプトの設定をする必要はありません)
#
# 「メッセージの表示」の直後に「選択肢の表示」を行うことで
# 顔グラフィックやウィンドウの設定を引き継ぐことができます。
# (メッセージの文章を空欄にすれば、選択肢だけ表示することも可能です)
# またウィンドウに収まる場合には、文章の下に選択肢が続けて表示されます。
#
#==============================================================================
#==============================================================================
# ■ Game_Message
#------------------------------------------------------------------------------
# 文章や選択肢などを表示するメッセージウィンドウの状態を扱うクラスです。この
# クラスのインスタンスは $game_message で参照されます。
#==============================================================================
class Game_Message
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :texts # 文章の配列(行単位)
end
#==============================================================================
# ■ Window_ChoiceList
#------------------------------------------------------------------------------
# イベントコマンド[選択肢の表示]に使用するウィンドウです。
#==============================================================================
class Window_ChoiceList < Window_Command
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias cc_initialize initialize
def initialize(message_window)
cc_initialize(message_window)
self.opacity = 0
self.z = @message_window.z + 1
end
#--------------------------------------------------------------------------
# ● 入力処理の開始
#--------------------------------------------------------------------------
def start(y_mod)
update_placement(y_mod)
refresh
select(0)
open
activate
end
#--------------------------------------------------------------------------
# ● ウィンドウ位置の更新
#--------------------------------------------------------------------------
def update_placement(y_mod)
self.width = @message_window.width - @message_window.new_line_x
self.height = fitting_height($game_message.choices.size)
self.x = @message_window.x + @message_window.new_line_x
self.y = @message_window.y + y_mod
end
end
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
# 文章表示に使うメッセージウィンドウです。
#==============================================================================
class Window_Message < Window_Base
#--------------------------------------------------------------------------
# ● 選択肢の入力処理
#--------------------------------------------------------------------------
def input_choice
if $game_message.texts == [""]
@choice_window.start(0)
elsif $game_message.texts.size + $game_message.choices.size > visible_line_number
input_pause unless @pause_skip
new_page("", {})
@choice_window.start(0)
else
@choice_window.start($game_message.texts.size * line_height)
end
Fiber.yield while @choice_window.active
end
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
# イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● 選択肢の表示
#--------------------------------------------------------------------------
def command_102
wait_for_message
$game_message.face_name = ""
$game_message.face_index = 0
$game_message.background = 0
$game_message.position = 2
$game_message.add("")
setup_choices(@params)
wait_for_message
end
end