タナカカズム 2022/01/09 13:18

エロRPGの作り方4「討伐クエストの作り方」(うなぎおおとろ「クエストシステム」の使い方)


 うなぎおおとろさんのプラグイン「クエストシステム」で討伐クエストの作り方です。私は最初分からず5時間ぐらい苦戦しました。
結論:討伐クエストを作る場合、1つのクエストにつき2つの変数を準備する必要があります

プラグイン使用上の注意

 「RPGツクールMZでの本格的なクエストシステムの使い方(クエストシステムプラグイン)」という解説記事通りに作業を進めて、独自に2個以上クエストを作ったときに動作不良を起こしました。この原因を探るのに3時間ぐらいかかりました。

エラーを回避する方法


 赤丸箇所のヘルプを読んでいないがために「パラメータを設定したのにクエストが受注できない」と言っている私はヘルプを読んで理解しました。(20分)

 エラーが出る操作は変数操作でした。私が独自に調べたものを書いておきます。

  • 変数0→1:変数操作で変更しても動作不良が起きない。
  • 変数1→2:パラメータを2個以上作った状態で変数操作をすると動作不良を起こす。
  • 変数2→3:変数操作で変更しても動作不良が起きない。
  • 変数3→4:パラメータを2個以上作った状態で変数操作をすると動作不良を起こす。


 つまり、1→2、3→4の変数操作はクエストシーン開始で開いたウィンドウ上で行う必要があります。

各クエストは「変数」で管理します



 クエストシステムのパラメータに登録する変数は203、204、205、206、208とします。

討伐数という変数もつくっておきます

 変数は303、304、305、306、308とします。この変数に敵を倒した数を代入します。

倒した敵を数えるプラグイン「Cae_AutoSwitchVars」

 使い方はぐぐると出てきます。倒した敵の数を303,304,305,306,308のいずれかに代入します。今回は変数303に代入したとします。

ゴブリンをX体倒すクエスト

  • クエストシステムのパラメータで変数203を指定してクエストをつくる。
  • 変数操作:変数203=1にする。(NPCに話しかける決定トリガーなど)
  • プラグインコマンド「クエストシーン開始」から変数203=2にする。(クエストを受注する)
  • ゴブリンをX体倒す。=倒したゴブリンはCae_AutoSwitchVarsで数えられ値が変数303に代入される。
  • 条件:変数303≧X体のとき、変数203=3にする。(クエスト完了報告ができる)
  • プラグインコマンド「クエストシーン開始」から変数203=4にする(クエスト完了)

    条件:変数303≧X体のとき、変数203=3にする。(クエスト完了報告ができる)

     問題は「この処理をいつ行うのか?」です。

  • 1、MAPを出入りしたとき(悪くはない)
  • 2,クエストを受注したNPCに話しかけるとき(妥当と言えば妥当)
  • 3,並行処理で延々と行う(めちゃ重い)
  • 4,メニューを開いたとき、閉じたとき(メニュー開かないとクエスト完了しない)
  • 5,戦闘が終わったとき(MNKR 戦闘開始/終了コモンイベントMZプラグインなど)

GranEndeは戦闘が終わった時に調べてるように思います。私が今作っているLoglessはクエストの完了報告を行うマップに入った時調べています。なので1ですかね。

スクリプトを使うとこんな感じです

//
//平原の討伐判定
//
if($gameVariables.value(203) == 2){
if($gameVariables.value(303) >= 15){
this.operateVariable(203,1,1);
}
}
//「もし変数203が2(ゴブリン討伐を受注しているとき)でなおかつ変数303が15以上(ゴブリンを倒した数が15体以上)のとき、変数203に+1(2→3=討伐完了報告ができる状態に)する」です。

オマケ:名声(ゲーム進行を管理する変数(変数番号82))が0の時

//名声0の時:
if($gameVariables.value(82) == 0){
if($gameVariables.value(203) == 0){
$gameVariables.setValue(203,1)
}
}

最後に、もしよければ「いいね」頂けると嬉しいです!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

記事を検索