忍者ブログ

[PR]

2024年03月29日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

量産のためのアイテム収集クエスト

2018年12月10日



前置き

 ツクラーたるもの、一度や二度ぐらいはアイテム収集クエストを作った事があるだろう。
きっと、たぶん。
特定のアイテムを特定の個数もってくればクリア。その分だけアイテムを減らし、報酬を与えたりフラグを立てたりするイベントはRPGにおいて一般的なクエストだ。
このような収集クエストをごく一部、ストーリーに組みこむのであれば、収集クエストの実装はツクールの基本機能でも簡単につくれる。
しかし収集クエスト自体をメインに据え置いたRPGであれば、収集クエストの100や200、500、いや1000以上は設定したいという人もいるだろう。今回はこのような人のために、とくにかく大量に収集クエストを作るための収集クエスト実装方法を紹介する。うわ、私の前置きながすぎっ!

RESSON 1 下準備

 まずは準備。最初はデータベースのアイテム設定だ。
こんな風に40個ほどダミーアイテムを設定する。
もちろん、実際の作品ではここに収集対象のアイテムを設定する。



ちなみに何となく21以降のアイコンは本に変更した。
それ以前はポーションアイコン。意味はない。

次に開始時に自動実行されてアイテムを取得イベントをテスト用に設定。全部はめんどくさいのでダミー1~10だけ99個入手するように。



そして適当なクエスト受注用のオブジェクトを用意!



これで前準備は完了だ。

RSSSON 2 プラグイン導入


 まずはプラグインの導入だ!基本的なプラグインの導入法はさっと省略して、使用するプラグインをご紹介。導入する場合はちゃんと利用規約を読むように。
プラグイン名:メッセージ制御文字拡張
サイト名: ひきも記は閉鎖しました。
URL: https://hikimoki.sakura.ne.jp/

プラグイン公開ページ 


 というわけで使用するのはこのメッセージ制御文字拡張プラグインです!

RESSON 3 変数作成

こんな風に3つだけ変数に名前を付ける。以上。


RESSON 4 コモンイベント作成


 はい、こんな感じのコモンイベントを作成してください。
ただこの画像、というかこの画面、スクリプトの内容が切れてますね。
なので切れてなーい条件式スクリプトを記載します。(※1)

$gameParty.numItems($dataItems[$gameVariables.value(1)]) >= $gameVariables.value(2)


RESSON 5 コモンイベントを使ってクエストを実装


 あとはこのコモンイベントを使用して実際のクエストを作ってみましょう。作り方は簡単。以下のように4つのコマンドを実行させるだけです。XXXにはそれぞれ適した数字を入れてあげましょう。

変数の操作:#0001 要求アイテムID = XXX
変数の操作:#0002 要求個数 = XXX
変数の操作:#0003 クエスト報酬 = XXX
コモンイベント:収集クエスト
というわけで、今回はさっきのクエスト員さんの各選択肢にこれらを実行させていきます。簡単!これでクエストが6つもできた!


RESSON 6 ランダム化


 賢いツクラーの皆さんは既に気がついているかもしれません。
クエストの作成には変数の入力と、特定のコモンイベントの呼び出しという共通処理のみがあるという事に。
つまりは・・・

収集クエストをランダム生成する事ができるということだ!


と、こんな感じに。
この例では話かける度にランダムに収集クエストの内容が変化します。
あと何げに交換後にループの中断も追加してます。そうしないと同一内容のクエストも何度も完了できちゃうからね。でもこれだとクエストを実行せずにキャンセルしても会話が終わっちゃうな・・・まぁいいか(

例によってスクリプト条件式は途切れているので、クエストA報酬への値の代入のスクリプトを記載します。
(※2)

$dataItems[$gameVariables.value(4)].price * 2 * $gameVariables.value(5) + Math.floor( Math.random() * 11 ) * 100

この場合、作成される収集クエストのパターンは
アイテム種類(40パターン)×個数1~20(20パターン)×追加報酬0~1000(11)パターン
合計でハッセンハッピャクゥ!となる。

終わりに

というわけで、今回は量産を視野にいれた収集クエストの作成方法を解説しました。元々は自作のゲームに導入しようと思っており、その必要用件的に個々のクエストは非常に単純なものになっています。
 しかし、応用次第で複数のアイテムを要求させたり、報酬としてフラグのON・OFFも可能だと思うので、収集クエストをたくさん用意したい!って人は是非やってみてください。

補足


今回の解説ではいくつかスクリプトを使用しました。
その意味を解説していきます。

(※1)
左辺の式は変数1の中の数値のIDのアイテムの個数。変数1は要求アイテムIDにした。
つまり要求アイテムの個数。
右辺の式は変数2の値。つまり要求個数の数値。
要求アイテムの個数が、要求個数ならこの式は満たされる。

$gameParty.numItems($dataItems[$gameVariables.value(1)]) >= $gameVariables.value(2)



(※2)
この式はアイテムの値段×2×アイテムの個数に0~1000の100区切りのランダムな値を加算している。

$dataItems[$gameVariables.value(4)].price は変数4の値のIDのアイテムの値段。変数4はクエストAアイテム。よってクエストAアイテムの値段が入り。これに×2している。
$gameVariables.value(5)は変数5の値。つまりクエストA個数。
Math.floor( Math.random() * 11 ) * 100 ではランダムな0~10の整数を取得し、それに100をかけている。これで100刻みの0~1000の値を取得している。

$dataItems[$gameVariables.value(4)].price * 2 * $gameVariables.value(5) + Math.floor( Math.random() * 11 ) * 100

PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字