<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座標
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)
実際にサウンド配置したパーツしか鳴りません
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)
⚠️ 2024-01-14: MSG 関数による改ページには今のところ未対応です。
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座標を取得する | 済 | | LENGTH(x) | 指定した名前付きユーザー定義が配列・オブジェクトの場合に配列の長さまたはオブジェクトの要素数を返す。 | | | GET_OBJECT_TYPE(parts_id) | (定義策定中) | |

スクリプト例

// 変数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ステート