Fallout好き:主にFallout New Vegas

Fallout好き:主にFallout new Vegas

2013年4月28日日曜日

MODのスクリプトで悩んだ事:X=if endif endif ○=if else endif

自作MODの処理が中途半端に実行されなくなって悩んでて、スクリプトをじっくり見なおして原因に気付いた。問題箇所に気付きづらい間違いだったのでメモしておく。

スクリプト中の間違い箇所は下記の反転しているところ。


これによって、反転している部分(endif)から下の処理が実行されなかった。


前後を見るとわかるが、

本来こうなっていなければならない(異なる場所を太文字にした)。
  if FlgGodmode
      set FlgGodmode to 0
  else
      set FlgGodmode to 1
  endif

それがこうなっている。

  if FlgGodmode
      set FlgGodmode to 0
  endif
      set FlgGodmode to 1
  endif

つまり、elseであるべきところをendifと間違えて書いている。

ifはendifで終わる(必要ならelseを間にはさむ。これで一区切りの命令とみなされる)。
よってこの間違いによってif文に対応するendifが一個ずれることになる・・・みたい。
まー、間違った時の動作を深く考えても意味ないので考えない。

要は、
if文中の処理が途中から処理されていない(と思われる)場合は、
ifに対応するelseがendifになっていないかスクリプトを見なおしてみるべき。

こういうバグは構文がおかしいわけではないので、見つけるのがやっかい。しかもパッと見、見逃してしまいがちだから。

0 件のコメント:

コメントを投稿