お返事

 2018-07-28
もうすぐ帰りまーす٩(๑>◡<๑)۶
また、1~2週間チェックできなくなると思います。


お返事は、続きから。

> ポリフェノール さん
フィーバーに関して、
FFのフィーバーを知らないので、全然イメージできてないですが、
プチスロットを使うということですよね?
フィーバーの発動条件にもよりますけど、イベントで組むとなると大分制限されそうですね。
ダメージも固定ダメージになりそうですし、戦闘行動の強制も使えそうですが、
メッセージとか不自然な感じになるかな?
行動するキャラや攻撃対象の取得とかも難しそうですね。
スキルでルーレット攻撃とかなら、できなくはなさそうな気もします。
自分ならどうするかと問われれば、しないかな?笑


メニュー等に関して、
カスタムメニューに限らずVXのスクリプトは、一切の仕様を覚えていないので、
間違っていたら申し訳ないです。

1)
シーンへの背景追加はできて、ウィンドウへの背景追加ができないということでしょうか?
それでしたら、シーンにもう一つ背景画像を追加すればよいのでは?
シーンクラスであれば、ターゲットウィンドウの表示や非表示の処理が書かれているので、
どこに何を追加すれば良いかがわかりやすいと思いますよ。
1.開始処理で非表示のスプライトを追加
2.ターゲットウィンドウの表示で、スプライトの位置設定と可視化
3.ターゲットウィンドウの非表示で、スプライトの不可視化
4.終了処理でスプライトの解放
ウィンドウへの背景追加は、③の質問と重複すると思いますので、そちらを参考にしてみてください。

それから、多人数パーティを入れて確認しましたが、エラーは出ませんでした。
ステータスの位置設定を人数分行っているでしょうか?
立ち絵の位置設定を人数分行っているでしょうか?


2)
サブコマンドのサンプルプロジェクトをコマンドスプライトに変えてみましたが、動作するようです。
ただ、サブコマンドはウィンドウ表示です。背景に画像を使う設定も無さそうですね。


3)
まず、思いつくのは Window_Base を再定義する方法ですが、
ウィンドウの表示順の問題があるので、z座標を管理すればプリセット程度では問題ないでしょうが、
凝ったウィンドウを実装したスクリプトなどは難しくなると思います。
簡単で面倒方法としては、すべてのウィンドウクラスを1つ1つ改変していくことでしょうか?
それぞれのクラスを個別に改変するので問題は起きないでしょうね。
そして、その実装方法を説明したものが講座の内容でした。
ただ、余白をなくすことを目的にしたものではなくて、余白の上に文字を書くことが目的なので、
ちょっと違うんですよね。で、そこが違ってくるとスクリプトに落とす作業が全く違ってきます。

講座では、ウィンドウにスプライトを重ねましたが、ウィンドウを重ねるほうが、作りやすいと思います。
矢印表示があるので、ウィンドウ枠を表示するだけのウィンドウを追加して、
元のウィンドウの枠を消して上に重ねたほうが作りやすいかな?
ウィンドウの移動やサイズ変更で、一方が変わったときに両方を調整するように機能を追加し、
本来1つのウィンドウを2つのウィンドウで表現しているので、z座標の管理も必要ですね。
とりあえず Window クラスのメソッドは、ほぼ再定義が必要かと思います。
描画関係はそのままで良いと思いますし、開閉処理も再定義のみで良いかな?

数は多くなりますが、z座標やウィンドウ内容の扱い以外は、特に頭を捻ることもないですね。
module BackWindow
def initialize(*args)
@__window = Window.new
super
self.padding = 0
self.z = self.z
self.windowskin = self.windowskin
self.opacity = 255
end
def dispose
unless @__window.disposed?
@__window.contents.dispose
@__window.dispose
end
super
end
def update
super
@__window.update
end
def padding
@padding
end
def padding=(value)
@padding = value
self.x = self.x
self.y = self.y
self.width = self.width
self.height = self.height
end
def windowskin=(value)
@__window.windowskin = value
super
end
def viewport=(value)
@__window.viewport = value
super
end
def active=(value)
@__window.active = value
super
end
def visible=(value)
@__window.visible = value
super
end
def pause
@__window.pause
end
def pause=(value)
@__window.pause = value
super(false)
end
def x
@__window.x
end
def x=(value)
super(value - 16 + @padding)
@__window.x = value
end
def y
@__window.y
end
def y=(value)
super(value - 16 + @padding)
@__window.y = value
end
def width=(value)
super(value + @padding * 2)
@__window.width = value
end
def height=(value)
super(value + @padding * 2)
@__window.height = value
end
def z=(value)
@__window.z = value - 1
super
end
def opacity=(value)
@__window.opacity = value
super(0)
end
def back_opacity
@__window.back_opacity
end
def back_opacity=(value)
@__window.back_opacity = value
super(0)
end
def openness=(value)
@__window.openness = value
super
end
end
実装例としては、こんな感じだと思います。
スクリプトに合わせて、各ウィンドウで調整して下さい。
モジュールの使い方は大丈夫でしょうか?
処理を適用したいウィンドウクラスに include BackWindow としていただければ。
プリセットのウィンドウであれば、そのままでも動くと思いますので、
class Window_Base
include BackWindow
end
と書いていただければ、すべてのウィンドウに適用されるかと思います。
コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/773-353794d6
≪ トップページ ≫
カレンダー
10 << 2019/11 >> 12
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリー
最近の記事
最近のコメント
タグクラウド

リンク