$gameMessageがらみのメンバ関数の動きがよくわかりません。

返信する
ZOO
記事: 24
登録日時: 2016年7月30日(土) 08:55

$gameMessageがらみのメンバ関数の動きがよくわかりません。

投稿記事 by ZOO »

マップにいる全員に提案を行い、承諾、もしくは拒否したアクターごとにメッセージを生成し、表示したいのですが
$gameMessageがらみのメンバ関数の動きがよくわかりません。
RPGツクールMVのコア.jsと有志が作っているリファレンスは見たのですが・・・。
以下ソース。

下記関数はガンパレードマーチ風の提案コマンドを実施した際に、アクターごとに承諾、拒否メッセージを各々別ウィンドウで表示する事が目的。
使いまわすために関数化。

----------------------------------------------------------------------------------------------------------
function fn_speak_Accept(actor_number,flagOKorNG) {

var note = $dataActors[actor_number].note; //アクターのメモ欄 自称、承諾テキスト、拒否テキスト
var text = note.split(','); //カンマで切り分け

var name = text[0] //アクターの名前
var ok = text[1]; //アクターが承諾した際の個別のテキスト
var ng = text[2]; //アクターが拒否した際の個別のテキスト

//falgOKorNGは承諾したか、拒否したかのフラグが入っている。
if (flagOKorNG === 'OK') {
//メッセージウィンドウ

$gameMessage.newPage();
$gameMessage.setFaceImage($dataActors[actor_number].name, 0);
$gameMessage.add(ok);

} else if (flagOKorNG === 'NG') {
//メッセージウィンドウ

$gameMessage.newPage();
$gameMessage.setFaceImage($dataActors[actor_number].name, 0);
$gameMessage.add(ng);

}
}

----------------------------------------------------------------------------------------------------------
グローバル変数$gameMessageのnewPage()で新規ページ?
setFaceImage()でイメージ指定、これは理解。
add(text)でテキストを表示?

これを実行すると最初のアクターのテキストは表示されるが、顔イメージが全て最後のアクターのものになってしまう。
newPage()で新規ページは作れているので、add()の後にメッセージウィンドウを手動で出力する関数があるものと考えるのですが、調べても見当たりませんでした。

$gameMessageがグローバル変数なので、単純にイメージが上書きされて、その後テキストウィンドウ処理されているだけなのでしょうか?
その場合、どの段階でsetFaceImage()を実行するべきでしょうか?

煮詰まってしまって、よくわからない質問になってしまってすみません;
とりあえず、単純に「文章」を2つ連続で、イベントで記述するような状態にしたいです。
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: $gameMessageがらみのメンバ関数の動きがよくわかりません。

投稿記事 by 奏ねこま »

rpg_objects.jsを「Show Text」で検索すると、
Game_Interpreter.prototype.command101という関数が見つかると思います。
それがイベントコマンド「文章の表示...」の中身ですので、そこから紐解いてみてはどうでしょう?
ZOO
記事: 24
登録日時: 2016年7月30日(土) 08:55

Re: $gameMessageがらみのメンバ関数の動きがよくわかりません。

投稿記事 by ZOO »

レスありがとうございます。
一日かけてわかったことは

1・command101関数をオーバーロードし、自分の使いたいように追加定義する?
2・オブジェクトを作って、オーバーロードしたcommand101を呼び出す?

ぐらいなのですが、もう少しヒントいただけないでしょうか?
返信する

“MV:質問”に戻る