アイテム欄を複数使うアイテム


ツク5のアイテム欄はドラクエ形式を採用しているので、一人12個までしかアイテムを持てません。
12個までしか持てないこの仕様をわずらわしく感じる人もいるかと思います。

       、--‐冖'⌒ ̄ ̄`ー-、
     /⌒`         三ミヽー-ヘ,_
   __,{ ;;,,             ミミ   i ´Z,
   ゝ   ''〃//,,,      ,,..`ミミ、_ノリ}j; f彡
  _)        〃///, ,;彡'rffッ、ィ彡'ノ从iノ彡
  >';;,,       ノ丿川j !川|;  :.`7ラ公 '>了
 _く彡川f゙ノ'ノノ ノ_ノノノイシノ| }.: '〈八ミ、、;.)
  ヽ.:.:.:.:.:.;=、彡/‐-ニ''_ー<、{_,ノ -一ヾ`~;.;.;)
  く .:.:.:.:.:!ハ.Yイ  ぇ'无テ,`ヽ}}}ィt于 `|ィ"~
   ):.:.:.:.:|.Y }: :!    `二´/' ; |丶ニ  ノノ
    ) :.: ト、リ: :!ヾ:、   丶 ; | ゙  イ:}    逆に考えるんだ
   { .:.: l {: : }  `    ,.__(__,}   /ノ
    ヽ !  `'゙!       ,.,,.`三'゙、,_  /´   「制限を活かしちゃうんだ」と
    ,/´{  ミ l    /゙,:-…-〜、 ) |
  ,r{   \ ミ  \   `' '≡≡' " ノ        考えるんだ
__ノ  ヽ   \  ヽ\    彡  ,イ_
      \   \ ヽ 丶.     ノ!|ヽ`ヽ、
         \   \ヽ `¨¨¨¨´/ |l ト、 `'ー-、__
            \  `'ー-、  // /:.:.}       `'ー、_
          `、\   /⌒ヽ  /!:.:.|
          `、 \ /ヽLf___ハ/  {
              ′ / ! ヽ

――そんなわけでドラクエ式ならではの調整といえる「アイテム欄を複数使うアイテム」を作ってみましょう。
これを活用すれば「強力だけどアイテム欄をたくさん使うアイテム」「安いけどアイテム欄をたくさん使うのでたくさん持てない薬草」など、
アイテムの個性を広げることができます。
アイテム欄を「ただ持てなくする」だけの要素じゃなくしましょう!

作り方

まず、アイテム欄を埋めるためだけに存在するダミーアイテムを作ります。
名前は「アイテム欄潰し」と仮称しておきます。
効果は売れない・捨てられないを設定するくらいでその他は設定しなくても構いません。

それを作ったら「アイテム人物入手」「アイテム人物破棄」「アイテム袋入手」「メンバー番号読み込み」の4つの共有化スクリプトを作ります。
それぞれの内容は以下の通り。

アイテム人物入手 
アイテム名を得る
場合分け:文字変数『取得名称(共通)』
 場合に当てはまる:文字列”薬草”の時
 対象者:所持品+『薬草』
 ブロックの終点まで飛ぶ
 場合に当てはまる:文字列”極太薬草”の時
 対象者:所持品+『極太薬草』
 ブロックの終点まで飛ぶ
 (中略)
ブロック終点

アイテム人物破棄 
アイテム名を得る
場合分け:文字変数『取得名称(共通)』
 場合に当てはまる:文字列”薬草”の時
 対象者:所持品−『薬草』
 ブロックの終点まで飛ぶ
 場合に当てはまる:文字列”極太薬草”の時
 対象者:所持品−『極太薬草』
 ブロックの終点まで飛ぶ
 (中略)
ブロック終点

アイテム袋入手
アイテム名を得る
場合分け:文字変数『取得名称(共通)』
 文字列”薬草”の時
 対象者:所持品+『薬草』
 ブロックの終点まで飛ぶ
 場合に当てはまる:文字列”極太薬草”の時
 対象者:所持品+『極太薬草』
 ブロックの終点まで飛ぶ
 (中略)
ブロック終点

メンバー番号読み込み
変数:『86番:メンバー番号』=『一時変数:0』+0
メンバー情報:読み込み

上の方の3つはいわゆるアイテム入手処理簡略化スクリプトです。
宝箱入手処理などあらゆる場面で使えるので、作っておいて損はありません。
全アイテム分作れば理想ですが、面倒な人はアイテム欄を複数使うアイテムだけの分を作っておきましょう。
場合分けはアイテム番号で行っても構いません。
その場合、打ち込みが楽になりますが、並び順変更に対応できなくなります。
この辺は好みで。


これらが出来たらアイテム欄を複数使うアイテムをどうやって判定するかを決めます。
方法は以下の2つあります。

・アイテムエディターで使われていない数値を代用する。
・アイテム名で場合分けする。

前者は例えばですが、武器属性や売値などを使います。
これらの数値を利用してそのアイテムがアイテム欄を複数使うかどうかを、そしてどれくらい使うのかを判定します。
利点は後者と比べて処理を簡略化できるため、容量を節約できることです。
弱点は武器属性を設定していたり、売値などを設定している場合、使えません

後者はアイテム名などで場合分けを行います。
前者と比べて安定して使えます。
が、処理が多くなるため、容量が重くなるのが弱点です。

一長一短ありますが、この項では後者を前提に行います。
前者をやりたい人は自分で考えてやってくださいな。
クセが強く、一概に紹介できるやり方ではないので。


さて、場合分けでは任意の変数『アイテム欄使用数』にアイテム数を入れるスクリプトを作っておきます。
こんな感じにどうぞ。

アイテム欄複数使うアイテム情報入手
アイテム名を得る
場合分け:文字変数『取得名称(共通)』
 場合に当てはまる:文字列”薬草”の時
 変数:『アイテム欄使用数』=1+0
 ブロックの終点まで飛ぶ
 場合に当てはまる:文字列”極太薬草”の時
 変数:『アイテム欄使用数』=2+0
 ブロックの終点まで飛ぶ
 場合に当てはまらない
 変数:『アイテム欄使用数』=0+0
ブロック終点

数値は1や2ですが薬草がアイテム欄を2つ使い、極太薬草がアイテム欄を3つ使うという設定です。
使用するアイテム欄-1の数値を『アイテム欄使用数』に入れてください。
混乱するって人はアイテム欄使用数に本来の数値を入れ、ブロック終点の後に改めて『アイテム欄使用数』-1をやればいいかと。


それが終わったら「アイテム欄複数使うアイテム入手処理」「アイテム欄複数使うアイテム破棄処理」の2つを作ります。

アイテム欄複数使うアイテム入手処理
変数:『一時変数:0』=『メンバー番号』+0
変数:『メンバー番号』=『メンバー番号:Y』+0
メンバー情報:読み込み
アイテム情報読み込み
別のスクリプトを呼ぶ『アイテム欄複数使うアイテム情報入手』
変数:『一時変数:1』=『87番:道具の個数』+『アイテム欄使用数』
条件:変数『一時変数:1』>+12
 音響効果:効果音:『否定』(エラー音なので好きなようにどうぞ)
 別のスクリプトを呼ぶ『アイテム人物破棄』
 場合分け:変数『1番:システム処理番号』
  場合に当てはまる:数値+28
  別のスクリプトを呼ぶ『メンバー番号読み込み』
  別のスクリプトを呼ぶ『アイテム人物入手』
  ブロックの終点まで飛ぶ
  場合に当てはまらない
  別のスクリプトを呼ぶ『アイテム袋入手』
 ブロック終点
 スクリプトを強制終了する
条件終点
繰り返し:変数『アイテム欄使用数』≠±0
 対象者:所持品+『アイテム欄潰し』
 変数:『一時変数:1』=『一時変数:1』-1
ブロック終点
条件:変数『システム処理番号』=+28
 別のスクリプトを呼ぶ『メンバー番号読み込み』
 別のスクリプトを呼ぶ『アイテム欄複数使うアイテム破棄処理』
条件終点

アイテム欄複数使うアイテム破棄処理
メンバー情報:読み込み
アイテム情報読み込み
スクリプトを強制終了する
繰り返し:変数『アイテム欄使用数』≠±0
 対象者:所持品-『アイテム欄潰し』
 変数:『一時変数:1』=『一時変数:1』-1
ブロック終点



ここまで作ったら後は仕上げです。
エラーメッセージに以下の処理を入れてください。
既存のエラーメッセージを編集しても構いません。

場合分け:変数『システム処理番号』
 場合に当てはまる:+28
 場合に当てはまる:+38
 アイテム名を得る
 条件:文字変数『1番:取得名称(共通)』=『アイテム欄潰し』
  音響効果:効果音:『否定』(エラー音なので好きなようにどうぞ)
  メンバー情報:読み込み
  対象者:所持品+『アイテム欄潰し』
  変数:『メンバー番号』=『メンバー番号:Y』+0
  メンバー情報:読み込み
  対象者:所持品-『アイテム欄潰し』
  ブロックの終点まで飛ぶ
 条件終点
 別のスクリプトを呼ぶ『アイテム欄複数使うアイテム入手処理』
 ブロックの終点まで飛ぶ
 場合に当てはまる:+40
 条件:文字変数『1番:取得名称(共通)』=『アイテム欄潰し』
  音響効果:効果音:『否定』(エラー音なので好きなようにどうぞ)
  メンバー情報:読み込み
  対象者:所持品+『アイテム欄潰し』
  ふくろ『アイテム欄潰し』=0
  ブロックの終点まで飛ぶ
 条件終点
 別のスクリプトを呼ぶ『アイテム欄複数使うアイテム破棄処理』
 ブロックの終点まで飛ぶ
ブロック終点


と、これで終了です。
が、このスクリプトにはある問題があります。
何が問題かというとアイテム欄を複数使うアイテムを売った時+捨てた時のことを考慮してません
このままでは売ったり捨てたりすれば『アイテム欄潰し』が残ってしまいます。
それを回避するには売った時、捨てた時に消費アイテム欄分の『アイテム欄潰し』を減らしましょう。
そして、大変申し訳ありませんが自分ゲーに売った時、捨てた時の処理がないのでここでThe ENDです。
このスクリプトの内容を理解できる人なら、これらの処理も作れると思うので頑張ってください!


ツクテクニックのTOPに戻る