昨日(2019/6/11)に色々試した結果使えるようになった条件分岐とかを雑に。そのうちまとめます。
・条件分岐
1. ゲージ残量 (ほか、直接取得できる数値) で分岐
//1P2Pのゲージ残量を取得
P1Life = STATSMAN:GetCurStageStats():GetPlayerStageStats(0):GetCurrentLife();
P2Life = STATSMAN:GetCurStageStats():GetPlayerStageStats(1):GetCurrentLife();
//分岐のボーダー設定
border = 0.9
if(P1Life > border or P2Life > border) then
(命令)
else
(命令)
使えそうな数値
ゲージ残量、生きてるor死んでる、これまでのステップ数(ワープ中のノートを利用)、Holdの成功/失敗数、地雷を踏んだ数/避けた数、ハイスピ
2. 特定のノートを踏めたかどうかで分岐
特定のノート直前と直後でステップ数を比較する。
ステップ数1を取得→sleep(0.x)→ステップ数2を取得→比較して差があるかどうか。
//ステップ数を取得
P1steps1 = 0
P2steps1 = 0
for i = 4,8 do
P1steps1 = P1steps1 + STATSMAN:GetCurStageStats():GetPlayerStageStats(0):GetTapNoteScores(i);
P2steps1 = P2steps1 + STATSMAN:GetCurStageStats():GetPlayerStageStats(0):GetTapNoteScores(i);
end
i = 3,4,5,6,7,8がそれぞれMiss、Way Off、Decent、Great、Excellent、Fantasticに対応。1と2はそれぞれ地雷を踏んだ数と避けた数。
ワープ中のノートを利用すればミスを増やさず分岐できる。1F目に仕込めば某MISSIONの真似事ができる。
・譜面分岐
GAMESTATE:SetSongPosition()を利用。
ArrowVortexで右側のミニマップをクリックしたときのように曲も譜面もその位置に移動するので要:曲編集orSOUND:PlayOnce。
SetSongPositionで飛ばしたときの挙動一覧。
1. 通常ノート
後からSetSongPosition()で戻せば改めて反応する。
一方で、一回判定処理を行った(普通に通過した部分)を、SetSongPositionでやり直しても反応しない。
2. BPM変化
なんかバグって曲が終わった。BPMの再読み込みをしないと動かないかもしれない。
3. STOP
通常ノートと似た感じ。曲の長さが変わるのでSetSongPositionの数値には影響は出るが、ワープには影響なく、あとからSetSongPositionで戻せばちゃんと止まる。
ただし、一度処理したSTOPをSetSongPositionで繰り返した場合ももう一回止まる。
・xmlから動画再生
MESSAGEMAN:Broadcast('Movie')
別レイヤーで
<Layer
Name= "Movie",
file="Movie.avi",
InitCommand="pause;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoom,640/(SCREEN_WIDTH);diffuse,1,1,1,0"
MovieMessageCommand="
animate,0.5;
play:
diffusealpha,1.0;
/>
animate,0.5とplayが何をやってるのかは知らない。
以下随時追加。