ファイル(シナリオ、ユニット)がないとエラーが表示される。
- Vampire Bat を Vanpire Bat と書いてしまうなどの単純な綴りミス。
- ユニットIDなどを変えたときに、それに連動して直すべきところを修正していない。
- Vampire Bat みたいに名前の間に空白がある場合、""や()で囲んでみる。
本家 Battle for Wesnoth の Wiki やこの Wiki に書いてあるとおりにやっているのに期待通りに動かない。
この Wiki はもちろん、本家 Wiki にすら記述ミスがあります。Wiki の通りにやってもダメな場合は、「ちゃんと動いている」公式キャンペーンやアドオンキャンペーンの中身をよく読み込んでみるのが一番です。
(なお、もしこの Wiki の間違いを発見されたら、直していただけるととてもありがたいです。)
{TURNS} でターン数を指定するとき
どの難易度でもターン数が同じだったり、ターン無制限の場合でも、ターン数を3つ指定すること
○ {TURNS -1 -1 -1}
× {TURNS -1}
ヘッダーのないマップはサポートされていないとのエラーが出る
マップを作るときに、最低でもプレイヤー1の根拠地のフラッグを立てておかないと読み込み時にエラーになるようです。
自作ユニットを登場させたシナリオで不具合が出る(ゲーム再開しようとするとエラーになるなど)。
[unit_type] タグ内の id の命名で「-」等の記号を使用するとエラーの原因になります。
○ id=Great Ninja
× id=Great-Ninja
マクロ(ユニット配置マクロなど)で「要素が多すぎる」とエラーが出る。
ユニット配置用マクロ {UNIT SIDE TYPE X Y} を使用する場合、ユニットのタイプは必ず( )で囲むようにしてください。
例
○ {UNIT 2 (Silver Mage) 8 2}
× {UNIT 2 Silver Mage 8 2}
なぜエラーになるかというと、{UNIT} マクロは4つの要素を必要としていますが、タイプ名の Silver と Mage の間にスペースがあるため、それぞれを一つの要素と認識し、全部で5つの要素があると解釈してしまうためです。
(Silver Mage) とかっこでくくることにより、ひとつのタイプとして認識できます。
なおこれは、{LOYAL_UNIT SIDE TYPE X Y} 、{NOTRAIT_UNIT SIDE TYPE X Y} など他のマクロでも同様です。
kill の注意点
[kill] 文を実行するとパソコンのメモリからそのユニットに関する情報が消されてしまう。
そのユニットをあとで再登場させたい場合は、[kill] の実行前に [store_unit] を行なって、ユニットの情報を変数に保存しておこくと。
例
[store_unit]
[filter]
id=Popon
[/filter]
variable=Popon_store
kill=yes
[/store_unit]
または
[store_unit]
[filter]
id=Popon
[/filter]
variable=Popon_store
[/store_unit]
[kill]
id=Popon
[/kill]
unstore_unit する際の注意
[unstore_unit] を行う場合に、既にその場所にいる他のユニットを消したくないときは find_vacant=yes にしておく(デフォルトでは、find_vacant=no)。
例
[unstore_unit]
variable=Popon_store
find_vacant=yes
[/unstore_unit]
utils フォルダ内に自作マクロを登録したのに動かない
自作のマクロは、「キャンペーンフォルダ」→「utilesフォルダ」内に保存するようになっています。
このマクロを呼び出すために、_main.cfg ファイルの #ifdef ○○(キャンペーン名)〜 #endif の間にパスを記述しますが、この際に、 scenarios より前に記述する必要があります。
これは、マクロの定義を先にコンピュータに読み込ませておかないと、コンピュータがシナリオに出てきたマクロを解釈できないからです。
例( _main.cfg の末尾部分)
#ifdef MyCampaign
[binary_path]
path=data/add-ons/MyCampaign
[/binary_path]
# ユーティリティ(マクロなど)を先に読み込む
{~add-ons/MyCampaign/utils} ←←←←これ
# 独自ユニットの追加
[+units]
{~add-ons/MyCampaign/units/humans}
{~add-ons/MyCampaign/units/undead}
{~add-ons/MyCampaign/units/s_undead}
{~add-ons/MyCampaign/units/objects}
[/units]
# シナリオファイルへのパスを追加
{~add-ons/MyCampaign/scenarios}
#endif
なお、単独のシナリオでしか使わないマクロは、そのシナリオの中で定義することが可能ですが、この場合も、定義を先に記述する必要があります。
例
[scenario]
略
#define SAY_GOOD_BYE ←マクロの定義(#enddefまで)
[message]
speaker=Poppon
message= _ "さよなら。ケロリン様"
[/message]
#enddef
略
[event]
name=last_breath
[filter]
id=Poppon
[filter]
{SAY_GOOD_BYE} ←マクロの実行
[/event]
略
[/scenario]
マップエディタについて
マップエディタにはバグがあり、一部の地形を選択しようとすると、突然異常終了してしまうことがあります(当然それまでの変更は消え去ります。)。
こまめにセーブしながらマップを作成しましょう。
なお、地雷的な地形は、通常あまり使わない地形が多いので、さほど支障になることはないと思います。
あてにならないエラーメッセージ
シナリオ、ユニット設定ファイル、マクロ設定ファイル等に WML 違反の書き間違いがあるとそのキャンペーンを開始(再開)しようとしてもエラーメッセージが表示されます。
エラーメッセージを読むとどのファイルの何行目がおかしいよということが書いてあります。
単なるタグの閉じ忘れなどは、たいていこのエラーメッセージで発見できますが、ユニットの設定ファイルや、マクロなどは、まったく関係ないファイルにエラーがあると表示されることがよくあります。
これをやられると、エラーの原因発見にえらく手間取る場合もあります。
そんなこともあるので、特にマクロや自作ユニットを加えたような場合は、こまめに動作確認をすることをお勧めします。
最終更新:2017年06月04日 10:32