人生エクソダス

なんてことのない日々のこもごもをつらつらと書き連ねたり連ねなかったりする。

MUGEN小話 4 mugenといえばエラー

2020-01-13 19:51:49 | MUGEN

 AI入れただけでこうなったりすることがある。


random<var(59)*(p2bodydist x)

 random…0~999を抽選、var(59)…AIレベル。人によって使うvarは違うがだいたい59でつくってる、p2bodydist x…X軸の距離 によって、X軸として遠ければ遠いほど期待値があがるように記述したつもり。が、この記述でまれにエラーを吐くことがある。
 p2bodydist のXもYも整数を返すものと認識していることがある。他の方が作ったAIを見ても、p2bodydist x=[65,120]のように、整数が入っている事が常だからだ。だが数字でこうして指定していない場合、例えば(p2bodydist x)とすれば現在の相手とのX軸の距離が分かるが、これが小数が入ることがあるようだ。
 そして、randomは整数しか入らない。なので、【整数しか入らない】<【小数出るかも】という式になりエラーになることがある。

 なので、↑の式で組むなら、random/var(59)<p2bodydist のようにどちらも少数出るかもしれないようにしておけばいい。


等号不等号の順番が違う

 p2bodydist x=[65,120]くらいの長さならこれでいいが、p2bodydist x+const(size.ground.front)+enemy,gethitvar(xvel)*10=[65*const(size.xscale),120*const(size.xscale)]とか、これよりもっと長くなったりすると、横が画面に収まらなくなって、何が書いてあるかわからないとか、直そうと思った時にこの()は何を区切っているのか…と意味が分からなくなることがある。なので長い式になるならばらした方が一画面に収まってわかりやすいということがある。
 ↑の式の内容だと、p2bodydist x>=65 && p2bodydist x<=120という事になるが、この><=の順番が違うということでエラーを吐くことがある。><は左側、=は右側と覚えておけばいい。この程度の事なのに、うっかり間違った記述をしたものをコピペしている場合の修正は、そらもう手間よ。


括弧の数が違う

 たとえばこれ
((p2bodydist x=[128,179])&&(p2bodydist y=[51,90]))||(((p2bodydist x=[180,231])&&(p2bodydist y=[91,130]))||((p2bodydist x=[232,283])&&(p2bodydist y=[131,170]))
 エラーです。どっかの(が多いからエラーによって読み込み不可になります。
 なので一行の長さが長すぎる式とか、(((が3つも4つもある式をつくると自分でもわけがわからなくなるので、例えば( () ) || ()のように半角スペースを使ってこの括弧はここからここまでというのをわかりやすくしておいた方が、直す時に便利。


全角スペースが入っている

 older than...というエラーが出た時、意外にどこにいれたかわからないような全角スペースによってエラーを吐くことがあり、そもそも視認できないというとても厄介な代物。もし最初から全角スペースとわかっていれば を検索すればいいだけだし、まあ視認に関しても全て選択して謎の青いだけのブロックがあったらそれを消せばいいが、まあうっかりこんな を入れてしまったらちゃんとその時に消すようにしよう。

 あと説明文を入れたのに行頭に;(コメントアウト)を打ち込まずにいればやっぱりエラーを吐く。