151 lines
No EOL
6.6 KiB
Ruby
151 lines
No EOL
6.6 KiB
Ruby
|
||
|
||
=begin
|
||
|
||
トリス 選択肢不具合修正 ver1
|
||
|
||
|
||
スクリプト「選択肢拡張」の不具合
|
||
・1文章の表示→2選択肢→3文章の表示→4選択肢
|
||
の順番でイベントが実行された場合、4選択肢が表示されない
|
||
|
||
|
||
原因
|
||
選択肢を開始する時の処理で、
|
||
「選択肢ウインドウが完全に閉じていなければ、選択肢開始をキャンセル」としてある
|
||
|
||
『決定キーを素早く連打する』か『メッセージスキップのキーを押す』ことによって
|
||
文章を早送りすると「2選択肢で出したウインドウが閉じている途中」の時点で
|
||
4選択肢イベントを実行し、まだウインドウが完全に閉じていないためキャンセルされる
|
||
|
||
|
||
対処 どちらか選択
|
||
①選択肢を開始する時の「完全に閉じていなければキャンセル」をなくす
|
||
ただしこのキャンセルの意図が分からないため、
|
||
なくすことで別の不具合が起きる可能性がある(多分ないと思う)
|
||
②選択肢の決定後に「選択肢ウインドウが完全に閉じるまで、イベント進行を待機」する
|
||
これで「ウインドウが閉じる途中で4選択肢イベントを実行」することはない
|
||
閉じるのを待つ分、少し動きがもたつく
|
||
|
||
=end
|
||
|
||
module MessageSkip
|
||
|
||
# 対処方法
|
||
# 1: 「完全に閉じていなければキャンセル」をなくす 不具合の可能性あり
|
||
# 2: 選択肢の後で「選択肢ウインドウが完全に閉じるまで、イベント進行を待機」
|
||
MODE = 2
|
||
|
||
end
|
||
|
||
=begin
|
||
|
||
補足A
|
||
・1文章の表示→2選択肢→3文章の表示→4選択肢
|
||
の順番でのみ不具合が起きる理由
|
||
|
||
・2選択肢→3文章の表示
|
||
の順番でイベントが実行された場合、
|
||
「選択肢ウインドウを閉じる」のと「次の文章を表示する」のを並行して行う
|
||
|
||
・1文章の表示→2選択肢
|
||
の順番でイベントが実行された場合、
|
||
「文章ウインドウを出したまま選択肢ウインドウを出す」
|
||
|
||
イベント全体が
|
||
・選択肢→文章の表示→選択肢
|
||
なら、「文章ウインドウを開く」間に「選択肢ウインドウを閉じる」が完了するため
|
||
どんなに早送りしても「選択肢が完全に閉じる前に次の選択肢イベントを実行」しない
|
||
|
||
・1文章の表示→2選択肢→3文章の表示→4選択肢
|
||
なら、「2選択肢を選択し、選択肢ウインドウが閉じ始める」段階では
|
||
「1文章ウインドウが開いたまま」なので、同時に「3文章の内容を表示」が始まり
|
||
早送りすることで「選択肢が完全に閉じる前に次の選択肢イベントを実行」が可能
|
||
|
||
|
||
|
||
補足B
|
||
中央のおっさんも
|
||
・1文章の表示→2選択肢→3文章の表示→4選択肢
|
||
の順番になっているのに不具合が起きない理由
|
||
|
||
下の兵士も中央のおっさんも、下から話せば正常で、上から話せば不具合が起きる
|
||
|
||
|
||
スクリプト「吹きだしウィンドウVXAce」が原因 他素材との競合かどうかは不明
|
||
『上方向に吹き出しが出ると、文章が連続していてもウインドウを閉じて開きなおす』
|
||
|
||
下から話しかける(上方向に吹き出しが出る)場合のみ、
|
||
・文章の表示→文章の表示
|
||
の順番でも「文章ウインドウを閉じてから、また開いて次の文章を表示」となる
|
||
|
||
|
||
そして間に選択肢が入って
|
||
・1文章の表示→2選択肢→3文章の表示
|
||
の順番になると、選択中は1文章ウインドウは出ており、決定した後に
|
||
「2選択肢ウインドウを閉じる」と同時に「1文章ウインドウが開いていれば閉じる」
|
||
両方のウインドウが閉じてから、3文章ウインドウを開きなおして3文章の内容を表示
|
||
つまり「選択肢と文章閉じる→文章開く」
|
||
となる
|
||
|
||
このため「3文章を表示開始する時には、すでに2選択肢ウインドウが閉じている」
|
||
という点では対処②と同様であり、4選択肢の不具合が起きない
|
||
|
||
なお対処②とこの仕様が合わさると
|
||
・「2選択肢ウインドウを閉じる」で完全に閉じるまで「対処②の機能で待機」
|
||
・2選択肢ウインドウが完全に閉じた後、「1文章ウインドウが開いていれば閉じる」
|
||
・1文章ウインドウが完全に閉じた後、3文章ウインドウを開いて、3文章の内容を表示
|
||
となり、「選択肢閉じる→文章閉じる→文章開く」で動きのもたつきが大きい
|
||
|
||
|
||
=end
|
||
|
||
if MessageSkip::MODE == 1
|
||
#==============================================================================
|
||
# ■ Window_ChoiceList
|
||
#==============================================================================
|
||
class Window_ChoiceList
|
||
#--------------------------------------------------------------------------
|
||
# ☆ 入力処理の開始
|
||
#--------------------------------------------------------------------------
|
||
def start
|
||
last_choices = @list.collect {|c| c[:name] }
|
||
update_placement
|
||
refresh
|
||
unless WdTk::ChoiceEX::Store && last_choices == $game_message.choices
|
||
select(0)
|
||
end
|
||
open
|
||
activate
|
||
end
|
||
end
|
||
end
|
||
|
||
if MessageSkip::MODE == 2
|
||
#==============================================================================
|
||
# ■ Window_Message
|
||
#==============================================================================
|
||
class Window_Message < Window_Base
|
||
#--------------------------------------------------------------------------
|
||
# ● 選択肢の入力処理
|
||
#--------------------------------------------------------------------------
|
||
def input_choice
|
||
@choice_window.start
|
||
Fiber.yield while @choice_window.active or !@choice_window.close?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 数値の入力処理
|
||
#--------------------------------------------------------------------------
|
||
def input_number
|
||
@number_window.start
|
||
Fiber.yield while @number_window.active or !@number_window.close?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アイテムの選択処理
|
||
#--------------------------------------------------------------------------
|
||
def input_item
|
||
@item_window.start
|
||
Fiber.yield while @item_window.active or !@item_window.close?
|
||
end
|
||
end
|
||
end |