忍者ブログ

へぷたなすくろーる

RPGツクールのブログです。イベント講座とRGSS3スクリプト配布をやってます♪

Home > > [PR] Home > イベントのすゝめ > イベントのすゝめ(10) もっとも~っとイベントコマンド「スクリプト」

[PR]

×

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

イベントのすゝめ(10) もっとも~っとイベントコマンド「スクリプト」

このコーナーでは、主に初心者さんに向けたイベントのテクニックを紹介していきます。
RPGツクールVXAceで説明していきますが、多くはVXや他のツクールでも可能です。
合言葉は「略)味気ない文字の羅列だった変数たちが、元気な勇者軍団へと姿を変えました」

第十回は引き続き年末特番と致しまして!
自分で知りたい調べたいという人向けに変数について簡単に説明しています。
なかなか説明するのも理解するのも難しいものではありますが
読み物として軽く見ていって下さい。今回無駄にカラフルです♪
「p?なにそれ美味しいの?」
変数って一体どういう仕組みなのさ」
変数の種類について大まかに分けてみた」
つづきはこちら、からどうぞ。 「p」を使いこなそう
さて、ぜひとも知ってもらいたい命令を紹介します。
スクリプトで「p $game_variables[1]」と書いて、テストプレイで実行して下さい。
何も起きない?いえいえ良く見て下さい。
もう1つの黒いウィンドウ「コンソール」に数字が1つ表示されているはずです。
このpコマンドはコンソールに文字を表示する命令ですが
このように変数名を入れるとその中身が表示されます。
つまりpコマンドを使って確認すれば変数の中身や構造が分かりますし
こういう変数があるのかな?と調べるときにも役に立ちます。
因みに、VXとXPではコンソールがなく、代わりにメッセージボックスが出ますが用途は同じです。

変数の構造
ところで変数というのは階層構造になっています。
$game_actors[n].equips[m].id
というのは
$game_actors[1]
          [2].id
            .name
            .equips[0]
                 [1]
                 [2]
                 [3].id
というイメージです。
貴方は「あるアクターが何を装備をしているのか知りたいな」と思いました。
$game_actors」と呼ぶとアクターが全員こっちに来ます、邪魔です。
だから「[n]番目だけ来い」と言いますと
1人だけ来て名前はアレックスで職業は勇者で~と自己紹介を始めます。
「うるさい、equipsを見せろ」と言うとジャラジャラと全部の装備を押し付けてきます。
「ええいとりあえず[m]番スロットだけで良い」と言うと
またしてもこいつの名前はショートソードで価格は100Gで~と語り始めます。
「聞きたいのはidが何番かだ」というとようやく「5番です、マスター」と言って黙りました。めでたしめでたし。

と こ ろ が 、彼が装備をしていない場合
彼に「装備は何か(equips)」とか「m番スロットに何を装備しているか(equips[m])」
と聞いたら「そこには何も装備していない(nil)です、マスター」とちゃんと答えてくれるのですが
「そのスロットに装備しているもののidは何番だ(equips[m].id)」と聞いてしまうと
「はぁ!?だから何も装備してないって言ってるでしょう、idなんて聞かれても分かりませんよ!」
とぶち切れてNoMethodErrorを呼ばれてしまいます。
つまり、無いことを示すnilが入っている箇所があると
それ以下の階層は呼び出した瞬間にエラーになってしまいます。
なので普段からnilが入る可能性があるequips[m]の下にあるidなどを参照するときは
$game_actors[n]].equips[m] != nil  :n番アクターのm番装備がnilじゃない
というような条件分岐を手前に設定してエラーを回避するようにします。

変数の中身の種類
前回少しだけ触れましたが、変数の中身には幾つか種類があります。
スクリプトで中身を操作する場合にどう影響があるのか、でまとめてみました。

・trueかfalseが入っているタイプ
$game_switches[n]などが代表的ですね。
スイッチのようにオンかオフかだけ判別するだけのものはこの形式です。
操作するときはtrueかfalseの代入だけにします。

・数値が入っているタイプ
$game_variables[n]を始め、多くのパラメーターはこのタイプです。
数値(数値タイプの変数)と演算子を使った操作が可能です。
0であっても"なし"ではなく数値として扱われます。
また0の除算(/= 0)はエラーになりますので、0の入った変数で除算しないように注意します。

・文字列が入っているタイプ
nameなどのパラメーターは数値ではなく文字列が入っています。
代入などで文字列を書くときは"あいうえお"という風に""で囲みます。
文字列は代入の他に、"あいう"+"えお"="あいうえお"というように加算ができます。
代入を除き、文字列タイプと数値タイプで計算するとエラーになります。
代入はエラーになりませんが、そのままにしておくと
後で違うタイプとの計算に使われてエラーが出ることが多いので止めておきましょう。

・存在していない
中身がnil、もしくはNoMethodErrorが出る場合については既に説明しました。
nilが入っている変数に代入以外の操作をするとエラーになります。
扱いにくいので代入もしないほうが良いです。

・配列が入っているタイプ
$game_actorsや$game_actors[n]なんかがそうですが
中に他の変数や要素が幾つも入っているタイプです。
この状態だと扱いが難しいので、操作したり条件文に使うためには[n]や.○○を足して
その中に入っている変数や要素を直接指定できるようにしましょう。

拍手[5回]

PR
-->
Responses0 Responses
  • お名前
  • タイトル
  • メールアドレス
  • URL
  • パスワード

ブログ内検索

アーカイブ

最新コメント

[01/20 NONAME]
[01/16 NONAME]
[12/30 NONAME]
[12/13 NONAME]
[12/01 NONAME]

プロフィール

バナー

HN:奈々(なな)
RPGツクールVXAceを中心に製作を行っています。 スクリプト、イラスト、ドット絵など広くちょこちょこ手を出していますので、 できる範囲で他のツクーラーさんのお手伝いができたらなと思っています。