スポンサーサイト

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

親変更対策

teamside=2だと親変更でヘルパーの変数がいじられて狂わないか心配
でもsysだけで全部こなすのも大変だし・・・

そこで考えた
[State 100157,ヘルパー]
Type=Helper
TriggerAll=TeamSide=2
Trigger1=PlayerIDExist(ID)&&ID<65536
HelperType=Player
ID=8
Name="last"
StateNo=5150
SuperMoveTime=2147483647
PauseMoveTime=2147483647
IgnoreHitPause=1
[State 100157,最後尾以外は削除]
Type=ChangeState
Trigger1=NumHelper(8)>1&&!(Floor(SysFVar(4))&1)
Value=2101010101
Persistent=256
IgnoreHitPause=1
[State 100157,最終判断]
Type=Projectile
Trigger1=TeamSide=2
ProjID=157157
ProjAnim=3
ProjEdgeBound=2130706431
ProjRemoveTime=0
IgnoreHitPause=1
[State 100157,親変更対策]
Type=ChangeState
Trigger1=TeamSide=2
Trigger1=ID<65536||!(Floor(SysFVar(4))&1)&&Root,NumProjID(157157)%2=0
Value=2101010101
Persistent=256
IgnoreHitPause=1
[State 100157,ヘルパー設置確定フラグ]
Type=VarSet
Trigger1=NumHelper(8)=1&&!(Floor(SysFVar(4))&1)
SysFVar(4)=Floor(SysFVar(4))|1
IgnoreHitPause=1

まあ言わなくてもわかると思いますが欠点は重いことです

3領域目かつ全領域親変更必要な領域(=8454144)までID増やそうぜ!
とか考えてましたが65536がいいとこですね

ウィッチさんとかに至っては動いてくれないし
専用でやることにしましょうかね
スポンサーサイト

デスマシーン撃破

相手にhitpausetimeがあるなら当身でなくせばいいじゃない


最近エグゼリカパッチを解読しようとしていてその過程でデスマシーンが倒せるようになった
だけど短い時間での殺傷力ならアルファゼロを参考にしたほうがいい気もする
もしくはちょっとだけ遅延を使うか

もし遅延するとしたら
trigger1=sysvar(3)<6000 とか
trigger1=gametime%2 とかかなー

新しい撃破挑戦用kfm

夢想天生のある即死の精度を上げようとしていたんだが
これをするとあるタイプのキャラが倒せないんじゃないかと思い
kfm作ってみたらやはり倒せなかった

まあこういう耐性のキャラはほとんどいないとは思うけどね・・・

というわけで今回は夢想天生が倒せなかったkfmを公開します
昔の神キャラのほうが倒せるかもね


W-Reimuが試合開始と同時に倒してくれました

Statedef冒頭のCtrl=

どんな仕様か気になってたんで調査してみた

・ctrl=-1,ctrl=-999 : 変化せず
・ctrl=0-1 : 変化せず
・ctrl=2,ctrl=999 : ctrl=1

憶測だが
1以上ならctrl=1
0ならctrl=0
0未満ならctrl=ctrl
という感じ?

あとhitpausetimeがある状態では読み込んでくれないようですね。残念
まあ並キャラのことを考えれば当然か

新mugenでの不具合の理由が判明

推測していた通りproj***boundの限界値が変更されていたようですね
調査したところ限界値は
256*256*256*51+256*256*51+256*51+51=51*16843009=858993459
のようですね

256*256*256*51+256*256*51+256*の辺りで
法則性に気付いて試してみたらドンピシャだった

ちなみに二進数では
0011 0011 0011 0011 0011 0011 0011 0011
となります

projheightbound,projedgebound,projstageboundで限界が違うかどうかまでは調査してないです
ただprojedgeboundの限界は858993459で間違いないと思う(projedgeboundにステージやアドオンの影響がなければ)


この調査に当たってCNS WIKI見たんですけど
projheightboundとprojstageboundって速度が無ければ関係ないんですね
じゃあ省略してもいいような・・・
速度あるProj撃たずにでかい判定のProj出すことのほうが多いですし

新mugen

新mugenのほうをちょっと勉強してました
新mugen専用キャラとかいるし新mugenとwinmugenの互換について
知っておいて損はないと思った

新mugen触って思ったこと
・エラメが豊富になってる。winmugenじゃエラメが出ないところでも出る
例えばCEIL() RESULT CLAMPED TO INT_MAXとか
PARENT IN RETARGETED TRIGGER HAS BEEN DESTROYEDとか

上のほうはCeil()の計算結果が2147483647を超えたってことじゃないかな
下のほうは・・・もしかして混線のことを咎められてる?

・なんか細かな仕様が違う
[State 120,下準備]
Type=ChangeState
Trigger1=!NumProjID(5900)
Value=5900
Persistent=256
こんな感じの記述があって
Statedef 5900でID=5900のProjをフラグ代わりに出してるんだが
新mugenのほうだと2500ループを起こして死ぬ

推測
1.ProjHeightBound,ProjEdgeBound,ProjStageBoundの仕様が変わっていて、
 オーバーフローを起こしている
2.フレームの終わりにProjを出すようになった等の理由で
 出したProjをそのフレーム中に感知できないようになった


また、全画面用の攻撃判定が新mugenだと機能しなくなっていて
二桁減らすと普通に動いてくれた
もしかして限界値が小さくなってるとか?

・Condが有能
 製作者なら一度はIfElse(PlayerIDExist(A),PlayerID(A),****,0)
 という記述をして、IfElseの不便さを体験したのではないだろうか
 (多分真のほうも偽のほうも読むためエラメが出るのだと思う)

 Cond(PlayerIDExist(A),PlayerID(A),****,0)ならエラメが出ることは無い

 ただ試合開始前に一度全部の記述をチェックされるのか
 Cond(0,sysvar(0):=0,0)
 という記述はエラー落ちした

・Condによる変数いじり
[State -1,変数いじり]
Type=Null
Trigger1=1||Var(0):=(GameTime%50<5)*Enemy,LifeMax-(GameTime%50=[5,9])*Enemy,LifeMax+(GameTime%50=[10,14])-(GameTime%50=[15,19])+(GameTime%50=[20,24])*2147483647-(GameTime%50=[25,29])*2147483648+(GameTime%50=[30,34])*(Enemy,LifeMax*(Random%3-1)+Random%3-1)+(GameTime%50=[35,39])*Random%10**(Random%2+1)+(GameTime%50=[40,44])*Random*Random*Random+(GameTime%50>44)*Random*Random
Trigger1=1||Enemy,Cond(Var(0):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),Var(1):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),e)+Enemy,Cond(Var(2):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),Var(3):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),e)+(略)+Enemy,Cond(Var(58):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),Var(59):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),e)
IgnoreHitPause=1

有名な話だがcondで敵の変数がいじれる
fvar(40)を使えばsysvar(0)もいじれる
sysvar(1)~sysvar(4)とsysfvar(0)~sysfvar(4)しか信頼できない

多分親変更なしでヘルパーの変数弄れると思うので軽くなってありがたいのですが
それにしても強力すぎる・・・搭載も簡単だし

・文字数制限がない
 好きなだけ一行に記述を詰め込むことができます
 ただ演算子があまりに多いとエラー落ちする模様
 1+1+1+1+1+・・・とかやると260行かないぐらいで落ちる

探査が・・・

探査は失敗していても何が原因か分からない失敗が多い気がする
何もないステートのはずなのに誤検知したりタゲステで拾えなかったり

いっそのこと汎用でやるのをあきらめて専用を組みたい(

でも探査さえできれば汎用で倒せそうなキャラ結構いるんだよなー


さて、夢想天生の現状での変更点は以下の通り
・変数の節約
・clsn2取得
・専用
・全領域親変更(精度はまあまあ
・探査(精度が終わってる

探査の精度がもうちょっと上がれば更新したいんだけどね・・・
前倒せていたOmegaTHがなぜか倒せない今の精度ではとても

本体に移した

本体のfvar空いてたんでステ抜け貫通保存してみた
ヘルパーの通常変数は親変更のせいであてに出来ないもんだから

[State -2,]
Type=Null
TriggerAll=Helper(153),FVar(10)>-1
Trigger1=FVar(39)=-1
Trigger1=1||FVar(10+((FVar(14)>-1)+(FVar(19)>-1)+(FVar(24)>-1)+(FVar(29)>-1)+(FVar(34)>-1))*5):=Helper(153),FVar(6)||FVar(11+((FVar(14)>-1)+(FVar(19)>-1)+(FVar(24)>-1)+(FVar(29)>-1)+(FVar(34)>-1))*5):=Helper(153),FVar(7)
Trigger1=1||FVar(12+((FVar(14)>-1)+(FVar(19)>-1)+(FVar(24)>-1)+(FVar(29)>-1)+(FVar(34)>-1))*5):=Helper(153),FVar(8)||FVar(13+((FVar(14)>-1)+(FVar(19)>-1)+(FVar(24)>-1)+(FVar(29)>-1)+(FVar(34)>-1))*5):=Helper(153),FVar(9)
Trigger1=1||FVar(14+((FVar(14)>-1)+(FVar(19)>-1)+(FVar(24)>-1)+(FVar(29)>-1)+(FVar(34)>-1))*5):=Helper(153),FVar(10)
IgnoreHitPause=1

分かりやすさは犠牲になったのだ・・・

trigger1=parent,var(**):=XXX
とかできてもよかったんじゃないかと思った
まあ本体でリダイレクトすればいいけど

小話

小学校のころ
5+6=10
と回答してるクラスメートがいたんで

「じゃあ5+5=9と答えるんじゃないか?」と思って尋ねてみると
5+5=10と答えた

私はもうどう教えていいか分からずに5+6=11となることだけを教えた


・・・いったいどこをどう勘違いしていたのか、今でも気になる

兵藤かなめ12P

兵藤かなめ12P

常時監視を見ればどうやって倒せるのか分かるキャラは助かる
Alive偽装とDamage偽装さえ出来ればすぐに倒せますね

自キャラでは汎用撃破は無理だなー
汎用でalive偽装はしてないし

一応enemy,alive=1で回復ですから
自殺した状態で削り切って
roundstate=3で蘇生しても倒せるかもしれない

親変更

全領域親変更

1と-1だけを発生させる

Random%2*2-1が一番短いと思うけどどうだろう

ちなみに2*Random%2-1だと上手くいかないから
[*]と[%]の優先度は同じみたいですね

marisa

正統派な魔理沙の狂改変っていないよね
って思って2日で作った魔理沙改変だけど

よく考えたらかなり有名な方がもうすでに作ってましたね
検索フォーム
リンク
訪問者数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。