WWAeval - サンプル集

WWAevalで使用できるeval文やマクロ文のサンプルです。ちょっとした解説も付いています。コピペすればそのまま使えます。

記法の意味などの詳細はマニュアルを見てください。

サンプルをダブルクリックすると全て選択します。たぶん。

今の攻撃力を表示する
$wwaeval
@{at}@
文を「@{」と「}@」で囲むとその文を式として解釈し、その式の値を表示します。
変数を単体で書くとその変数の値を表示します。
今持っているゴールドを表示する
$wwaeval
@{gd}@
今プレイヤーのいる座標を表示する
$wwaeval
X座標:@{PlayerX}@
Y座標:@{PlayerY}@
スコアのようなものを表示する
$wwaeval
あなたのスコア:@{hp*5 + at*10 + df*8 + gd - Step/2}@ 点

求め方:体力×5+攻撃力×10+防御力×8+所持金-移動回数÷2
四則演算記号の「+」、「-」、「*」、「/」を自由に使うことができます。剰余の「%」やべき乗の「**」などもあります。
体力を100に変更する
$wwaeval
$@{hp = 100}@
「変数 = 数値」とすることで値の代入ができます。
行頭に「$」を書くとコメント扱いになるので、式の値(右辺の値)をプレイヤーに見られなくなります。
攻撃力を50増やす
$wwaeval
$@{at = at + 50}@
数学的に考えるとおかしい式になりますが、Javaでは「=」は「等しい」ではなく「代入」を意味するので無問題です。
防御力を1.5倍にする
$wwaeval
$@{df *= 1.5}@
「変数 *= 何か」は「変数 = 変数 * 何か」と同じ意味の式です。「+=」、「-=」、「/=」なども同様です。
この場合の式の値は「変数 * 何か」になります。
攻撃力と防御力を入れ替える
$wwaeval
$@{元攻撃力 = at,
at = df,
df = 元攻撃力}@
「元攻撃力」という名前の一時的に使う変数に攻撃力の値を代入し、そして攻撃力の値に防御力の値を代入した後、「元攻撃力」の値を防御力に代入します。
eval文内では単語や演算子(計算記号)の区切り文字として自由に改行と半角スペースを使うことができ、メッセージには反映されません。
カンマ(,)は式の区切りを意味し、1つの文内で複数の式を書くために使います。この場合表示される値は最後の式のものになります。
物体番号1のアイテムを持っている個数を表示する
$wwaeval
@{ItemCount(1)}@
WWA関数のItemCountを使うことで持っているアイテムの個数が分かります。
アイテムボックスの空きの個数を表示する
$wwaeval
@{
 ItemCount()
}@
ItemCount関数の物体番号を省略するとアイテムボックスの空きの個数を表示します。
プレイヤーの向きによってメッセージを変える
$wwaeval
@{DirSwitch(
"南側から私に話しかけました。",
"左から話しかけた。",
"上から",
"You are speaking to me in the right side.")}@
DirSwitch関数はプレイヤーの向きに応じてメッセージや数値を変える関数です。
物体番号1のアイテムを持っているかどうかで条件分岐をする
$wwaeval
$if=@{ItemCount(1) > 0}@
アイテムを持っています。
$else
アイテムを持っていません。
$endif
マクロ文$ifを使って条件分岐をします。2行目は「番号1のアイテムの所持数が0より大きいなら」、つまり「番号1のアイテムを持っているなら」という意味を表しています。
if文の使い方については次のページが分かりやすいです:Geekなぺーじ : C言語入門:if、else、else if
物体番号1のアイテムを持っているか+攻撃力が100以上かどうかで条件分岐をする
$wwaeval
$if=@{ItemCount(1) > 0 && at >= 100}@
アイテムを持っていて、攻撃力は100以上です。
$elseif=@{ItemCount(1) > 0}@
アイテムを持っていますが、攻撃力は100未満です。
$else
アイテムを持っていません。
$endif
"条件1 && 条件2"は「条件1 かつ 条件2」ということを表します。"条件1 || 条件2"の場合、「条件1 または 条件2」になります。
マクロ文$elseifを使うと、それまでの$ifの条件が合わなかったときにさらにまた条件分岐をします。
全部のアイテムボックスに物体番号1のアイテムを入れる
$wwaeval
$for=アイテム位置, 0, 11
$@{item[アイテム位置] = 1}@
$endfor
$forを使うと繰り返し処理ができます。2行目は「『アイテム位置』という名前の一時変数に、0から11までの数値を順番に入れて処理を繰り返す」という意味になります。
3行目は「『アイテム位置』の位置に番号1のアイテムを格納する」という意味ですが、item変数のアイテム位置はマクロ文$itemなどとは数字が1ずれているので注意してください。
item変数ではなくマクロ文$itemを使ったときは次のようになります。
$wwaeval
$for=アイテム位置, 1, 12
$item=@{アイテム位置}@, 1
$endfor
自分の周り1マスの範囲にいるモンスターを消し去る
$wwaeval
$for=x, @{PlayerX - 1}@, @{PlayerX + 1}@
$for=y, @{PlayerY - 1}@, @{PlayerY + 1}@
$@{物体番号 = Object[y][x]}@
$if=@{AtrObject[物体番号][ATR_TYPE]
       == OBJECT_MONSTER}@
$map=0, @{x}@, @{y}@
$endif
$endfor
$endfor
$ifと$forを組み合わせればかなり高度なこともできます。
2行目と3行目は「プレイヤーの周りの1マスの範囲で、繰り返し処理を行う」という意味です。
4行目では「物体番号」という名前の一時変数に、その位置にある物体パーツの番号を代入します。
5,6行目は「『物体番号』の物体パーツの種類がモンスターなら」という意味を表します。
7行目ではマクロ文$mapを使ってその位置にある物体を消去します。
8行目以降では条件分岐と繰り返し処理の終わりを示しています。

ナビゲーション