公式マクロにある、SET_LABELマクロの例です。
公式マクロには以下のようなマクロが定義されています。
#define SET_LABEL X Y STRING
[label]
x={X}
y={Y}
text={STRING}
[/label]
#enddef
このマクロ定義がされているので、
{SET_LABEL 2 3 "example"}
と書けば、
[label]
x=2
y=3
text="example
[/label]
と書いたのと同じになります。
自分でマクロを定義する場合、
マクロ定義のほうが、マクロを実際に使用したコードよりも前の行になければなりません。
同じく公式マクロにある UNITマクロの例です。
#define UNIT SIDE TYPE X Y WML
[unit]
side={SIDE}
type={TYPE}
x={X}
y={Y}
{WML}
[/unit]
#enddef
{UNIT 1 Revenant 2 3 canrecruit=yes}
と書けば
[unit]
side=1
type=Revenant
x=2
y=3
canrecruit=yes
[/unit]
と書いたのと同じになります。
マクロ名の後に空白区切りで書かれるもののことを「引数(ひきすう)」と呼びます。
引数は空白区切りなので、ユニットIDなどの空白を含む文字列を書きたい場合、丸かっこで囲む必要があります。
以下のような感じになります。
{UNIT 1 (Orcish Crossbowman) 2 3 canrecruit=yes}
また、引数に何も書きたくない場合は、() と書けばOKです。
{UNIT 1 (Orcish Archer) 2 3 ()}
引数のないマクロを書くこともできます。
#define LEADER
canrecruit=yes#enddef
そしてマクロの引数にマクロを書くこともできます。
{UNIT 1 (Elvish Fighter) 2 3 {LEADER}}
公式マクロには以下のようなマクロが定義されています。
#define SET_LABEL X Y STRING
[label]
x={X}
y={Y}
text={STRING}
[/label]
#enddef
このマクロ定義がされているので、
{SET_LABEL 2 3 "example"}
と書けば、
[label]
x=2
y=3
text="example
[/label]
と書いたのと同じになります。
自分でマクロを定義する場合、
マクロ定義のほうが、マクロを実際に使用したコードよりも前の行になければなりません。
同じく公式マクロにある UNITマクロの例です。
#define UNIT SIDE TYPE X Y WML
[unit]
side={SIDE}
type={TYPE}
x={X}
y={Y}
{WML}
[/unit]
#enddef
{UNIT 1 Revenant 2 3 canrecruit=yes}
と書けば
[unit]
side=1
type=Revenant
x=2
y=3
canrecruit=yes
[/unit]
と書いたのと同じになります。
マクロ名の後に空白区切りで書かれるもののことを「引数(ひきすう)」と呼びます。
引数は空白区切りなので、ユニットIDなどの空白を含む文字列を書きたい場合、丸かっこで囲む必要があります。
以下のような感じになります。
{UNIT 1 (Orcish Crossbowman) 2 3 canrecruit=yes}
また、引数に何も書きたくない場合は、() と書けばOKです。
{UNIT 1 (Orcish Archer) 2 3 ()}
引数のないマクロを書くこともできます。
#define LEADER
canrecruit=yes#enddef
そしてマクロの引数にマクロを書くこともできます。
{UNIT 1 (Elvish Fighter) 2 3 {LEADER}}