<aside> ⚠️ 現在開発中の WWA Script に関する情報がご覧になれます。 不安定版 WWA Wing でご利用になれますが、将来的に予告なく仕様が変更される可能性があります。

</aside>

<aside> 💁‍♀️

不安定版は下記からダウンロードができます。 https://wwawing.com/downloads/

</aside>

WWA Script

物体・背景パーツのメッセージに <script> タグを記述するとその後の項目がWWA Script として記述できます。

マップデータの外部にスクリプトを置くこともできます。詳しくは「外部スクリプト対応」の項目をご覧ください。

テストプレイサイト

World Wide Adventure Wing

現状で暫定的にテストサイトのフォーム欄にスクリプトを書き、Xキーを押すことでスクリプト実行をお試しいただけます。

スクリプトで使用可能な値

詳細な説明は以下を参照してください

マクロで利用可能な値

値の名前
v[N] (0 ≤ N ≤ 255, N は整数) ユーザ変数
v["..."] (”…” の部分は二重引用符で囲われた文字列) 名前付きユーザ変数
HP プレイヤーの生命力
HPMAX プレイヤーの生命力最大値
0 は無制限を意味します。
AT プレイヤーの攻撃力
DF プレイヤーの防御力
GD プレイヤーの所持金
STEP プレイヤーの移動回数
TIME ゲーム開始からのプレイ時間 (ミリ秒)
PX プレイヤーがいるX座標
PY プレイヤーがいるY座標
CX プレイヤーがいる画面の一番左上のX座標
CY プレイヤーがいる画面の一番左上のY座標
m[N][M] 座標 (N, M) にある背景パーツ番号
o[N][M] 座標 (N, M) にある物体パーツ番号
ITEM[N] N = 0 の場合: 値を代入するとその物体パーツをアイテムボックス内の空き位置に配置します。値の読み取りはできません。
1 ≤ N ≤ 12 の場合: アイテムボックス内にある物体パーツ番号。
空の場合は 0 となります。
X メッセージを出したパーツが存在する X 座標
イベント実行時は PX と同じ値
Y メッセージを出したパーツが存在する Y 座標
イベント実行時は PY と同じ値
ID メッセージを出したパーツの番号
イベント実行時は -1
TYPE メッセージを出したパーツの種類
0 で物体、1 で背景
イベント実行時は -1
PDIR
⚠️ 2023-07-08 現在、ジャンプゲート移動後のステップ動作との相性の問題で代入しても向きが設定されないことがあります。 プレイヤーが向いている方向
2: 下, 4: 左, 6: 右, 8: 上
テンキーを意識するとわかりやすいです。
LOOPLIMIT for文内で繰り返し実行できる上限回数
ITEM_ID CALL_GET_ITEM() CALL_USE_ITEM() CALL_GET_ITEM_FULL()
内でのみ使えます。直前に取得・使用したアイテムのIDを得ることができます。
その他の関数で呼ばれた場合は -1を得ます。
ITEM_POS CALL_GET_ITEM() CALL_USE_ITEM() CALL_GET_ITEM_FULL()
内でのみ使えます。取得・使用したアイテムの位置 (1 ≤ ITEM_POS ≤ 12)を得ることができます。
アイテムがいっぱいで取得できなかったときや、その他の関数で呼ばれた場合は -1を得ます。

スクリプトで使用可能な関数

関数名 説明 不安定版対応
RAND(V) 0 以上 V 未満の乱数値を返す
(言い換えると 0 以上 V - 1以下の乱数)を返す
JUMPGATE(X, Y) 座標(X,Y)にジャンプする
MESSAGE(STR) 引数で与えた文字列をメッセージとして表示
MSG(X) 引数で与えた文字列をメッセージとして表示
💡文字列中に \\n を書くことで改行できます。
MSG(”ここで→\\n←改行されます”)
SOUND(X)
実際にサウンド配置したパーツしか鳴りません

【2026/03改良】引数に文字列を入れることで別途 ./audio/sounds.json で定義したmp3を鳴らすことが出来る | 済

【2026/03改良】 実装中 https://github.com/WWAWing/WWAWing/pull/832 | | DEL_PLAYER(X) | ‣ | 済 | | ABLE_CHANGE_SPEED(x) xはtrue/false ⚠️まつゆきメモ2023-07-08: 正式リリース時に名前が変わる可能性が高いです。 正式な名前が決定した後でも現在の関数名のままご利用いただけるようにする予定です。 | ‣ | 済 | | SET_SPEED(x) | ‣ | 済 | | CHANGE_GAMEOVER_POS(x, y) | ‣ | 済 | | SAVE(x) | ‣ | 済 | | LOG(x) | ‣ | 済 | | HIDE_STATUS(KIND, HIDE) | ‣ | 済 | | PARTS(ID1, ID2, TYPE, THISS_SIGHT) | ‣ | 済 | | FACE(X_DEST,Y_DEST,SRC_X,SRC_Y,W ,H) | ‣ | 済 | | PARTS_MOVE(NUM) | ‣ | 済 | | EFFECT(WAIT_TIME,*X1,Y1,X2,Y2,X3,Y3,X4,Y4)* | ‣ | 済 | | CHANGE_PLAYER_IMAGE(SRC_X,SRC_Y) | ‣ | 済 | | HAS_ITEM(X) | X番のアイテムを持っているならTRUE | 済 | | REMOVE_ITEM(X, IS_ALL) | 所持している物体番号X番のアイテムを削除する IS_ALL=0 X番のアイテムを1つだけ削除する IS_ALL=1 X番のアイテムを全て削除する | 済 | | GET_UNIXTIME() | 現在のUNIXTIMEを取得する | 済 | | GET_DATE_YEAR() | 現在の年を取得する | 済 | | GET_DATE_MONTH() | 現在の月を取得する | 済 | | GET_DATE_DAY() | 現在の日を取得する | 済 | | GET_DATE_HOUR() | 現在の時を取得する | 済 | | GET_DATE_MINUTES() | 現在の分を取得する | 済 | | GET_DATE_SECONDS() | 現在の秒を取得する | 済 | | GET_DATE_MILLISECONDS() | 現在のミリ秒を取得する | 済 | | GET_DATE_WEEKDAY() | 現在の曜日を取得する 返却値の数字の仕様は以下参照 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay | 済 | | CHANGE_SYSMSG() | システムメッセージを変更する 第一引数はシステムメッセージコード (‣参照), 第二引数はメッセージ。 システムメッセージコードを名前で与える場合は文字列として与えてください。 例: CHANGE_SYSMSG(”NO_ITEM”, “アイテムがない!”) リセットする場合は第二引数を与えないでください。 | 済 | | SHOW_USER_DEF_VAR() | ユーザー定義変数の一覧をコンソール出力する | 済 | | ABS(x) | 絶対値を返す | 済 | | GET_GAMEOVER_POS_X() | 現在のゲームオーバー座標のX座標の値を返す | 済 | | GET_GAMEOVER_POS_Y() | 現在のゲームオーバー座標のY座標の値を返す | 済 | | ABORT_BATTLE() | ダメージカスタマイズ関数内で使うと、戦闘を即座に打ち切る それ以外の場合には何も起きない v4.1.0-unstable.based-on.3.12.11.p.1 以降は、 ABORT_BATTLE() が呼ばれるとそれ以降のWWA Script の処理は実行されない (EXIT() 相当)。 | 済 | | EXIT(x) | WWA Script の処理を途中で打ち切る。 (ステータスコードを引数で設定できるが、将来のためのもので、現在これを使える箇所はない。) | 済 | | GET_IMG_POS_X(parts_id, is_object, is_first_motion) | 指定したパーツ番号の物体/背景が属する画像ファイル上のX座標の値を返す is_object=0: 物体 is_object=1: 背景 is_object 省略時には物体が指定される

is_first_motion は物体を指定したときのみ有効。

物体パーツは2つの画像で構成されているため、is_first_motion=0 で1つ目の画像のX座標を、is_first_motion=1 で2つ目の画像のX座標を取得する。

物体かつis_first_motion 省略時には1つ目の画像のX座標を取得する | 済 | | GET_IMG_POS_Y(parts_id, is_object, is_first_motion) | 指定したパーツ番号の物体/背景が属する画像ファイル上のY座標の値を返す is_object=0: 物体 is_object=1: 背景 is_object 省略時には物体が指定される

is_first_motion は物体を指定したときのみ有効。

物体パーツは2つの画像で構成されているため、is_first_motion=0 で1つ目の画像のY座標を、is_first_motion=1 で2つ目の画像のY座標を取得する。

物体かつis_first_motion 省略時には1つ目の画像のY座標を取得する | 済 | | IS_NUMBER(x) | 引数の値が数かを判定する IS_NUMBER(LP[0]) のようにLoop Pointerが使用可能かを判定する目的で使う関数。 | 済 | | LENGTH(x) | 指定した名前付きユーザー定義が配列・オブジェクトの場合に配列の長さまたはオブジェクトの要素数を返す。 | 済 | | CLONE(x) | 指定した値をクローンします。 ※JavaScript 同様、配列やオブジェクトを代入するとその全体ではなく、それが「ある場所」の情報のみコピーされます。例えば、v["A"]=[ {"a":11,"b":12,"c":13}, {"a":21,"b":22,"c":23}, {"a":31,"b":32,"c":33}] v["B"]=v["A"]; のような代入を行ったあと、 v[”A”][0].a を書き換えると、 v[”B”][0].a も全く同じものなので書き換わってしまいます。 これを防止するために、この関数では配列やオブジェクトの構造を丸ごとコピーします。 | 実装凍結 | | WAIT_ENTER(enter_exec_func_name, up_key_call_func, down_key_call_func, right_key_call_func, left_key_call_func) | 実行するとメッセージウィンドウが表示せず硬直状態となる。EnterまたはEsc、画面クリック、ジョイパッドのAボタンを押すと硬直状態が解ける。 硬直状態解除時・硬直中に上下左右キーを押すと引数で指定したユーザー定義関数が呼ばれる | 実装中 https://github.com/WWAWing/WWAWing/pull/830 |

スクリプト例

// 変数0番に100を代入します
v[0]=100;
// 生命力に1000を代入します
HP=1000;
// 攻撃力に0から100までの乱数を代入します
AT=RAND(100);
// 防御力に現在のプレイヤーX座標を入れます
DF=PX;
// 所持金に現在の歩数を入れます
GD=STEP;
// 現在の所持金を表示します
MSG("今の所持金は"+GD+"ゴールドです。");
// 座標(10, 20)にジャンプします
JUMPGATE(10, 20);
// 座標(10, 20)に物体パーツ1番を設置します
o[10][20] = 1;
// 座標(30, 50)に背景パーツ2番を設置します
o[30][50] = 2;
// 物体パーツ10番のアイテムを取得します
ITEM[0] = 10;

// 20番のアイテムを持っているときだけ扉を開きます
if(HAS_ITEM(20)) {
    REMOVE_ITEM(20);
    o[PX][PY-1] = 0;
    MSG("扉が開いた!")
}
else {
    MSG("鍵がないと扉は開かないようだ...")
}

if-else if-elseステート

// HPが1000以上なら変数0に乱数の0から1000までを代入する
if(HP > 1000) {
  v[0] = RAND(1000);
}
else if(HP > 100) {
  v[0] = RAND(100);
}
else {
  v[0] = 0
}

if(v[0] > 20) {
	if(v[1] > 30) {
    v[2] = 20;
  }
}

forステート