読者です 読者をやめる 読者になる 読者になる

RPGツクールMV 進捗その1

ツクール進捗

気が向いた時にツクールの進捗を報告するコーナー!

今日は↓のような処理をするイベントコマンドを作ったよ。

 


(変数a)番のキャラクターに(変数b)番のステートを与える


 

なぜこの処理が必要なのか。それには今作っているゲームを説明しなければなるまい!

 今回作っているゲームは普通のステート(毒とか、防御力アップとか)とは別枠でいわば「強力なステート」を設定している。

それ一個で戦局がガラッと変わるほどの威力をステータス異常に持たせたいのだ。

今のところその強力なステートは、MPとは別のリソースを使って発動することになっている。

そこで目にしたのがこれ(新機能活用講座|RPGツクールMV)。テレポート場所を「隠しアイテム」で管理している。

 それに習い、使用可能なステートを「隠しアイテム」として所持、選択したらそのステートになる、というイベントを作ることになった。

つまり冒頭に書いたイベントである。


ところが。

 デフォルトのイベントコマンドでは「(変数a)番のキャラクターに(変数b)番のステートを与える」ことができない!

f:id:mi_ki_ri:20151202195617p:plain

↑のように、(変数A)番のアクターに「ノックアウト」「毒」「睡眠」…etcを与えることはできるが、(変数A)番のアクターに(変数B)を与えることはできないのだ。


ここから苦闘が始まった……。

おおまかには次のような処理をしたよ。


・使用するステートを選択(上に書いたように、隠しアイテムを使った)

・選んだアイテムIDが0だったら、もう一回。

・0じゃなかったら、「$dataItems[先ほどのID].name」を変数に格納($dataItems[ID]の中にアイテムの情報がある)(変数には実は文字列も入る)

・「(さっきの変数)を使用しますか」と聞いて選択肢

・イエスなら、「\p[1]」「\p[2]」「\p[3]」「\p[4」」の4つの選択肢(\p[数字]でパーティのメンバーの名前が入る)

・「\p2」が選択された場合、パーティが2人いるかチェック。\p3なら3人いるかチェック。

・いたら、選択キャラは「$gameParty._actors[(番号)]」($gamePartyにはパーティの情報がある)

・これで「($gameParty._actors[(番号)])番のアクターに($dataItems[先ほどのID].name)を与える」処理をすればいいのだが、アクターにステートを付与するスクリプトがうまく動かず。

・しかたなく、力押し。ステートの数だけ条件分岐することに。


いやー疲れた。

でも特殊なシステムはこのステートまわりだけだから、たぶんあとは楽なはず。たぶん……。