したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

製作お助け掲示板

1Yes:2010/06/25(金) 01:34:11
製作で困ったことがあれば
質問をどうぞ
どんな初歩的な質問でも
キャラ製作の先人達がやさしくお答えいたします。
ただし教えてくれた内容が間違っていても怒らないように。
だれにでも間違いはあります。
ココで得た知識を吸収し、教える側に回れるように精進しましょう。
また
先人達も知識がさび付かないように、理解をより深めるために
お互いに知識を出し合い、高め合いましょう。

613blank:2011/05/12(木) 23:37:43
SFFは画像データとパレットデータの集合体

MCMでAから順に画像を登録していくと、パレットを共有しない場合(①)は
Aのパレット→Aの画像→Bのパレット→Bの画像→Cのパレット→…
という形でSFF内に保存されてる。
A〜Cのパレットを共有していてD以降のパレットを共有していない場合(②)は
Aのパレット→Aの画像→Bの画像→Cの画像→Dのパレット→Dの画像→Eのパレット→…
という形でSFF内に保存されていて、BとCはAのパレットを読み込むようになる。

一方、Zから順に画像を登録していくと全てパレットを共有してる場合(③)は
Zのパレット→Zの画像→Yの画像→Xの画像→…
という形でSFF内に保存されているけど、MCM2.0ではAの画像→Bの画像の順に表示される。
MCM1.3では実際に登録されている順番通りに表示される。

ここで、MUGEN上では一番最初のパレットをactファイルのパレットに差し替えることで1P〜12Pのカラーリングを表示してる。
だから①だとAのみにactが適用され、②だとA〜Cに、③だとA〜Z全てに適用される。


actファイルは番号と色の対応表

0番は透過色で、MUGEN上では必ず透過される。
1番〜255番は色情報を格納できて、0,0,0なら黒、255,0,0なら真っ赤、0,255,0なら緑、0,0,255なら真っ青、255,255,255なら真っ白
255,0,255なら紫、とまあこの辺は「RGB」とか「光の三原色」とかでググったら分かるんじゃないかな。
で、KFMの場合は1番〜239番が0,0,0つまり黒で、240番〜255番には実際にKFMを表示するための色が格納されてる。

画像は座標と番号の対応+番号と色の対応表で
『1番…白、2番…赤』
111111111111111
111111222111111
111112222211111
111111222111111
111111111111111
で日の丸の画像を作ったとしても、KFMのSFFに登録してMUGEN上で表示されるのは
KFMのactである『1番…黒、2番…黒』を読んだ結果、黒い長方形になる


こんな文章で伝わるか分からんが、>>607への回答。

あと、注意点としてはMCMでAから順に登録していってD以外を全てパレット共有にした場合は
A〜CはAのパレット、DはDのパレット、E〜ZはEのパレットをそれぞれ読む(E以降がAのパレットを読むことはない)。
だからact読ませてもA〜Cには適用されるけどE以降には適用されない。
キャラ画像登録して(A〜C)エフェクト登録して(D)新しく技を追加しようとキャラ画像追加登録する(E)とかの時に
「Dを消してEを追加登録してDを再登録する」という面倒臭いからMCMはお勧めしない。

614blank:2011/05/12(木) 23:56:18
あと、①と②を比べれば分かるけど、②にはBのパレットとCのパレットが無い分SFFの容量が軽くなるし
MUGEN上でのアニメーションで画像をAからBに切り替える時も①だとパレットを一々読み込み直すから②の方が処理もスムーズ
なるべく独自パレットを減らすように心掛けるといい

615ragtime:2011/05/13(金) 22:09:50
すいません、アニメ投稿するにはどうしたら…
GIFに変換したまでは良かったんですけど、その先が

616blank:2011/05/13(金) 23:02:07
一番上に
|HOME |更新 |返信順 |カタログ |文章/画像投稿 |削除 |編集 |管理 |設定| ▼
と並んでるところの「文章/画像投稿」をクリック

617ragtime:2011/05/13(金) 23:10:52
>>616
書き方が悪かったですね…すいません
GIFに一枚一枚個別に変換したんですけど、繋げ方がわからんのです

618gorori:2011/05/13(金) 23:30:17
ragtimeさんはどのソフトをつかっているんですか?
それがわかったほうが他の方が使い方を教えやすいと思いますよん

619ragtime:2011/05/13(金) 23:46:13
GraphicsGaleを使ってます
製品版じゃないですが…

620gorori:2011/05/14(土) 00:08:18
私はEDGEなんで力になれないのですが
GraphicsGaleを使われている方で、どなたか教えてあげてくださいな。

621牛うさぎ:2011/05/14(土) 01:53:17
GIFならGiam(フリーソフト)を使って連結するのが楽かなー、私はGaleだけど毎回そうしてるー直感的だしね!

起動→左の灰色の窓にドラックアンドドロップ(まとめても可)→必要があれば下のところで順番を入れ替える→あとは右で画像
ごとにウェイトを設定して理想の動きになったら完成!!

622ragtime:2011/05/14(土) 08:28:41
>>620
お気遣いどうもです
EDGE使いの方多いですねー使いやすいのなら乗り換えてみようかな?
>>621
ありがとうございます!
早速ダウンロードしてみることにします

623nattan:2011/05/15(日) 15:11:26
自分のキャラのやられ動作を確認しようと思って
トレーニングで自分のキャラをCPUにしてこかすと、
なかなか立ち上がらないんです。

これって何が原因なんでしょうか?宜しくお願いします。

624blank:2011/05/15(日) 15:43:49
5100や5110以外のダウンステートを使ってる、若しくは相手が起き上がりまでステート奪ってる
コモンのダウンステート使ってればLieDown.Time経過するかCommandが入力されるかで5120に飛ぶ筈だからね

625nattan:2011/05/15(日) 16:11:31
こんなに早く返答がいただけるなんてありがとうございます
早速CNSと格闘してみます

626nattan:2011/05/15(日) 17:58:30
連投すいません

>>624
5100と5110をみてみたんですが、
ちゃんと使えてるみたいです(kfm改変なので番号は変えてないと思います)

相手がステートを奪ってる可能性ですが、どのキャラを使ってもこの現象が起こるので
自分のキャラがおかしいのだと思います。

627blank:2011/05/15(日) 18:54:51
なかなか立ち上がらないってのはLieDown.Timeで設定した時間よりも多く倒れ続けてるってこと?
5100や5110を弄ったかどうか、常時監視にChangeState等の影響ありそうなステコン追加したかどうか
この辺が分からないことにはこちらも何が原因か見当がつかない

628nattan:2011/05/15(日) 22:48:41
>>627
なかなか立ち上がらないってのはLieDown.Timeで設定した時間よりも多く倒れ続けてるってこと?
そうです。明らかに長いです。15秒くらい倒れたままです。

5100や5110を弄ったかどうか、常時監視にChangeState等の影響ありそうなステコン追加したかどうか
これはCNSファイルをいじったということですか?それとも別のファイルですか?
airファイルは変なことしてないと思うのですが、CNSファイルは自信ありません。
ただややこしいことはしてないと思うので、必要な記述を消してしまったかもしれません。

この辺が分からないことにはこちらも何が原因か見当がつかない
説明が不十分で申し訳ないです。

629blank:2011/05/15(日) 23:41:19
じゃあMUGENでCtrl+D押して(見たいキャラが1Pなら1回、2Pなら2回押す)デバッグ表示させて
倒れてる間と起き上がってる最中に左下に表示されるStateNoとTime2つを見てみて
・StateNoが5100、5101、5110、5120とは違う値にならないかどうか
・Time(上の方は○○/○○となってるうちの分子)2つが高速でカウントアップされてるかどうか
・表示されてる文字は白か黄色か
あたりを確認してみて

あと、自分で5000番台(特に5100、5101、5110、5120)を追加したり、Common1.cnsを編集したりしたかどうかと
LieDown.Timeをどの値に設定したかも併せて教えて
cns弄ったか覚えてないならMUGENを新たに落としてその中のDataフォルダにあるCommon1.cnsを開いて5100〜5120をコピーして
自キャラのcns開いてCrouch.Friction = ○○の下にペーストしてみて改善されるか確認かな(確認は今まで使ってたMUGENでいいよ)

630nattan:2011/05/16(月) 22:49:56
>>629
・StateNoが5100、5101、5110、5120とは違う値にならないかどうか
STATE NO 5100 と書いてありました。

・Time(上の方は○○/○○となってるうちの分子)2つが高速でカウントアップされてるかどうか
立っているときは、両方動いているのですが、倒れると 上は1/1でとまったまま 下はうごいたままです。

・表示されてる文字は白か黄色か
白色です。(黄色くなることもあるんですね)

あと5100〜5120も試してみたのですが、改善されませんでした。
いろいろと教えていただいてありがとうございます。


デバッグ表示してないものでしたら、ニコニコ動画にあげておりますので、
もしよかったらご参考にしてください。
URLを張ることができないので「とある科学の御坂さん」で検索していただければ出ると思います。

631ベイン:2011/05/17(火) 17:37:23
すいません、質問の方、失礼させていただきます。

飛び道具を弾く、いわゆるグレイズする攻撃を作っているのですが、
飛び道具が何故か攻撃を受けてしまい、分裂してしまいます。
記述は下のものなのですが、問題を見つけることができません。
どなたかご教授いただけないでしょうか?

[State 6058, 0]
type = HitOverride
trigger1 = 1
attr = SCA,AP,AT
slot = 0
stateno = 6108
time = 1

[State 6058, 1]
type = nothitby
trigger1 = 1
value = SCA,AA
time = 1

[State 6058, 1]
type = hitby
trigger1 = 1
value = SCA,AP
time = 1

[State 200 , 1]
type = HitDef
trigger1 = !MoveContact && !MoveReversed
attr = A, NP
damage = 10,5
animtype = light

―移動に関する記述なので中略―

[State 1000, 3]
type = varadd
Trigger1 = MoveContact && NumTarget
value = 1
v = 1

[State 6005, ChangeState]
Type = ChangeState
TriggerAll = NumEnemy > 0
Trigger1 = (EnemyNear,StateNo) = [100,119]
Trigger2 = (((EnemyNear,StateNo) = [5210,5219]) && ((EnemyNear,Time) < 10))
Value = 6067; グレイズ用ステートへ

[State 20091,00]
Type = changestate
trigger1 = movecontact
Value = 6108; グレイズ用ステートへ

[State 20091,00]
Type = DestroySelf
Trigger1 = Root,MoveType = H && Root,StateNo != [120,159]
Trigger2 = !MoveContact && !(ScreenPos X = [-100,420])
Trigger3 = !MoveContact && !(ScreenPos Y = [-100,340])

攻撃側のhitdefもはらせていただきます。

[State 300, 1]
type = HitDef
trigger1 = AnimElem = 7
attr = S, SA
damage = ceil(fvar(1)*(50+5*var(47))),ceil(fvar(1)*(10+1*var(47)))
animtype = hard
getpower = 150
givepower = 100,50
guardflag = L
hitflag = MAF
priority = 3, Hit
pausetime = 0,0
numhits = 1
sparkno = -1
sparkxy = -10,-15
hitsound = s0,6
guardsound = s0,12
guard.sparkno = s10000
ground.type = high
ground.slidetime = 41
ground.hittime = 40
ground.velocity = -1,-5
airguard.velocity = -3,-1
air.velocity = -2,-3
yaccel = .25
fall = 1
air.fall = 1
fall.recover = 0

どうか、よろしくお願いします。

632nattan:2011/05/17(火) 21:11:27
>>629
解決しました
liedown.timeが999になってました。
なぜこんな数字になったのかわかりませんが・・・
どうもありがとうございました。

633blank:2011/05/17(火) 22:08:31
>>631
まずはNotHitByとHitByを同じトリガーで併記する意味は無いから
HitByを削除&NotHitByのValueを「,AA,AT」(新Mugenの場合は「SCA,AA,AT」)へ変更

これで解決しなかったらCtrl+DでStateNo追ってみるべし
ステート滞在中ずっとHitByのPフラグしか立ててないからS,SAが当たるってことは
ステート離れてるかもしれないし、当たって5000番台に行ってるかどうか見とけば
原因として疑うポイントも絞れてくるし

634ベイン:2011/05/17(火) 23:35:53
>>633
おかげで解決できました、ありがとうございます。
どうも、攻撃側にも問題があったようです。

増殖していくのを見ているのも、なにかおかしい気分になるものですね・・・

635名無っしん:2011/05/24(火) 20:50:01
ガードしたときにヘルパーの壁を作成して、ガードが終わったらヘルパーの壁を消したいんですが消えてくれません
どなたか助けてください

コモンステート
[State 120, 0]
type = Helper
name = "Guard"
trigger1 = 1
sprpriority = 1
pos = 0,0
postype = p1
stateno = 3000
helpertype = normal
keyctrl = 0
ownpal = 0

キャラのステート
[Statedef 3000]
type = A
movetype = I
physics = N
ctrl = 0
anim = 3000
sprpriority = 1

[State 3000, 影を消す]
type = AssertSpecial
trigger1 = 1
flag = NoShadow

[State 3000, 親に付く位置]
type = BindToParent
trigger1 = 1
pos = 18,0

[State 3000, ステート変更]
type = ChangeState
trigger1 = StateNo = 0
value = 3001

[State 3001, ヘルパーを消す]
trigger1 = 1
type = DestroySelf

636blank:2011/05/24(火) 22:49:16
まずHelperをTrigger1 = 1で呼ぶと120にいるF数分のヘルパー出てきちゃうから
Trigger1 = !NumHelper(3000)に変更してID = 3000を追加

で、本題はChangeStateのトリガーがおかしいからだね
3000番の個別ステートでStateNo = 0が成り立つことはない
多分Parent,StateNo = 0かRoot,StateNo = 0をやりたいんだと思うからどちらかに変更

あと、ここでは割愛してるだけで、実際のcnsには
State 3000のChangeStateとState 3001のDestroySelfとの間にStateDef 3001が入ってるんだよね?

もう一点、StateNo = 0で感知させるとガー不とかで5000番台に飛んでもヘルパー消えないよ
ガードモーションの付属品だろうからStateNo != [120,155]で感知させた方がいいと思う
要するにChangeStateのトリガーをTrigger1 = Parent,StateNo != [120,155]か
Trigger1 = Root,StateNo != [120,155]に変更すれば思い通りになると思うよ

637名無っしん:2011/05/25(水) 18:54:39
>>636
できました
丁寧な解説ありがとうございます

638ケットシー:2011/05/25(水) 20:58:19
当身技でステートを奪った際に相手のスプライトをステート奪われる直前のもので固定したいのですが可能でしょうか?

639wolf:2011/05/25(水) 22:58:45
>>638
ReversalDef で取る当身であれば
奪った相手を送り込んだステートでanimを変更しなければそのまんまだったはずです。

640blank:2011/05/25(水) 23:23:17
アニメーションも含めて固定だったら
Type = ChangeAnim
Trigger1 = 1
Value = Anim
Elem = AnimElemNo(0)
でおk

もしかしたら↑だと1Fアニメーションが進んだ状態で固定されるかもしれないからそのときは
Elem = AnimElemNo(-(Time=0))
に変えればいい

641Peke:2011/05/28(土) 21:01:48
windows7のペイントについてでもいいですかね・・・
今まで使っていたパレット編集済256色bmpをペイントで開き、どこか範囲選択コピーして貼り付けると
色化けしている状態で貼り付けられてしまいます
色化け防止する手段ご存知の方いらっしゃいませんか?

このままでは256色bmpに貼り付けられないのでsff組み込みが一切できなく・・・
それともあれか、1枚1枚24bitで保存して減色かけて不要パレット消してパレット番地全部合わせるしかないのか・・・

642Peke:2011/05/28(土) 21:21:42
あれできた 迂回になるかな・・・
画像A(256色)と画像B(Aの24bit版)を用意して
画像B側でコピーかけたのを画像Aに貼り付けたところ普通に貼り付けられました
お騒がせしました

うーn クリップボードが256色編集未対応なのかな・・・
なんか余計アナログ化してるんですけお・・・

てか更にやばいことにSAEにsff読ませたらパレットズレ起こしとる・・・
修正偉いかかりそうだ・・・

643Peke:2011/05/28(土) 21:36:39
アレ?
色化けしてないの確認して上書き保存したのに1回ファイル閉じて開き直したら色化けしてるし・・・
なんなのコレ・・・
この分だと新PCじゃ何も作れん・・・

644blank:2011/05/28(土) 21:45:40
パレットは画像に付随してるから
極端な話0,0,0と255,255,255しかない画像ファイルにフルカラーの画像をペーストしても
その2色に二極化されちゃう(ペイントの場合)

ペイントは8bit画像を編集するのに不向きだからwin7対応のパレット編集ソフト見つけるしかない
vistaだけどD-pixed使える(一部機能を使うとフリーズするけど)し、正式対応じゃなくても使えるソフトあると思う

645Peke:2011/05/28(土) 22:15:33
やっぱバグ持ちなんですか・・・
D-pixedは元々減色に使ってたので修正はそっちでちまちまやってみるとします
どうもでした

646Peke:2011/05/28(土) 22:19:01
おっと2行目抜けてました
どうも7のペイントはクリップボード入れた時余計なことに自動色調補正入れてパレット崩すとかあったから多分それかな・・・

647ケットシー:2011/05/28(土) 23:17:25
当身を取ると相手の前方斜め上に移動するようにしたいのですが、x軸の座標をどう設定すればいいいんでしょうか?
てかなんでpossetはexplodみたいにp2posで座標設定できないんだよ!

648blank:2011/05/28(土) 23:58:20
>peke氏
非常に効率悪い方法ですがwin7上に
仮想OSとしてxp等を入れて、そこへ今まで使用していたアプリをインスコする手段もあります。
常にwin7を動かさないと仮想xpが起動しませんので、最終手段だと思いますが…。

649blank:2011/05/29(日) 02:43:12
>>647
当身取ったならBindToTargetで相手基準の位置指定できる
ただし当身取ったステートから離れると相手のMoveTypeがHじゃなくなった瞬間Target消えるから注意
P1StateNoとP2StateNo両方設定して、P2に読ませるステートをMoveType=Hにしておくか
P1StateNo設定せずに当身取ったステート内でその後の処理を行うかのどちらかだね

650Peke:2011/05/29(日) 09:47:19
>>648
旧PCのプレインスト分だけでXP本体は無いのでそれは無理そうです・・・
まぁいい機会と思っておきm
D-pixedでキャンパスサイズ変更と画像2枚開いて相互間でコピペは出来るっぽいのでペイントと同じ使い方は多分できる・・・はず

651ケットシー:2011/05/29(日) 11:04:11
>blankさん
 成功しました、ありがとうございます。
余談、アニメ終了2フレーム前はanimelem = 2 ではなく animelem = -2だと今頃気づいた(どうりで相手にコントロール帰らんわけだ)

652Azuma:2011/05/29(日) 17:20:19
ヘルパーアーマー活用で一発だけ耐えるアーマー技みたいなのを作っているのですが

ヘルパーしか攻撃を喰らわない構造だけに、相手の攻撃が当たったときのヒットストップを無視してしまいます。
本体もヒットストップの影響を受ける(擬似的でもOK)ようにするには、どうすればよいのでしょうか?

653blank:2011/05/29(日) 19:03:03
ヘルパーでGetHitVar(HitShakeTime)+1を読んで本体のVarに格納しておいて

Type = ChangeAnim
Trigger1 = Var(**) > 1
Trigger1 = AnimElemTime(AnimElemNo(-1)) > 1
Trigger1 = Var(**) := Var(**)-AnimElemTime(AnimElemNo(-1))
Trigger2 = Var(**) > 0
Trigger2 = Var(**) := Var(**)-1
Value = Anim
Elem = AnimElemNo(-1)

で擬似的にアニメーションをストップさせて
ほかのステコンもTimeトリガーを使わずにAnimElemTime系のトリガーで実行させればできるかな
因みにAnimElemTime(x)はx枚目になってから何F経過したか、AnimElemNo(-1)は1F前に何枚目が表示されていたかだから
AnimElemTime(AnimElemNo(-1))は1F前に表示されていた絵が表示て何F経ったか(表示された瞬間が0でその次のFが1)を返す

4枚目の3F目でヘルパーが8Fヒットストップする攻撃を喰らった場合、Varに9が入って次のFで
Trigger1でAnimElemTime(AnimElemNo(-1))が3だからVarが9-3=6になってChangeAnim実行
これにより4枚目の1F目が表示される
その後の5FはTrigger1の1つ目を満たさないからTrigger2でVarが1ずつ減りながらChangeAnim実行
これにより上と合わせて6F連続で4枚目の1F目が表示される
その次のFはTrigger2の2つ目でVarが0になると同時にTrigger2 = 0となって実行されなくなるから
普通にアニメーションが進んで4枚目の2F目が表示される
次も普通に4枚目の3F目が表示されて、結果として計8F(=ヒットストップと同じ時間)遅延が生じたことになる

ヒットストップがアニメーションの表示Fより短い場合は追加記述も必要だし面倒
そのアーマー技1つだけならAirを1Fずつに分解した方が簡単
例えば
[Begin Action 999]
999, 0, 0, 0, 3
999, 1, 0, 0, 2

[Begin Action 999]
999, 0, 0, 0, 1
999, 0, 0, 0, 1
999, 0, 0, 0, 1
999, 1, 0, 0, 1
999, 1, 0, 0, 1
にすればTrigger1でやってるややこしい処理が不要になる

654Azuma:2011/05/29(日) 22:09:22
ありがとうございます!

655daren:2011/06/01(水) 05:04:02
画面上に2個のExplodを固定させて表示しようと思うのですが
ID&AIR番号が被ってるわけでもなく、表示場所が重なってる訳でもないのに
どちらか片方しか表示されません。Explod って画面表示制限とか有るんでしょうか?

656blank:2011/06/01(水) 23:26:44
制限としてはMugen/Data/Mugen.cfgをNotePadか何かで開くと
[Config]のLayeredSpriteMaxとExplodMaxがある
前者が本体・Projectile・Explod・HitSpark全体の重ね表示限界で
後者がExplod限定の表示限界だからこれらの値が低いと表示しきれなくなる

ただ、2個程度で限界到達する筈ないからTriggerとかも要確認
Triggerが持続的に成立する記述だったりRemoveTimeが長すぎたりすると
あっという間に膨大な数のExplodを重ね表示してしまうから注意
PauseやSuperPauseが絡んでRemoveが遅れることもある

657daren:2011/06/02(木) 02:49:36
ありがとうございます。Configの記述は制限を受ける程の少数ではなかったので
トリガー周りを洗い出してみたいと思います。
でも、膨大な量のExplodが重なって表示される事もあるとは知りませんでした。
表面上Explod1個でも、その下に大量の・・・見た目では判りませんものね。

658blank:2011/06/02(木) 22:51:47
同じExplodが大量に重なってるかどうかは
Pos = △+4*NumExplod,□
みたいにすれば一目で判るようになる


膨大なってのは誇張表現だけど
例えばTrigger1 = 1でRemoveTime = 600のExplod呼び出すと
毎秒60個のExplod作って、各Explodが消えるのは10秒後だから
実行始めてから10秒後にExplodが600個に達した状態で出現と消滅が平衡になる

あと、RemoveTimeを省略した場合はExplodが読んでるAnimが終了した時点で消えるから
長いAnim読ませてる場合にも↑みたいなことが起こりうる

659仮面魔獣:2011/06/14(火) 00:50:52
ヘルパーにヘルパー出させる場合ってどうすればいいのでしょうか?
;--------------------帰還---------------------
[Statedef 7003];グングニール
type = C
movetype= I
physics = N
ctrl = 0
anim = 7002
velset = 0, 0
sprpriority = 3

[State 7003, 移動速度];グングニール
type = VelSet
trigger1 = AnimElem = 3
x = 8
y = -2+(random%3)

[State 7003, ヘルパーを消去];グングニール
Type = DestroySelf
trigger1 = time > 100

;---------------------------------------------
;-------------追尾弾用ステート----------------
;---------------------------------------------
[Statedef 2010]
type = C
movetype= I
physics = N
ctrl = 0
anim = 2010
velset = 0, 0
sprpriority = 3


[State 2010, ステート変更]
Type = ChangeState
trigger1 = time = 50
value = 2011
ignorehitpause = 1
persistent = 0

ってすればキャラ選択の際落ちてしまうし、それ以前に新たなヘルパーステート持っていくとそれが親のDestroySelf
読み込んで消えてしまい親はずっと残ってしまいます。
助けて下さい

660仮面魔獣:2011/06/14(火) 00:54:39
;--------------------放射---------------------
[Statedef 7002];グングニール
type = C
movetype= I
physics = N
ctrl = 0
anim = 7001
velset = 0, 0
sprpriority = 3

[State 7002, 移動速度];グングニール
type = VelSet
trigger1 = AnimElem = 7
x = -2
y = -4

[State 2010, 追尾弾]
type = helper
trigger1 = AnimElem = 7
id = 2010
name = "2010"
pos = 30,-30
postype = p1
stateno = 2010
helpertype = Normal
ownpal = 1
ignorehitpause = 1
superMoveTime = 99999999999999999
pauseMoveTime = 99999999999999999
size.xscale = 0.5
size.yscale = 0.5

;---------------------------------------------



;---------------------------------------------

[State 7002, ステート変更];グングニール
Type = ChangeState
trigger1 = time = 58
value = 7003
ignorehitpause = 1
persistent = 0

;--------------------帰還---------------------

文字オーバーしてたので2つに分けました。こちらの方が上です

661blank:2011/06/14(火) 22:06:33
貼られた記述だけじゃ落ちる理由が見当たらないけど
親ヘルパー用のDestroySelfを娘ヘルパーに実行させたくないなら
そのDestroySelfにTriggerAll = !IsHelper(2010)をつければいい

662blank:2011/06/14(火) 22:08:43
ありゃ
エクスクラメーションマークが全角になっちゃってるけど
cnsに書くときは半角に直してね

663仮面魔獣:2011/06/16(木) 01:45:00
>blankさん
ありがとうございます。
落ちてしまうのは記述を変えれば直りました

664blank:2011/06/18(土) 13:28:08
やられボイスをランダムで再生するようにしたいんですが、
どのような記述をすればいいんでしょうか?

665blank:2011/06/18(土) 15:44:13
[State -2]
Type = PlaySnd
Trigger1 = GetHitVar(Damage)
Trigger1 = !GetHitVar(Guarded)
Value = s5000,Random%4
Channel = 0
で5000,0〜5000,3にやられボイスを登録すれば4種類からランダム

666blank:2011/06/18(土) 15:53:45
>>665
ありがとうございます!助かりました!

667ケットシー:2011/06/18(土) 21:09:37
無敵移動技に残像をつけようとしたのですが残像が全く表示されません。参考サイトのをほぼコピペしただけなんですが??

[State 1260, 残像]
type = AfterImage
trigger1 = 1
time = 1
length = 20
palcolor = 256
palinvertall = 0
palbright = 30,30,30
palcontrast = 120,120,220
palpostbright = 0,0,0
paladd = 10,10,25
palmul = .65,.65,.75
timegap = 4
framegap = 4
trans = non

[state 1260,残像時間]
type = afterimagetime
trigger1 = 1
time = 10

エラーは出ないものの残像も全くでず・・・。

668blank:2011/06/19(日) 01:25:07
Trigger1 = 1をTrigger1 = Time = 0にして
Time = 1をTime = ○○(残像付けたい時間)にして
AfterImageTimeを-2に移して
Trigger1 = 1をTrigger1 = StateNo != 1260にして
Time = 10をTime = 0にする

Trigger1 = 1でAfterImage実行すると残像情報を1F毎に上書きし続けて
肝心の残像は出るタイミングを見計らってるだけで出ず仕舞いになる筈

669blank:2011/06/19(日) 16:46:22
>>667
いきなりスレ違いの話で恐縮です。
ケットシーさんの連絡先が見つからなかったため、一番書き込みの新しかったここでケットシーさんに質問させていただきます。
ニコMUGENWIKIにみやかかの項目を作らせていただけないでしょうか?
詳しい経緯はニコMUGENWIKIスレを覗いてみて下さい。
ttp://jbbs.livedoor.jp/bbs/read.cgi/internet/1117/1306508949/l50
お返事お待ちしております。

670ケットシー:2011/06/19(日) 18:21:15

>blank氏
>669
 自分で言ってしまうのもなんなのですが、「みやかか」は拙い無料二次創作にすぎませんからアークがいちいち気に止めることはないと思います。
というかこういう議論の対象にさえならないと思ってたくらいです。項目はどうぞお作りくになってください。

671ケットシー:2011/06/19(日) 18:23:43
>668
 成功しました、ありがとうございます。

672アネスコ:2011/06/23(木) 09:09:34
多段ヒットするレーザーを作っていますが、ヒットするのは一撃だけで多段ヒットしません…。ヘルパーを使用しています。下記の書き方をどう修正すれば良いでしょうか?

[Statedef 2000]
type = A
movetype = A
physics = N
velset = 0,0
anim = 8250
sprpriority = 5

[State 2000, Assert]
type = AssertSpecial
trigger1 = 1
flag = noshadow
ignorehitpause = 1

[State 2000, 1]
type = NotHitBy
trigger1 = Time >= 0
value = SCA, NA, SA, HA, NT, ST, HT

[State 2000, 2]
type = HitBy
trigger1 = Time >= 0
value = SCA, NP, SP, HP, AP
stateno = 2090

[State 2000, 3]
type = HitOverRide
trigger1 = Time = 0
time = -1
attr = SCA, NP, SP, HP
slot = 1
stateno = 2090

[State 2000, 4]
type = ChangeState
trigger1 = MoveHit = 1
trigger2 = MoveGuarded = 1
value = 2090

[State 2000,5]
type = changestate
trigger1 = time = 30
value = 2090

[State 2000, HitDef]
type = Hitdef
Trigger1 = time = 1
Trigger2 = time = 12
Trigger3 = time = 15
attr = S, SP
damage = 26,10
getpower = 30,10
givepower = 30,10
animtype = Hard
(以下略)

673blank:2011/06/23(木) 22:37:27
trigger1 = MoveHit = 1では一段目がヒットして1フレーム後に
[State 2000, 4]のChangeStateが作動しているので
[State 2000, 4]
type = ChangeState
trigger1 = MoveHit = 1
trigger2 = MoveGuarded = 1
value = 2090
のMoveHit とMoveGuardedの値を増やしてあげれば多段ヒットするはずです

674blank:2011/06/23(木) 23:49:15
State 2000,4にTriggerAll = Time > 15を追加すればいい

675アネスコ:2011/06/24(金) 09:48:18
>673 さん
>674 さん

お答えいただいてありがとうございます。
教えていただいた方法で試しましたが、
多段にはなりませんでした…。
う〜ん、一体なにが問題なんだ…??

676blank:2011/06/24(金) 19:30:26
>> アネスコ さん
関係ない話ですが、
[State 2000, 2] の stateno = 2090
は消しておいたほうがいいです。動きがおかしくなるときがあるので。

677アネスコ:2011/06/24(金) 21:18:52
>676 さん
ありがとうございます。消去しました。
また皆さんのおかげで多段ヒットに成功しました。
ただ、相手飛び道具を相殺できないという新たな問題が出てきました。
重ね聞きで大変申し訳ないですがどのように修正すればよいでしょうか?

678blank:2011/06/25(土) 00:42:05
飛び道具と言っても色々あるから全部が全部相殺できるわけじゃないけど

・Clsn2設定されたAnim(透過フラグはAS0D256)を読ませたHitFlag = PのProjectileを重ねる・・・Clsn2付きProjectileを相殺
ProjPriorityを極端に高く設定しておけば大抵のClsn2付きProjectileを掻き消せる
Clsn2付きProjectileはHitDefでも消せるからこれをやる意味はあまりない
「0, 0, 0, 0, 1, , AS0D256」とすればcns側で何もしなくても完全透過で表示(つまり非表示)できる

・HitOverrideや-2のSelfState(HelperType = Player)でアーマー張ったダミーヘルパーを重ねる・・・ヒット時に消える飛び道具(Projectile/Helper問わず)を相殺
相手の攻撃がヒットしたと誤認させて相手が用意している飛び道具消去を実行させる
ヘルパーに-2ステートを実行させるには呼び出す際に「HelperType = Player」が必要
-2にある他のステコンにTriggerAll = !IsHelperを付けないと余計なステコンも実行してしまうから注意

・ReversalDefで当身を構えたヘルパーを重ねてTargetStateでDestroySelf付きのステートに無理やり飛ばす・・・当身取られる構造のHelperを問答無用で相殺
非推奨

この辺りで色々な飛び道具に対して相殺を図れる
でもまあ基本的に相殺されるかどうかは相手に任せといた方がいい

679アネスコ:2011/06/25(土) 08:18:52
>678 さん
ありがとうございます〜 無事相殺もできましたw
ダミーヘルパーを重ねるのは全然思いつかず… orz
お答えいただいた皆さん改めてお礼申し上げます。本当にありがとうございました。

680Peke:2011/06/27(月) 22:41:53
久しぶりに頼りにきました・・・
var(3)を永久防止に規定値でvarsetしてmovehitをトリガーに減算
0以下の場合hitdefを無効というstateを組もうとしたのですが
helperからの攻撃がヒットした場合設定値以上にvarが減らされてしまいます

・helperに使用しているair
1枚絵で攻撃判定1個のみ

・helperのhitdef先頭(helperのstatedefは1101)
[state 1101]
type = hitdef
trigger1 = stateno = 1101
trigger1 = movehit = 0
trigger1 = root,var(3) > 0
trigger1 = 1

・statedef -2
[state -2]
type = varadd
trigger1 = numhelper(1101) = 1
trigger1 = helper(1101),stateno = 1101
trigger1 = helper(1101),movehit = 1
var(3) = -1
persistent = 0

helperはこの1個しか出しておらず、画面表示も1hitなのですが
var(3)は-1ではなく何故か-6されます
他に重複する減算処理も無く原因が分かりません
どなたか解決策ご存知ないでしょうか?

本体hitdefはstatenoとmovehit2個でvar減らせるのに・・・ぐぬぬ

681blank:2011/06/28(火) 00:42:56
ヘルパーに実行させてるHitDefのPauseTimeの自分側が6なんじゃない?
Trigger1 = Helper(1101),HitPauseTime = 5とかを追加すれば重複減算なくなる筈

HitDefが当たった場合HitPause中はずっとMoveHit = 1でHitPause解けてから2F目に初めてMoveHit = 2になる
ヘルパーがHitPause中でも本体は普通に動けるから-2で本体がヘルパーの状態を参照すると
MoveHit=1&&HitPauseTime=5のときからMoveHit=1&&HitPauseTime=0の計6F間MoveHit=1が成立し続ける

682Peke:2011/06/28(火) 05:31:15
>>681
persistent=0入れてもhitpausetime中連続処理・・・だと・・・
helper(),hitpausetime=1を追記した所解決しました
ありがとうございました
これでvar(3)に連動するexplodが出せる・・・

・statedef -2
[state -2]
type = varadd
trigger1 = numhelper(1101) = 1
trigger1 = helper(1101),stateno = 1101
trigger1 = helper(1101),movehit = 1
trigger1 = helper(1101),hitpausetime = 1
trigger2 = numhelper(1102) = 1
trigger2 = helper(1102),stateno = 1102
trigger2 = helper(1102),movehit = 1
trigger2 = helper(1102),hitpausetime = 1
trigger3 = numhelper(1103) = 1
trigger3 = helper(1103),stateno = 1103
trigger3 = helper(1103),movehit = 1
trigger3 = helper(1103),hitpausetime = 1
trigger4 = numhelper(1104) = 1
trigger4 = helper(1104),stateno = 1104
trigger4 = helper(1104),movehit = 1
trigger4 = helper(1104),hitpausetime = 1
trigger5 = numhelper(1105) = 1
trigger5 = helper(1105),stateno = 1105
trigger5 = helper(1105),movehit = 1
trigger5 = helper(1105),hitpausetime = 1
var(3) = -1
persistent = 0

683blank:2011/06/28(火) 21:43:21
常時監視ではPersistent効かないよ

684blank:2011/06/28(火) 22:01:01
あと、その方式だと複数ヘルパーが同一Fにヒットした場合1回しかカウントされないから

Type = Null
trigger1 = numhelper(1101) = 1
trigger1 = helper(1101),stateno = 1101
trigger1 = helper(1101),movehit = 1
trigger1 = helper(1101),hitpausetime = 1
Trigger1 = Var(3) := Var(3)-1
Trigger1 = 0
trigger2 = numhelper(1102) = 1
trigger2 = helper(1102),stateno = 1102
trigger2 = helper(1102),movehit = 1
trigger2 = helper(1102),hitpausetime = 1
Trigger2 = Var(3) := Var(3)-1
Trigger2 = 0
trigger3 = numhelper(1103) = 1
trigger3 = helper(1103),stateno = 1103
trigger3 = helper(1103),movehit = 1
trigger3 = helper(1103),hitpausetime = 1
Trigger3 = Var(3) := Var(3)-1
Trigger3 = 0
trigger4 = numhelper(1104) = 1
trigger4 = helper(1104),stateno = 1104
trigger4 = helper(1104),movehit = 1
trigger4 = helper(1104),hitpausetime = 1
Trigger4 = Var(3) := Var(3)-1
Trigger4 = 0
trigger5 = numhelper(1105) = 1
trigger5 = helper(1105),stateno = 1105
trigger5 = helper(1105),movehit = 1
trigger5 = helper(1105),hitpausetime = 1
Trigger5 = Var(3) := Var(3)-1

にした方が正確に勘定できる
「Trigger1 = Var(3) := Var(3)-1」がVar(3)にVar(3)-1を代入する(=Var(3)から1引く)で
「Trigger1 = 0」はTrigger2以降を読ませるためにわざとTrigger1を満たさなくするためのもの

今回はNullステコンで処理すれば気にしなくていいけど
「Trigger1 = Var(3) := Var(3)-1」はVar(3)が1のときに読み込むと「Trigger1 = 0」になるから
「Trigger1 = (Var(3) := Var(3)-1) || 1」みたいにVarの値に関わらず条件満たすようにする必要性がある場合もある

685Peke:2011/06/28(火) 23:07:28
>>683
そういえば常時ですものね・・・外しておきますん

>>684
-2にそのステートを追加でいいのでしょうか?
わざわざありがとうございます・・・

686Peke:2011/06/28(火) 23:18:54
追加じゃなくてnullステ自体でvarがいじれるのか・・・
triggerで判断じゃなくて処理が出来るのは知りませんでした
ありがとうございます

687blank:2011/06/28(火) 23:31:11
追加じゃなくてVarAddの代わりに使う

>>682だとTrigger1〜Trigger5のいずれかが成立したらVar(3)から1引くけど
>>684だとTrigger1が成立していればVar(3)から1引いて、同一FでTrigger2も成立していれば更に1引く

仮に1101〜1105の攻撃が同時にヒットしたら>>682だと-1、>>684だと-5
1101と1103が同時にヒットしたら>>682だと-1、>>684だと-2
永久防止用にヒット数を数えたいんだと思うから>>684の方が良いんじゃないかと思って。
仕様上、複数ヘルパーの攻撃が同時にヒットし得ないならどっちでもいいけど

688D:2011/07/09(土) 21:50:06
初歩的で申し訳ないです
イントロを組み込もうとしてやってはいるんですが、
ステートが読み込まれていないのか、ニュートラル表示から変わりません
他の方の記述とかを見たり、kfmの記述でやっても動かない
どこかで何か記述漏れとか不備があるんですかね?
airを試しに組んだので動かしたかったんですけど、どこに不備があるのかさっぱりで…

689blank:2011/07/09(土) 22:35:07
まずはCtrl+Dで左下に表示されるデバッグ情報を見てSTATE NOやACTIONIDがいくつになっているかをチェック
STATE NOが思っていたのと違うステート番号ならChangeStateの流れを5900から順に追っていく
ACTIONIDが思っていたのと違うAnim番号ならSTATE NOと同じ番号のステートでどのAnimを指定しているかを確認

690D:2011/07/10(日) 02:05:34
>>689さん
デバッグ情報を確認したらやはりどちらもニュートラル状態でした
ステートが認識されていない感じです
common1はいじってないので他が原因でしょうか?
思いつく限りで確認はしましたが…
記述は以下でやってます

[Statedef 190]
type = S
ctrl = 0

[State 190, ステート変更]
type = ChangeState
trigger1 = 1
value = 191

;イントロ
[Statedef 191]
type = S
ctrl = 0
anim = 190
velset = 0,0

[State 191, アニメ変更]
type = ChangeAnim
trigger1 = RoundState = 0
value = 190

[State 191, 特殊効果]
type = AssertSpecial
trigger1 = 1
flag = Intro ;イントロの状態

[State 191, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0

691blank:2011/07/10(日) 03:03:40
それ見る限りじゃ問題無さそうだけど

自分で追加したステートに5900がないかどうか
-3や-2でChangeStateやSelfStateをしていないかどうか
-1のChangeStateにCommand系トリガーやCtrlの付け忘れがないかどうか

この辺をチェックかな

あとはCtrl+Dで左「上」に何か表示された?
Airに[Begin Action 190]が無い場合191ステート素通りして0に行くと思うから
左上のエラーメッセージも確認すると解決できる可能性もある

692D:2011/07/10(日) 16:52:33
デバッグ画面の左上に足りないステートなどが表示されていたのでとりあえず埋め、
左上に表示は出なくなりましたが、やはりイントロが出ません
-3で使っているのは一部のSEぐらいの記述のみ、他はまだ記述していません

ここまでやってダメだと無視して他を作った方がよさそうですね
あるいはどこかでデータを上げて見てもらった方が早いんでしょうか?
しかし、こんなに難しいものだったかな…

693blank:2011/07/10(日) 19:53:11
0ステに
[State 0]
Type = DisplayToClipboard
Trigger1 = 1
Text = "%d"
Params = PrevStateNo
Persistent = 0
を追加してCtrl+Dで左下のSTATE NOの下に表示される数字を見てみて

それか5900、190以外のステートの一番上に
[State ]
Type = ChangeState
Trigger1 = 1
Value = StateNo
を追加して2500ループで落ちた際に表示されるダイアログで
何番ステートを読んでいるか確認

一応確認だけど190番アニメは数Fで終わるような短いやつじゃないよね?
暗転が明けきる前に190番アニメが終わってAnimTime = 0で0ステにChangeStateしてるせいで認知できてないだけとか
イントロは20〜30Fくらいの前置きの後に動かし始めた方が認知しやすいと思う

694D:2011/07/10(日) 22:14:32
>0ステに
追加して確認したところ191表示でした

>それか5900、190以外のステートの一番上に
こちらでやったところ、52や11などで落ちてました
この辺りは正常に読まれていると判断します

イントロアニメは143F。1枚目に30Fおいてますが、
何らかの原因で暗転中に終わってるんですかね?
基本的な何かでミスをしているんだろうか

695blank:2011/07/10(日) 23:06:46
0ステで直前が191なら流れは正常っぽいな
191一番下のChangeStateにTrigger1 = Anim = 190を追加してもダメ?

あと、52や11で落ちたのは本来イントロが発生するタイミング?それとも操作中?
何の操作も無しに52や11を読んでたらPhysicsとかが異常ってことになるけど

696D:2011/07/11(月) 00:19:55
common1に191ステートの下に記述を追加してもダメでした

落ちたのは操作中です。イントロが発生するタイミングではありませんでした
一度だけ確か0ステに組み込んだら始まることもなく0で終了しました
起こり得ない事なんですかねぇ。調べても出てきませんし

697blank:2011/07/11(月) 01:05:30
Common1じゃなくて自分で191用意したんじゃないの?
Common1にあるステートは各自用意したcnsに同じ番号のステートがあれば読み込まれないから
>>690をキャラのcnsに記述したならCommon1の190や191をいくら弄っても何も変わらないよ

DLしたままのCommon1を使ってイントロ発生しないようであればデータ一式直接見た方が早いかも
今日は遅いし明日の夜(たぶん23時頃には来れると思う)にでも・・・その前に他の人が見てくれるかな?

698D:2011/07/11(月) 10:17:34
ちょっとやってみましたが、解決は出来ませんでした。

ここのうpロダのfile954に上げました
どこがおかしいか確認をお願いします
単純な記述ミスなのか分かりません
上記の内容は色々試しましたがダメでした
common1、キャラCNSの両方とも試しました
どなたか分かるでしょうか?

ちなみに、会社から上げたので自分のPCと勝手が違うので正常に圧縮出来てるかは不明です

699通りすがり:2011/07/11(月) 15:33:28
気になったのでDL後確認しましたら
;---------------------------------------------------------------------------
; INTRO (override this state to give character an intro)
[Statedef 191]
type = S
ctrl = 0

[State 191, 1]
type = ChangeState
trigger1 = Time = 0
value = 0
;---------------------------------
と記述でされ、イントロはすっ飛ばしてました。なので
ChangeStateの
trigger1 = Time = 0の記述を

trigger1 = AnimTime = 0 ;(アニメ終了時)に差し替えたところ
一応 airにある190番っぽい動きはしていました。

700D:2011/07/11(月) 19:08:47
>>699さん
うお、動いた!
これが分からなくて1週間悩んでたんですよ…
感謝申し上げます

他の方の見て同じだったから気にしなかったor頭が足りてなかったようです
blankさんにも感謝申し上げます

701blank:2011/07/11(月) 22:49:41
今帰宅
解決したのね、良かった
通りすがりさんGJ

702ヘルパー消滅について質問します:2011/07/17(日) 12:11:47
ヘルパー呼び出しの後、ヘルパーに攻撃させるという記述を作っていますが
「ヘルパー呼び出し〜ヘルパー退場」までの間に
ヘルパー自身ではなく「本体」が攻撃を受けたらヘルパーを消滅させる命令が
どうしても上手くいきません…。

ヘルパーの命令に下記の記述を入れていましたが
どうすれば上手くいくでしょうか…。


[State 1001, HitOverride]
type = HitOverride
trigger1 = Time = 0
attr = SCA, NT, ST, HT, NA, SA, HA,NP,SP,HP
stateno = 1009
time = -1

703blank:2011/07/17(日) 13:04:13
よく分かりませんが 消滅のトリガーに
trigger1 = !IsHelper (プレイヤーがヘルパーでない時)
trigger1 = movetype = H(プレイヤーが攻撃を受けている状態)
を指定してみたら?

704blank:2011/07/17(日) 14:13:55
そのヘルパーに
Type = DestroySelf
Trigger1 = Root,MoveType = H
を実行させればいい
すでにDestroySelfあると思うからそれにトリガーを追加するだけでもいい

注意が必要なのは
本体がヘルパー①を呼んでヘルパー①がヘルパー②を呼んで
ヘルパー①がDestroySelfした後だとヘルパー②からRootを参照することができない
だから本体情報を参照したいヘルパーは基本的に本体自ら呼び出した方がいい

705ヘルパー消滅について質問します:2011/07/17(日) 17:15:43
>703 さん
>704 さん

ありがとうございます
本体ダメージでヘルパーの消去が出来ました
これで先に進めます
本当に助かりました

706島村鰐:2011/07/18(月) 02:13:34
どうも、鰐といいます。
今回は絵のほうを一休みして内部処理(CNS記述)のほうに手をつけていたのですが…
実はカウンターヒットのダメージアップを作っていてちょっと問題が。

(記述)

;カウンターヒット補正
[state -2, カウンターヒット認識]
type = varset
trigger1 = P2movetype = A && movetype = A
var(11) = 1

[state -2, カウンターヒット認識リセット]
type = varset
trigger1 = ctrl
trigger2 = enemynear,ctrl
trigger3 = P2movetype != A
trigger4 = var(10) != 0
var(11) = 0

[state -2, カウンターヒット補正値]
type = varset
trigger1 = var(11) = 1
fvar(2) = 1.2

[state -2, カウンターヒット補正値リセット]
type = varset
triggerall = fvar(2) != 1
trigger1 = var(11) = 0
fvar(2) = 1

…とまあこのように簡易ではありますが
とりあえずP2MoveType = A 且つ (自分の)MoveType = A の時に変数をセットして
fvar(2)の値を技のダメージに掛けるようにしてみたんですが、
問題はHitdefのダメージは「ヒットした瞬間」じゃなく「発生した瞬間」で決定しているらしいことで、
このやり方だと正確には「相手が攻撃中にヒットした場合にダメージがアップ」にはならないわけです。
(正確には「相手が攻撃中に発生したこちらの攻撃のダメージがアップする」ので
 相手の攻撃中に出た攻撃判定が相手の攻撃終了後に持続で命中してもカウンターダメージになってしまう)

一応自分の攻撃のHitdefを全部 trigger != movecontact を条件にして1フレームごとに再発生するように処理すれば
ヒットするフレームで相手が攻撃中か確認できるんですが…

この辺、皆さんどんな感じなんでしょう??

707Azuma:2011/07/18(月) 10:00:19
"McCready & Loganir"氏作のサンドマンみたいな感じで
「棒立ちの人間が砂になって崩れ落ちる」アニメを作りたいんですが

画像加工ソフトで、こういったものを作れるor補助できるものってありますか?

--------------------------------------------------------------------
--------------------------------------------------------------------

>>鰐さん
私も大体そんな感じでHitDefのトリガーで1Fごとに調整する処理にしてます(私はAnimElemTimeトリガー)
…他に方法知らないってのもありますけど
常時監視にvar依存のAttackMulSet置いておけば根性値とか補正も変数で一括管理できるってのは魅力でして。


それと、こっちはゲームの仕様にもよるんですが
私は攻撃判定が出なくなった段階でStateTypeSet使ってMoveType=Iに戻す処理を差し込んでます。
なんでかってーと、大概カウンターヒットはMoveType=Aで判断するので
自分が攻撃終えてフォロースルーの状態や残心してる時に攻撃を喰らってもカウンター判定になるのが困るからです。

リアルでは重心さえ(前に)来てれば振り始めでも振り終わりでも、いわゆるカウンターになっちゃうのかもですけど

708blank:2011/07/18(月) 13:12:26
>>706
変動する補正をリアルタイムで適用する場合HitDef上書きし続けるのが定石かな
Trigger1 = !MoveContactだと当身取られた後も攻撃出し続けちゃうから
Trigger1 = !MoveContact && !MoveReversedの方がいいと思うけど

709島村鰐:2011/07/19(火) 02:58:26
どうもありがとうございます。
とりあえず

[State 200, 攻撃判定]
type = HitDef
trigger1 = AnimElemtime(2) = 0
trigger2 = animelemtime(2) = 1 && !movecontact && !movereversed
trigger3 = animelemtime(2) = 2 && !movecontact && !movereversed


attr = S,NA
damage = ceil(27 * (fvar(1)*fvar(2)*fvar(3)*fvar(4))), 0
guardflag = HL
hitflag = HLAF




…みたいな感じで攻撃判定持続フレーム数分
triggerxを追加すればよいわけですね。
というか逆に言うとこうしないと正確にカウンター判定できないのか…
でもあんまりhitdefのtriggerにこういう記述してるキャラは見ない気もする(笑)。
処理が重くなったりするんでしょうかね。

>>AZUMA殿

あ、あとアドバイスの通りAtateTypeSetでhitdef消失後の
statetypeを変える処理も入れました。
確かにこれもやっとかないと戻りにカウンター取られる(取ってしまう)ことになりますね(笑)。

おかげで何とかカウンターヒットとコンボ補正、(逆)根性値の導入は出来そうです。
有難うございました。

710blank:2011/07/19(火) 07:32:44
いや
Trigger1 = !MoveContact && !MoveReversed
だけでいい
それか
Trigger1 = (AnimElemNo(0)=[2,x]) && !MoveContact && !MoveReversed
という感じで判定ある部分だけに限定するか

711島村鰐:2011/07/20(水) 02:43:06
なんとおっ
一度ステート内で攻撃判定出てからじゃないと機能しないのかと(何故か)思ってましたわ>movecontact系

しかしAnimElemNo( )とは…こんな時に使うのか。

多段技の場合は

[state 200, 攻撃判定初弾]
type = hitdef
trigger1 = animelemno(0) = 3 && !movecontact && !movereversed
(以下略)

[state 200, 攻撃判定2段目]
type = hitdef
trigger1 = animelemtime(4) = 0
trigger2 = (animelemtime(4) = [1,5]) && !movecontact && !movereversed
(以下略)

…で二段目持続部分の上書き発生してるんですかね??
トレモでやると戻りヒット時にはノーマルヒットのダメージに戻ってくれてはいるみたいなのですが
手動ポーズとかのぎこちない確認なんでどうも自信が…

712blank:2011/07/20(水) 22:21:36
初段ヒット〜二段目発生の間にMoveHitReset使ってるなら
二段目の持続も上書きし続けてる筈だよ

逆に言うとMoveHitReset使ってないなら初段がヒットした場合に上書きできない




掲示板管理者へ連絡 無料レンタル掲示板