スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

一番最初に出したヘルパーのIDから他のヘルパーのIDを割り出す

私の記述がどんどん読みずらくなっていってる気がする

[State -2,探査(HitDef)情報記憶]
Type=VarSet
TriggerAll=Var(6)&126976
TriggerAll=Var(28)=-1&&RoundState=[1,2]
TriggerAll=Var(0):=Var(2)+5*(Var(6)&4032)/64+(Var(6)&126976)/4096-7||PlayerIDExist(Var(0))
TriggerAll=PlayerID(Var(0)),SysVar(3)>-1&&PlayerID(Var(0)),SysFVar(3)=2
(略
var(24+(Var(24)>=0)+(Var(25)>=0)+(Var(26)>=0)+(Var(27)>=0))=PlayerID(Var(0)),SysVar(3)
IgnoreHitPause=1

Var(0)に混線ヘルパーのIDを代入してます

Var(2)+5*(Var(6)&4032)/64+(Var(6)&126976)/4096-7
が混線ヘルパーのIDと等しいということですね

ちなみに
Var(2)=一番最初に出したヘルパーのID(58~2147483647)
(Var(6)&4032)/64=出すことができた最終ヘルパーの数(0~52)
(Var(6)&126976)/4096=探査ヘルパーのターゲットを取った混線の番号(1~24)


しかしここまでして変数を節約して意味があるのだろうか・・・?
本体のfvar40個ガラ空きなんだよなあ
スポンサーサイト

二進数パンドラ

[State 100153,パンドラキラー改用変数調査]
Type=VarSet
TriggerAll=!(Var(7)&63)||!(Var(7)&4032)||!(Var(7)&258048)
Trigger1=Enemy,Var(GameTime%60)=Enemy,StateNo&&Enemy,StateNo!=0
Trigger1=GameTime%60!=(Var(7)&63)&&GameTime%60!=(Var(7)&4032)/64
var(7)=Var(7)|GameTime%60*IfElse(!(Var(7)&63),1,IfElse(!(Var(7)&4032),64,4096))
IgnoreHitPause=1

参照するときは
(Var(7)&63),(Var(7)&4032)/64,(Var(7)&258048)/4096
でできるはず

Projって便利ね

Projを使って開幕認識する企みは上手くいきました
アドオンにも依存しないし変数も使わなくっていいですね

これに限らずフラグの一部はProjで代用できることに気が付いた
変数が浮きますね

しかしまあ問題点もなくはない
・NumProjの使い勝手が悪くなる
・Proj占有(そんなキャラいるだろうか?Explod占有は聞いたことあるが

少数判定

ステ抜け貫通の際に
取得がガバガバでもfvar貫通できたんで
どんな判定されてるのか気になった
[state ]
type = null
trigger1 = fvar(39):=9.99*gametime*gametime*gametime+4.319999*gametime*gametime+0.1435*gametime+123.111001

[state ]
type=null
trigger1=34.999989=34.99999
trigger1=0&&var(0):=9
trigger2=var(9):=gametime
trigger2=fvar(39)=9.99*var(9)*var(9)*var(9)+4.32*var(9)*var(9)+0.1435*var(9)+123.111
trigger2=0&&var(1):=9
trigger3=0.500000=0.499999
trigger3=0&&var(2):=9
trigger4=111.123399=111.123400
trigger4=0&&var(3):=9
trigger5=982.000998=982.000999
trigger5=0&&var(4):=9
[state ]
type=displaytoclipboard
trigger1=1
text="%d,%d,%d,%d,%d"
params=var(0),var(1),var(2),var(3),var(4)

結果は 9 9 0 9 9

あとtrigger1のところを
trigger1=0.999989=0.99999
に変えたら偽になったんだが

整数部分がないと判定が厳しくなる模様?

Enemy(Ctrl),***

変数使う代わりにCtrl使ってEnemy(Ctrl)という記述を最近するのですが
Damage=Enemy(Ctrl),***とするとエラー落ちする模様

var(0):=Enemy(Ctrl),***としてもエラー落ちはしないんですが・・・

Damage=Enemy(Random%2),**
Damage=Enemy(Var(**)),**
Damage=Enemy(HitCount),**
などはエラー落ちしませんでした

Enemy(Ctrl)ってなんかアカンのかなー

追記
以下は普通に動いた
[state ]
type=ctrlset
trigger1=1
value=(NumEnemy>1&&!Enemy,Alive)
[state ]
type=displaytoclipboard
trigger1=1
text="%d,%d"
params=ctrl,enemy(ctrl),life

開幕

変数使って開幕感知しようと思ったけど
本体でProj出せば済むんじゃなかろうか

ProjやExplodのremovetimeは何かと便利だな

処理順

&&は同時に読み込まれるっていう話は聞いたことあるけど、
それ以外は左から順に読んでくれるのかな?

以下の記述は思った通りに動いてくれた
[state ]
type=varset
trigger1=1
sysfvar(0)=(Var(60):=ID)*0+FVar(0)
[state ]
type=displaytoclipboard
trigger1=1||fvar(40):=sysfvar(0)
text="%d"
params=sysvar(0)

varsetのエラー落ち

var(a)=b
 Vを大文字にすると落ちる

fvar(c)=d
 Fを大文字にすると落ちる

sysvar(e)=f
 Vを大文字にすると落ちる

sysfvar(g)=h
 どこを大文字にしても落ちない


まるで法則性が分からんぞ
まあ何はともかくエラー落ちには気を付けようね

hitby探査

そうかselfstateさせるとchangeanim2の効果が切れるのか・・・
盲点だったよ
changeanimで喰らい判定のあるアニメにしないと駄目か

ということはclsn2調査をしてからhitby探査する必要があるのか
それなら探査ヘルパーにclsn2調査もさせてしまうことにしよう

changeanim2が使えたら楽だったんだがなー


しかし大きな番号のステートに穴があった場合どうやって倒すのだろう
専用安定かな

色々

最近ようやく時間が取れてきました
だけどMUGEN以外の趣味に時間使っちゃってる

[変数の代わり]
posとかvelってfloat型の数値だったのね
普通のキャラ製作したことなかったから知らんかった
おとなしくhitcount使っておこう

[projの位置設定]
postype=p2
offset=0,0
でいいかと思ってたけどp2ってあまり信用できないかなー
と思って変えてみた
postype=p1
offset=enemy,pos x-pos x,enemy,pos y-pos y
あとこんなのも考えた
postype=left
offset=enemy,ScreenPos x,pos y

[ChangeState]
changestateってanimの設定とかできたんですね
でも何に使えばいいやら・・・
とんだ先のステートでanimの設定を行えばそれで済みますし
検索フォーム
リンク
訪問者数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。