プラグインAltMenuScreen3について

アバター
sairi
記事: 105
登録日時: 2016年2月05日(金) 16:37
連絡を取る:

プラグインAltMenuScreen3について

投稿記事by sairi » 2016年2月08日(月) 02:39

以前の質問から余り間隔が空いていないので大変申し訳ないのですが知恵をお貸し下さい。
なんとか「AltMenuScreen3」のソースを読める様にはなってきたのですが、
ステータスウインドウの部分にあった↓
this.drawActorIcons(actor, x, bottom - lineHeight * 1, width);
の部分が、消しても直しても画面に何の変化もないのでどうしても意味がわからなくて、
jsにあるコアやマネージャーを一通り検索かけましたが分からず、
特にface等の記述が無くてもステータスとされる部分にキャラクターの顔グラフィックが
挿入されるのが分かりません。
顔グラフィックを消して戦闘キャラに差し替えるのが最終的な目的なので、
無関係かも知れませんが宜しければお願いします。

名無し蛙
記事: 310
登録日時: 2015年11月23日(月) 02:46

Re: プラグインAltMenuScreen3について

投稿記事by 名無し蛙 » 2016年2月08日(月) 04:32

this.drawActorIcons(actor, x, bottom - lineHeight * 1, width);
の部分が、消しても直しても画面に何の変化もないのでどうしても意味がわからなくて、

ActorIconsとはアクターに付与されたステートアイコンの事です
毒や戦闘不能の時に表示すれば反映されている事を確認できるはずです

特にface等の記述が無くてもステータスとされる部分にキャラクターの顔グラフィックが
どこを確認したのかは分かりませんがステータス周りの顔グラフィック表示なら
this.drawActorFaceを呼び出してアクターに関連付けた顔グラフィックを表示しているはずですね
おそらく見るべきはWindow_MenuStatus.prototype.drawItemStatusではなく
Window_MenuStatus.prototype.drawItemImageではないでしょうか?

コードの書き方は十人十色なのでこちらの癖を刷り込ませないように
必要最小限の事しか言わないつもりだったんですが前回は言葉が足らなかったようですね。
向上心を持って自力で取り組むのは良い事だと思いますよ。
アバター
sairi
記事: 105
登録日時: 2016年2月05日(金) 16:37
連絡を取る:

Re: プラグインAltMenuScreen3について

投稿記事by sairi » 2016年2月08日(月) 19:33

名無し蛙様
前回に引き続いて有難う御座います。
サンプルも少なく、取り敢えず動けば良いという「癖」に至る段階の
随分手前におりますもので此方こそ理解出来ずご配慮を汲むことが出来ませんで申し訳ないです。
触り初めて今日で四日目でしたか、未だソースを見る都度眠気が来る様な輩です。

仰っていたWindow_MenuStatus.prototype.drawItemImageの部分なのですが、
差し替える指示をしている部分ですよね。違う画像を置くならここを流用すれば良いのでしょうが、
そもそもステータス画面に顔グラフィックを不要とした場合どうかと思って指示を
まるっと削除してみたのですがそれでも顔グラフィックはくっついてくるので、
どうしたらその仕様を変えられるのか分からなかった次第です。
何のオブジェクトを使ったから出るのかと思いまして。

そういうのが分かった上で自分がやりたい様に改変をしていった方が改造の幅が出るかと思いましたが
素直にやりたい事が出来る都度方法を聞いたのがこういう場ではシンプルで分かり易いですかね?

とりま ステータス画面の顔グラフィックを消したい、HPやMPのゲージ(バナー?)を消したいです。
毎度乱文につき、重ね重ねご迷惑おかけ致しますが宜しくお願いします。
名無し蛙
記事: 310
登録日時: 2015年11月23日(月) 02:46

Re: プラグインAltMenuScreen3について

投稿記事by 名無し蛙 » 2016年2月08日(月) 22:34

そもそもステータス画面に顔グラフィックを不要とした場合どうかと思って指示を
認識に齟齬がある気がします。この行から下で言及している
「ステータス画面」とはメニュー画面で表示される簡易ステータスの事ではなく
メニュー項目の「ステータス」から確認出来る画面という事でよろしいでしょうか?

それでしたら
Window_Status.prototype.drawBlock2内のthis.drawActorFace
消せば(コメントアウトすれば)顔グラフィックは消えます
また、
Window_Status.prototype.drawBasicInfo内の
this.drawActorHp(this._actor, x, y + lineHeight * 2);
this.drawActorMp(this._actor, x, y + lineHeight * 3);

を消せばHP/MPゲージは消えると思います
回答が見当外れならまた聞きなおしてください

素直にやりたい事が出来る都度方法を聞いたのがこういう場ではシンプルで分かり易いですかね?
成果に直結しない学習目的の質問は大いにけっこうだと思います
ただどうしても意図が汲みづらくなるので適切な回答が難しくなると思いますね
アバター
sairi
記事: 105
登録日時: 2016年2月05日(金) 16:37
連絡を取る:

Re: プラグインAltMenuScreen3について

投稿記事by sairi » 2016年2月10日(水) 23:10

遅ればせ確認しました、済みません。
えーとステータスウインドウと言った方が良かったのですかね、いずれ
ステータス画面も弄りたかったので参考にはなりましたけれども。
有難う御座います。

仰っているコードはrpg_windows.jsの中ですよね?
そちらのデフォルトではなくあくまで外部プラグインからどうにかしてみたかったのですが
(元をガチに弄りすぎて分からなくなってもおっかないなあと思いまして_(:D」┌)_)
ダメでしょうか…それから、顔グラフィックは確かにステータス画面から消えていましたが
HP、MPのバナーだけでなく数字まで消えていました。
数字だけは表示を残しておきたいのでバナーと言ってみたのですが、難しいですね…。
数字に重なってあるのオレンジ色とか青い長方形の部分です。
取り敢えず此方は別のプラグインで弄って此方は消す事が出来ました!

済みません色々と未だに箇所をどういう名称で言えばいいものか分かりませんで御手を患わせます。
改めまして宜しくお願いします。
名無し蛙
記事: 310
登録日時: 2015年11月23日(月) 02:46

Re: プラグインAltMenuScreen3について

投稿記事by 名無し蛙 » 2016年2月11日(木) 10:10

sairiさん
改めて聞くのも恐縮ですが変数というものはご存知でしょうか?
ツクールの変数ではなくjavascriptの変数です。例えば

var hensuu = 5; ...①
hensuu = 10; ...②

①ではhensuuという入れ物を作り5という数値を代入しています。
②では既に存在しているhensuuという入れ物に10という数値を代入しています。
それでは②の処理を終えたあとhensuuの中には何が入っているか?
答えは10という数値です。つまり①でhensuuに5が代入され②で10に上書きされた、という事になります。
ツクールMVで言うところのプラグインとはこの仕組みを応用したものです。

例えばrpg_scenes.jsの218行目にこのような処理があります。

コード: 全て選択

Scene_Boot.prototype.updateDocumentTitle = function() {
    document.title = $dataSystem.gameTitle;
};

これはScene_Boot.prototype.updateDocumentTitleという変数に
function() { document.title = $dataSystem.gameTitle; }という関数オブジェクトを代入する処理です。
次に外部プラグインに以下のコードをコピペしてください

コード: 全て選択

Scene_Boot.prototype.updateDocumentTitle = function() {
    document.title = "ツクマテ";
};

これはScene_Boot.prototype.updateDocumentTitleという既存の変数に
function() { document.title = "ツクマテ"; }という関数オブジェクトを代入する処理です。
テストプレイするとウィンドウバーに表示されていたゲームタイトル名が「ツクマテ」に変化すると思います。
このように関数が納められた既存の変数に新しい関数を上書きし処理を改変する、という物が大半のプラグインの内容です。
この辺の仕組みはプラグインを配布したり自作システムを組んでる人にとって
基本的な知識でありそれ故に前回のトピックですれ違いが発生したのではないか、と思います。

自作システムを組んでる人でも普通はrpg_windows.js等、元となっているファイルを直接改変したりしません。
今まで私が書いてきた事は全て
外部プラグインファイルに元となる処理をコピペした後に関数内容を部分改変する事を前提にしていると考えてください。

数字だけは表示を残しておきたいのでバナーと言ってみたのですが、難しいですね…。
長々と講釈を垂れてしまってので結論だけ。外部プラグインファイルに以下のコードをコピペしてください

コード: 全て選択

Window_Base.prototype.drawActorHp = function(actor, x, y, width) {
    width = width || 186;
    this.changeTextColor(this.systemColor());
    this.drawText(TextManager.hpA, x, y, 44);
    this.drawCurrentAndMax(actor.hp, actor.mhp, x, y, width,
                           this.hpColor(actor), this.normalColor());
};

これでゲーム中のゲージを伴うHP表示全てのゲージが消えると思います。
Window_BaseWindow_Statusに変える事でステータス画面のみ、
Window_MenuStatusに変える事でメニュー画面のステータスウィンドウのみの変更になります。
sairiさんの読解力なら同様の手順を踏む事でMPも消す事が出来ると思います。
アバター
sairi
記事: 105
登録日時: 2016年2月05日(金) 16:37
連絡を取る:

Re: プラグインAltMenuScreen3について

投稿記事by sairi » 2016年2月12日(金) 19:03

毎度御手を患わせて済みません。
変数、関数という概念はCSS、HTML、ツクールを弄っていた分程度には分かっている程度です。

えと、手前を踏まえて顔グラフィックを消すコードを描くなら
Window_MenuStatus.prototype.drawItemImage = function(index) {
var actor = $gameParty.members()[index];
var rect = this.itemRect(index);
this.changePaintOpacity(actor.isBattleMember());
// this.drawActorFace(actor, rect.x + 1, rect.y + 1, 144, rect.height - 2);
this.changePaintOpacity(true);
};
というのを何処かに入れろという事ですかね?取り敢えずそれで望んだ動作はしたようなのですが。
それから頂いたソースは、 || などよく分からないしググっても出て来ないコードもありましたが
幅と高さの設定はしているようなので、ゲージの存在はあるけれど
systemColorの値をnormalColorに書き換える事で透明化したという風に解釈しました。
それからWindow_Baseはウインドウを使う画面全般(上手く言えませんが)を指しているので
その部分をMenuStatusに変えればメニュー画面のステータスのみに適応されるという風に。

此方もHP、MP共々動作としては上手くいったのですが、もし内容が伝わっていなかったら
折角ご説明頂きましたのに申し訳ないです。

時間が空いた時に、「この一行は多分こういう事」というのを解釈してメモしながらやっていますもので
レスが不定期になりまして済みません。有難う御座いました。

“MV:質問” へ戻る