よくあるエラー集(履歴ID:534)

最終投稿者:Material 204926 1 mini 井戸乃博士 更新:2013/11/10 06:35:52
よくありそうなエラーの例をまとめました。
エラーが出たときは、すぐに質問するのではなく、
ここで該当するエラーが無いか調べるといいでしょう。

※エラーの調べ方

エラーが発生したら、まずエラー表示を見て内容を確認しましょう。
エラー表示の内容は次のようになっています(2DアクションRPG/2DRPGの場合)

上記の(1)と(2)から、どのイベントでエラーが出ているかがわかります。

(3)は定型化されたメッセージなので、正直見てもよく分からないことがありますが、
メッセージによっては原因がすぐに分かる場合もあります。
なお、こちらにエラー表示の一覧があります。
どんなエラーが出ているのか目安になりますので、調べてみるといいでしょう。

(4)からイベントエディタでスクリプトのどこにエラーが発生しているのか見当をつけることができます。
行数が何百行にもなる場合、いちいち行数を数えられない!と言う方、
イベントエディタに行数を表示する場所がちゃんとあります。

これでエラー箇所を特定してください。

質問する際は、あらかじめスクリプトのどこにエラーが発生しているのか
自分で把握して伝えられるようにしておくようにしましょう。
質問の際に、回答者の方に何行目にエラーがあるのか調べてもらうのはお勧めしません。
なぜなら、回答者の方には、それこそスクリプトを目で見て数えるしか方法が無いからです。
余計な手間をかけさせることになるので、前もって自分で調べておいた方が効率的なのです。


よくあるエラーの一覧







◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

《全般》


・スペルミス


【解説】
 (1)スクリプトの綴りが間違っている。
 (2)大文字を小文字にしている

 当然スクリプトは動作しません。
 質問して原因がこれだと非常に恥ずかしいですが、
 複雑なスクリプトになるほど、このようなケアレスミスが起こりやすい・・・

【対処法】
 英語の知識に関係なく、長いスクリプトになるほどミスが起こりやすくなります。
 『「関数リファレンス」は別タブで常時開きっぱなしで作業するのが基本』
 という名言を言った人がいます。
 特に文字数が多いスクリプトはコピペするようにした方が間違いが減りますよ。


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

・スクリプトの括弧が多すぎる/少なすぎる


【解説】
 初歩的ですが、これもやりがちなミスです。
 特にミスが起こりやすいのは、スクリプトの中に別にスクリプトを入れた場合。
 例えば、"setEventDirection("x", getDownDirection())"
 "getValueFromItemParam(getItemParamWithId(x), getItemViewNameIndex())"等、
 括弧が二重三重になり、長いスクリプトは特に要注意。
 途中で改行したりすると、さらに見落としやすくなります。

【対処法】
 スクリプトが複雑になると発生率が高くなるミスなので、
 解説に挙げたようなスクリプトを作るときは、意識しておくといいでしょう。

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

・全角スペースが混ざっている


【解説】
 全角スペースは日本語フォントと同じ扱いですから、スペースとして認識されません。
 スクリプトの途中に全角スペースがあるとエラーとなります。
 speakのセリフを入力しているときに半角に戻すのを忘れるなどして発生します。

【対処法】
 スクリプトをよく見直しましょう。
 スクリプトの途中に全角スペースがある場合、
 入力時に下に赤い線が出て、エラーであることが分かります。
(下の図を参照)


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

《変数・フラグ関連》


・変数が定義されていない。


【解説】
 変数は値を設定しなければ、変数として機能しません。
 最初に、ローカル変数なら、"a = 1"
     基本変数なら、"setVariable("a" 1)"
 というように値を設定しなければなりません。
 これを忘れると、変数は値を持たないため特定できない状態になります。
(この状態を"null"といいます)
 この状態でgetVariable("a")など、変数を指定するスクリプトを使うとエラーになります。
 "not defined variable"というエラーメッセージがでるので、すぐに分かります。


【対処法】

 手順1:
 最初にsetVariable等、変数を設定するスクリプトがあるかどうか確認しましょう。

 手順2:
 もし、ちゃんと設定されていたら・・・
 変数にスペルミスがある可能性が高いです。
 スペルが間違っているせいで、別の変数と認識されているわけですね。



◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

《《if関連》


・「if (変数) = (値)」と表記している


【解説】
 変数が一定の値の場合(例えば a=1の場合)に
 特定のイベントを発生させるというスクリプトを書くときは、
 "a == 1" というようにイコールを2つ並べて書かなければなりません。


【対処法】
 分かれば、すぐに直せる初歩的なエラーですが、
 知識がないと、対処のしようがありません。
 ifのような条件式は書き方が決まっています。
 具体的な書き方はこちらの『条件式』の項目を参照してください。

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

・end の数が少ない/多い


【解説】
 スクリプトのうち、if、case、while の3つは、終わりに必ずend が必要になります。endがこの3つのスクリプトの数より少なくても、多くてもエラーになります。

【対処法】
 endの数がif、case、whileの数と同じになるか数えてみましょう。
 これらのスクリプトは重ねて使用することが多いので、だんだんわけがわからなくなります。
 そういうときは、どのendがどのスクリプトに対応しているのかを整理しましょう。