「アフィリエイト広告を利用しています」

「高機能クエストシステムMV」プラグインでデイリークエストが作れるスクリプトをご紹介!

RPGツクール MV

高機能クエストシステムMVのリセットスクリプトとは?

先日高機能クエストシステムMVの作者様に問い合わせて教えていただいた所、バージョンアップの内容やリセットスクリプトなどを教えていただきました。

ということで、今回は、高機能クエストシステムMVで、デイリークエストを表示させる方法やリセットスクリプトなどをご紹介します!

※2022/12/15にプラグインのバージョンがアップされたようです。

高機能クエストシステムMVのDL先(Ayatam様)

デイリークエストが自動でリセットされる?

今回、バージョンがアップしたことで、どこが変更されたのかなども、作者様のサイトから、メッセージを引用させていただきます。

たとえば、デイリークエストを作り、受注した場合は、以下のような画面になります。

この時、1日で達成できなかったクエストについては、次の日に失敗にすることも可能です。

対象のデイリークエストが報告済みか失敗済み(失敗モード時)に限り、翌日にリセットされる機能で、自動的に失敗の機能は、バージョンアップ後もありませんとのことでした。

こんな感じですね。

ただ、検証に一日がかかると、ゲーム製作もちょっと滞るかもしれないので、こちらも作者様から教えていただいた方法をご紹介します。

var month = 40; var day = 41;
if($gameVariables.value(month) !== 0) {var time = new Date();
if($gameVariables.value(month) !== time.getMonth()+1 || $gameVariables.value(day) !== time.getDate()) {
var dailyQuests = $gameQuest.getAllDailyQuests();
if(dailyQuests !== null) {
dailyQuests.forEach(quest => {if(quest){Ayatam.QUEST.failQuest(quest._id)}});
};$gameVariables.setValue(month,time.getMonth()+1);$gameVariables.setValue(day,time.getDate());};};

↓こちらで日付をリセット

var month = 40; var day = 41;var time = new Date();
if($gameVariables.value(month) === 0) $gameVariables.setValue(month,time.getMonth()+1);
if($gameVariables.value(day) === 0) $gameVariables.setValue(day,time.getDate());

上記は、本体スクリプト v1.08以降用のスクリプトです

※v1.08以降用は、v1.07で発生していた不具合が修正されますのでリセットをシステム側に任せます。
そのため、リセットの検証については日を跨ぐ必要があります。
※v1.08以降用のスクリプトは「0時00分後に受注済みデイリークエストが未報告または未失敗(進行中)に限り、強制的に失敗にするスクリプト」とのことでしたので、追記させていただきます。
※また、失敗にさせる機能は、リセットスクリプトをセットアップしないと正しく動作しないとのことです。

とのことでした。

以前のv1.07迄用の以下のスクリプトもご紹介してみますが、新しいバージョンのプラグインでは、上記↑の1.08のリセットスクリプトを使用してみてください。

var month = 40; var day = 41;
//if($gameVariables.value(month) !== 0) {var time = new Date();
//if($gameVariables.value(month) !== time.getMonth() || $gameVariables.value(day) !== time.getDate()) {
var allAssentedQuests = $gameQuest.getAllAssentedQuests();var dailyQuests = [];var allQuests = Ayatam.QUEST.QuestDatabase;var failedQuests = [];
for(var i = 0; i < allQuests.length; ++i) {if($gameQuest.isFailed('quest'+(i+1))){failedQuests.push($gameQuest.findQuest('quest'+(i+1)))}};
failedQuests.forEach(quest => {if(quest){if(quest._questDailyQuest){Ayatam.QUEST.resetQuest(quest._id)}}});
if(allAssentedQuests !== null && allAssentedQuests.length > 0) {
allAssentedQuests.forEach(quest => {if(quest){if(quest._questDailyQuest){dailyQuests.push(quest)}}});
dailyQuests.forEach(quest => {if(quest){Ayatam.QUEST.failQuest(quest._id)}});
};//$gameVariables.setValue(month,time.getMonth());$gameVariables.setValue(day,time.getDate());};};

v1.07迄用のスクリプトは「0時00分後に受注済みデイリークエストが未報告または未失敗(進行中)に限り、強制的に失敗にし、さらに翌日、失敗したデイリークエストをリセットするスクリプト」とのことでしたので、こちらも追記しておきます。
v1.07迄用の以下のスクリプトでは、検証がすぐに出来ましたが、新しいプラグインのバージョンでは、失敗済のクエストの検証には一日をまたぐ必要があるということです。

私の説明だけではわかりづらいこともあると思いますので、もしわからない点がありましたら、作者様のサイトで質問してみてください。

Another Young Animations様

※追記 翌日キャンセルはこちら

私のゲームでは、失敗ではなく、翌日にクエストをキャンセル=リセットしたかったのですが、こちらのスクリプトも教えていただきました。

翌日キャンセルにする本体スクリプト v1.08以降用

var month = 40; var day = 41;
if($gameVariables.value(month) !== 0) {var time = new Date();
if($gameVariables.value(month) !== time.getMonth()+1 || $gameVariables.value(day) !== time.getDate()) {
var dailyQuests = $gameQuest.getAllDailyQuests();
if(dailyQuests !== null) {
dailyQuests.forEach(quest => {if(quest){Ayatam.QUEST.resetQuest(quest._id)}});
};$gameVariables.setValue(month,time.getMonth()+1);$gameVariables.setValue(day,time.getDate());};};

こちらを使えば、翌日にはデイリークエストに設定していたクエストがリセットされます。

ちなみに、失敗のスクリプトとキャンセルのスクリプトは同時に使えないみたいなので、ご注意ください。

高機能クエストシステムMVMZ v1.08で失敗も対応してくれる!

それでは、Ayatam様による「高機能クエストシステムMVMZ v1.08」について、現時点でわかってる内容をご紹介してみました。

私自身スクリプトがちんぷんかんぷんなこともあり、ご迷惑をおかけしてしまいましたが、デイリークエスト対応のプラグインを探している方の参考になりましたら、嬉しいです!^^

関連記事

特集記事

コメント

この記事へのトラックバックはありません。

「アフィリエイト広告を利用しています」

Count per Day

  • 662現在の記事:
  • 587033総閲覧数:
  • 324今日の閲覧数:
  • 507昨日の閲覧数:
  • 224今日の訪問者数:
  • 327昨日の訪問者数:
  • 326一日あたりの訪問者数:
  • 2現在オンライン中の人数:
  • 2018年10月13日カウント開始日:
TOP