エロ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)
}
}
最後に、もしよければ「いいね」頂けると嬉しいです!