したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

製作お助け掲示板2

1blank:2012/09/12(水) 22:10:24
>>前スレ999
Var(58)の初期化忘れはこっちのミスだね
10000のHelperとNullの間にVarSetのTrigger1=1のvar(58)=0を追加で。

>>前スレ997で「PlayerIDに使ってるのは8までって」ことなら
VarRangeSetはFirst=8-Var(59)とLast=8になるハズだけど…

本体のVerはそんなに影響してこないと思う。
「:=」を使った代入も使ってるステコンも昔からの共通仕様の範囲内だし。

118blank:2015/04/11(土) 03:17:53
>>116
記述を実際にMUGEN上で確認してみましたが、
「相手が画面端を背にしている状態でヒットすると上手く前進せず複数回ヒットする」
ということで間違いないでしょうか?
もしそうであれば、HitDefの「Ground.CornerPush.Veloff」を省略しているのが原因です。
これを0に設定すれば画面端でノックバックすることがなくなり、前進するかと思います。

それと、このヘルパーが表示するアニメはループ(アニメの最後が-1ではない)と思うのですが、
[State 3001, 終了]の「trigger1 = animtime = 14」という記述はループするアニメでは機能しません。
仮にアニメの表示フレームの合計が14である場合、-13以上0以下の数値を指定するかこのトリガーを削除しなければ、
このヘルパーは画面外に存在し続けることになります。

各項目の詳細は書くと長くなるので、「MUGEN CNS WIKI CHAOS」などを参考にしてください。

119ソルト:2015/04/19(日) 00:40:07
早速ここの住人になりそうな者です。
この前のアドバイスをありがとうございます。おかげでなんとかなりそうです。
ただ次の超必殺技の記述をやろうとして、詰まっちゃったので質問をしに参りました。
下記なのですが、これをヴェノムの「ダークエンジェル」のようなものにしたいのですが
必要以上にヒットが出ちゃうんです。ググってもMUGEN CNS WIKI CHAOSを見てもわからなかったので、
スミマセンが何かアドバイス等がありましたら、お願いします。

以下記述↓
;ホーリー・エンジェラー
[Statedef 3020]
type = S
movetype= A
physics = S
juggle = 4
velset = 0,0
anim = 3020
ctrl = 0
sprpriority = 2

[State 3020, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(4) >= 0 && AnimElemTime(16) < 0
value = 5,0

[State 3020, 超必殺技暗転時間停止]
type = SuperPause
trigger1 = AnimElem = 3
pos = -5, -55
anim = 100
time = 45
sound = 20, 0
poweradd = -2000


[State 3020, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElem = 2
value = , NA, SA, AT
time = 6

[State 3020, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 2




[State 3020, 弾]
type = Helper
trigger1 = AnimElem = 9
helpertype = normal
name = "Holly_ANGEL_tama"
ID = 3021
pos = 63, -50
postype = p1
facing = 1
stateno = 3021
keyctrl = 0
ownpal = 1
supermovetime = 0
pausemovetime = 0
size.xscale = 0.5
size.yscale = 0.5
size.ground.back = 0
size.ground.front = 0
size.air.back = 0
size.air.front = 0
size.height = 0
size.proj.doscale = 0
size.head.pos = 0, 0
size.mid.pos = 0, 0
size.shadowoffset = 0
IgnoreHitPause = 1


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

続きます

120ソルト:2015/04/19(日) 00:42:51
[Statedef 3021, 弾]
type = A
movetype= A
physics = N
anim = 3021
velset = 0,0
sprpriority = 5
movehitpersist = 1


[State 3021, ADD移動]
type = veladd
trigger1 = Animelemtime(8) >= 0
trigger1 = ABS(vel x) <= 5
x = 0.1

[State 3021, SET移動]
type = velset
trigger1 = Animelemtime(8) >= 0
trigger1 = ABS(vel x) > 5
x = 5


[State 3021, あ]
type = PlayerPush
trigger1 = 1
value = 0



[State 3021, 1撃目ヒット定義]
type = HitDef
trigger1 = AnimElemTime(10) >= 0
attr = A, HP
animtype = hard
damage = 90, 4
priority = 5
guardflag = HA
pausetime = 4,7
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = high
ground.slidetime = 12
ground.hittime = 15
ground.velocity = -4
guard.velocity = -4
Ground.CornerPush.Veloff = 0
pausetime = 0,1
guard.slidetime = 18
guard.hittime = 17
airguard.velocity = -3.9,-2.8
air.fall = 1





[State 3021, 終了]
type = destroyself
trigger1 = frontedgebodydist <= -120
trigger2 = time = 300

コマンド(あとで調節する予定)
[State -1, ホーリー・エンジェラー];ゲージレベル2
type = ChangeState
value = 3020
triggerall = command = "Holly.E"
triggerall = power >= 2000
triggerall = statetype != A
trigger1 = ctrl
trigger2 = hitdefattr = SC, NA, SA, HA
trigger2 = stateno != [3010,3100)
trigger2 = movecontact
trigger3 = (StateNo = 1300) && (Time = [12,38])

以上です

121blank:2015/04/19(日) 02:30:32
はじめまして、質問です。
相手のステートを奪ってScreenBoundを実行しmovecamera = 1,0でx軸のみカメラを追うように
自分のステートでも同じようにScreenBoundを実行しmovecamera = 1,0でx軸のみカメラを追うように設定してるはずなんですが
横方向にカメラが動きません(縦にも動きません)。横だけにカメラを追わないのは何故なんでしょうか?
どなたか教えていただきたいです。よろしくお願いします。

122blank:2015/04/19(日) 11:09:37
>>119
HitDefの「trigger1 = AnimElemTime(10) >= 0」によって、
『アニメの10枚目を表示した瞬間からアニメ終了までの全フレーム』で攻撃判定が発生しているのが原因だと思います。
もし仮にアニメの10枚目から14枚目の間でのみ攻撃判定を発生させたいとして、
その場合は以下のように記述する必要があります。
trigger1 = AnimElemTime(10) >= 0
trigger1 = AnimElemTime(15) < 0

>>121
valueを省略していませんか?
もし省略しているなら1に設定してみてください。

123blank:2015/04/19(日) 22:01:16
>>122
value =1しにても変わりませんでした。
どうやらこれはmugenの仕様みたいです。ありがとうございました

124ソルト:2015/04/20(月) 00:00:32
>>122
ありがとうございます。ですが、その記述をすると、なぜか当たらなくなります(10枚目に「Loop」をつけているから?よくわからない(´・ω・`))
後、この前の、記述の質問ですが、追記として「ヴェノムのダークエンジェルのヒット数のように15〜20ヒットしたいのですが
なぜか40ヒット以上になる」です。
連投と、自分の言葉足らずのせいで、ご迷惑をおかけして申し訳ありませんでした。

125blank:2015/04/20(月) 03:44:23
>>124
ヒット数を調整したい場合は
trigger1 = AnimElemTime(10) >= 0
trigger1 = time%X = 0(ステートに入ってからの経過時間をXで割った際の余りが0の場合 この場合はXフレーム毎)
でOKだと思います

あとAnimElemTime(15)〜はアニメの15枚目が存在しない場合には成立しないトリガーとなるので
そのせいでhitdefが機能しなくなったのでしょう

126blank:2015/04/26(日) 05:59:39
補足する必要はないかもしれませんが、初心者でtime%Xが何をしてるのか判らないという方をよく見かけるので少しだけ詳しく。
算術演算子%とは、 値a % 値b の形を取るもので、[*]や[/]、[+][-]と同様、計算するためのものであり
time% という固定されたナニカがあるわけではありません。割った余りをはじき出すための算術演算子です。

例示1
150 % 5 が返す値は0 (150は5の倍数であるため、余りが出ない)
130 % 3 が返す値は1 (130/3=43と余り1)

なぜこんなあまり見たことのないような[time%X=0]の値を使うよう指示されたかですが、
mugenは基本的に60fpsです。1f(フレーム)が1/60秒を表し、60フレームで1秒となります。
timeも同様に1/60秒を1としていますから、同じ大きさと考えて差し支えありません。1t=1fです。
そして60fpsとは、現在のステートの記述を「秒間に60回実行」しているということです。

例示2
trigger1 = alive
と記述すると、ステート実行中は1秒間に60回のペースで延々と繰り返します。(aliveは生死を表すトリガー)

>>122の記述
trigger1 = AnimElemTime(10) >= 0
trigger1 = AnimElemTime(15) < 0
を要約すると、アニメ番号[10枚目、表示時間0以上]、アニメ番号[15枚目、表示時間0未満]の時となります。
つまり、10枚目の0f目から11枚目,12枚目,13枚目、14枚目の最後のフレームまで全てにおいて「HitDefを上書き発生」させています。
Hitした次のフレームには再発生し、またHitする。それがHitした場合はまたさらに次のフレームには再発生する。
そんなようなことを秒間60回も繰り返すので、とびぬけたヒット数を計上してしまいます。
これについては>>122にも触れられていますね。

等間隔で複数ヒットさせたい、けどtime = 0 time = 10 time = 20とトリガーを大量に書くのは煩雑でよろしくない。
そんなときにTime%X=0が非常に強い味方になってくれます。

例示3
Time%10=0と記述した場合、この条件(Timeを10で割った余りが0)を満たすタイミングは
time=0、time=10、time=20、time=30、time=40、time=50、time=60、time=70・・・。
1桁目が0になった瞬間のフレームで余りが0となり、条件を満たします。1桁目1〜9では全て余りが0でなくなり、満たしません。
つまり、Time%10=0 をトリガーに指定すると、秒間に0,10,20,30,40,50の計6回Hitまで、先ほどまでの1/10しか当たらなくなります。

例示4
trigger1 = Time = 0
trigger2 = time = 10
trigger3 = time = 20
trigger4 = time = 30
trigger5 = time = 40
の2つを同時に満たすものをTime % X = 0に書き換えると、
trigger1 = Time >= 0、time <=40
trigger1 = Time % 10 = 0
の2行となります。すっきりしますね。Timeは原則0から始まるので、一行目はたんに[trigger1 = time<=40]だけでも同じ結果が出ます。

以上から、>>122の記述に戻り
trigger1 = AnimElemTime(10) >= 0
trigger1 = AnimElemTime(15) < 0

trigger1 = time % 12 = 0
等と追記すると、秒間に最大でも5Hitまでの制限が加わります(0f,12f,24f,36f,48f)。
ヒット数は60/Xの形で電卓をたたけば手元で簡単に計算できますので、
あとはアニメの表示時間、あたり判定の存在する時間などと見比べながらお好みの値を入力していきましょう。

127blank:2015/04/26(日) 06:09:31
例示4
trigger1 = Time = 0
trigger2 = time = 10
trigger3 = time = 20
trigger4 = time = 30
trigger5 = time = 40
の2つを同時に満たすものをTime % X = 0に書き換えると、 ←まちがい。正しくは「5つを同時に満たすもの」。
trigger1 = Time >= 0、time <=40 ←まちがい。エラーで落とされるのは確定的に明らか。
trigger1 = Time % 10 = 0
の2行となります。 ←まちがい。&& を使わない限り、time>=0を省略しなければ3行になる。


trigger1 = Time >=0
trigger1 = Time <= 40
trigger1 = Time % 10 = 0
もしくは
trigger1 = Time >=0 && Time <= 40
trigger1 = Time % 10 = 0

寝ぼけてんのに慣れないことするもんじゃないネ

128ソルト:2015/05/02(土) 01:16:33
う〜む、もうちょっと自重したほうがいいかももとこんなにコメントしているの自分だけかな?と思う者です。
ちょっとわからないのが二つあります。
一つは、以前書いた「ディズィーのインペリアルレイのような技」なんですが、
ディズィーは、技を発動して、火柱がババババッ(説明が下手ですみません)っと出るはずなのですが
自分が書いたものだと、一回出して、引っ込め、また出てというなんかさみしい感じになります。
どういう記述をすればディズィーの「インペリアルレイ」みたいな感じになりますか?

あと、もう一つはホーミングについてですが、このホーミングをシューティングみたいな自機狙いホーミング弾
にしたいのですが、調べてもさっぱりわからないのです。
一応、下記の記述で完全追尾ホーミング弾を作ろうと思ったのですが、今度はジャンプしたら、ホーミング弾が
空中に行ったまんま、降りてこないのです。
何かアドバイス等がありましたらお願いします
後、こんなに長ったらしく書いちゃってすみません。

129ソルト:2015/05/02(土) 01:21:39
;ホーリー・ペネトレイト「ディズィーのインペリアルレイのような技」
[Statedef 3000]
type = S
movetype= A
physics = S
juggle = 4
velset = 0,0
anim = 3000
ctrl = 0
sprpriority = 2

[State 3000, 物理的なキャラの幅]
type = Width
trigger1 = AnimElem = 2, >= 0
value = 15,0

[State 3000, 超必殺技暗転時間停止]
type = SuperPause
trigger1 = AnimElem = 1
anim = 100
pos = 25, -57
sound = 20, 0
poweradd = -1000
time = 45
;movetime = 0
;darken = 1
;p2defmul = 1.0
;unhittable = 1

[State 3000, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElem = 2
value = , NA, SA, AT
time = 11

[State 3000, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElemTime(2) >= 0 && AnimElemTime(14) < 0
value2 = C, NA
time = 1

[State 3000, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
trigger2 = AnimElem = 12
trigger3 = AnimElem = 20
value = 0, 3

[State 3000, 槍]
type = Helper
trigger1 = AnimElem = 9
helpertype = normal
name = "Holly_yari"
ID = 3001
pos = -15, 0
postype = p1
facing = 1
stateno = 3001
keyctrl = 0
ownpal = 1
supermovetime = 0
pausemovetime = 0
size.xscale = 0.5
size.yscale = 0.5
size.ground.back = 0
size.ground.front = 0
size.air.back = 0
size.air.front = 0
size.height = 0
size.proj.doscale = 0
size.head.pos = 0, 0
size.mid.pos = 0, 0
size.shadowoffset = 0

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

続く

130ソルト:2015/05/02(土) 01:25:57
[Statedef 3001, 槍] 続き
type = S
movetype= A
physics = S
anim = 3001
velset = 0,0
sprpriority = 3
movehitpersist = 1

[State 3001, 移動]
type = PosAdd
trigger1 = AnimElem = 2
x = 45
y = 0

[State 3001, 1撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 9
trigger2 = AnimElem = 10
trigger3 = AnimElem = 11
attr = S, HA
animtype = hard
damage = 90, 4
priority = 5
guardflag = HA
pausetime = 4,7
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = high
ground.slidetime = 12
ground.hittime = 15
ground.velocity = -4,-3.5
Ground.CornerPush.Veloff = 0

[State 3001]
type = changeanim
trigger1 = anim = 9999
trigger1 = animtime = 0
value = 9999

[State 3001, 1]
type = TargetState
trigger1 = movehit
trigger1 = numtarget(3001)
trigger1 = p2statetype=S||p2statetype=C
value = 15020
id = 3001
persistent = 0
ignorehitpause = 1

[State 3001, 終了]
type = destroyself
trigger1 = anim != 9999
trigger1 = frontEdgeBodyDist < -50

131ソルト:2015/05/02(土) 01:26:47
;フォトンブレスク ホーミング弾
[Statedef 1060]
type = S
movetype= A
physics = S
juggle = 4
poweradd= 120
velset = 0,0
anim = 1060
ctrl = 0
sprpriority = 2

[State 1060, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 8
value = 30, 0


[State 1060, 弾放出]
type = Helper
trigger1 = AnimElem = 8
helpertype = normal
name = "Holly_tama"
ID = 1061
pos = -30, -60
postype = p1
facing = 1
stateno = 1061
keyctrl = 0
ownpal = 1
supermovetime = 0
pausemovetime = 0
size.xscale = 0.9
size.yscale = 0.9
size.ground.back = 0
size.ground.front = 0
size.air.back = 0
size.air.front = 0
size.height = 0
size.proj.doscale = 0
size.head.pos = 0, 0
size.mid.pos = 0, 0
size.shadowoffset = 0

[State 1060, 五芒星]
type = Explod
trigger1 = AnimElem = 1
anim = 1063
ID = 1063
pos = -30, -60
vel = 0, 0
scale = 0.3,0.3
postype = p1
sprpriority = -3
pausemovetime = 0
supermovetime = 0
facing = 1
bindtime = 90
vfacing = 1
ownpal = 1
removeongethit = 1

[State 1060, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
続く

132ソルト:2015/05/02(土) 01:27:33
続き
[Statedef 1061, ホーミング弾]
type = A
movetype= A
physics = N
anim = 1061
velset = 0.5,0
sprpriority = -3
movehitpersist = 1


[State 1061]
type = Velset
trigger1 =P2BodyDist X > 0
x= 1

[State 1061]
type = Velset
trigger1 =P2BodyDist X < 0
x= 1

[State 1061]
type = Velset
trigger1 =P2BodyDist Y > 0
y= 1

[State 1061]
type = Velset
trigger1 =P2BodyDist Y< 0
y= -1

[State 1061]
type = posadd
trigger1 = P2BodyDist y > -1;←ここに飛び道具にこれ以上下がって欲しくない値をいれます。
y = -1

[State 1114,影消し]
Type = AssertSpecial
Trigger1 = 1
flag = noshadow

[State 1061, 1撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 4
trigger2 = AnimElem = 5
trigger3 = AnimElem = 6
trigger4 = AnimElem = 7
trigger5 = AnimElem = 8
attr = S, SA
animtype = hard
damage = 90, 4
priority = 5
guardflag = HA
pausetime = 4,7
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = high
ground.slidetime = 12
ground.hittime = 15
ground.velocity = -4,-3.5


[State 10000, 無敵];殴られたり投げられたりしないように設定
type = NotHitBy
trigger1 = Time >= 0
value = , NA, SA, HA, NT, ST, HT


[State 1061,消滅条件1]
type = hitoverride
trigger1 = 1
attr = SCA,AA,AP,AT
stateno = 1062;消滅用のステートです
time = 1


[State 1061, 消滅条件2];相殺する場合、消滅ステートに移行
type = HitOverRide
trigger1 = 1
time = 1
attr = SCA, NP, SP, HP
slot = 0
stateno = 1062

[State 1061,消滅条件3]
type = changestate
trigger1 = MoveHit = 1
trigger2 = MoveGuarded = 1;飛び道具が相手に触れた時、というトリガーです
trigger3 = frontedgebodydist < -10;正面の画面端を10ドット通り過ぎた時、というトリガーです
value = 1062
続く

133ソルト:2015/05/02(土) 01:30:11
続き
[Statedef 1062,消滅]
type = A
movetype = I
velset = 0,0;止めます
physics = N
anim = 1062

[State 1114,影消し]
Type = AssertSpecial
Trigger1 = 1
flag = noshadow

[State 1062, 1撃目ヒット定義] これらのヒットデフは当たった時の衝撃波みたいなのです。
type = HitDef
trigger1 = AnimElem = 2
attr = S, SA
animtype = hard
damage = 90, 4
priority = 5
guardflag = HA
pausetime = 4,7
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = high
ground.slidetime = 12
ground.hittime = 15
ground.velocity = -4,-3.5

[State 1062, 2撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 3
attr = S, SA
animtype = hard
damage = 90, 4
priority = 5
guardflag = HA
pausetime = 4,7
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = high
ground.slidetime = 12
ground.hittime = 15
ground.velocity = -4,-3.5

[State 1062, 3撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 4
attr = S, SA
animtype = hard
damage = 90, 4
priority = 5
guardflag = HA
pausetime = 4,7
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = high
ground.slidetime = 12
ground.hittime = 15
ground.velocity = -4,-3.5

[State 1062]
type = destroyself
trigger1 = animtime = 0
こんなにレスしてしまって申し訳ありません

134blank:2015/05/05(火) 17:38:59
火柱の攻撃判定が出てる絵までを飛び道具本体のアニメにして火柱が消える部分はexplodで代用表示させればいい

135blank:2015/05/05(火) 23:09:51
[State 1061]
type = posadd
trigger1 = P2BodyDist y > -1;←ここに飛び道具にこれ以上下がって欲しくない値をいれます。
y = -1
↑自分が相手より上にいる時1ドット上昇し続ける これのせい

相手の中心付近をサーチさせたいならP2BodyDist Y 不等号 enemynear,Const(size.mid.pos.y)←近くの敵の腰座標を基準とする
の方がいいんじゃないの

136blank:2015/05/09(土) 01:12:00
Projectileにヒット数での補正をかけることは可能ですか?

137blank:2015/05/09(土) 11:11:37
projのダメージにかける事は可能でもあり不可能でもある
というのもprojは出した瞬間から何かを変更することが出来ない不可侵の存在になってしまうので
射出された時点でのヒット数補正分はかけられるけど
射出した後projがヒットするまでに本体等が与えたヒット分を補正に加算する事は出来ないし、相手がやられから復帰してもprojのダメージにはヒット補正がかかったままになる
当然多段ヒットするprojも全段同じダメージにしかできない

138blank:2015/05/10(日) 11:02:55
なるほど…では、ヒットするまでのヒット数を加算するにはどういった記述をすれば…
varでヒット数管理とかですかね?

139blank:2015/05/10(日) 11:38:52
もしくはenemy,gethitvar(hitcount)←(相手が)受けたヒット数のトリガーですな
ただこれはタッグだと味方が攻撃しただけで加算されてしまうし
enemy,もenemynear,もめんどくさい事しないと死体にも反応してしまって
対象が死んでると全攻撃が無補正になってしまうという罠が有ります

140ケットシー:2015/05/16(土) 00:35:51
 歩きステート必殺技問わず少しでもx軸に動くとmakedustが発生するという謎症状が発生してしまいました。
makedustが原因かと思いCNSから全部消してみたのですが症状が消えません。

 どなたか原因がわかる方はおられますでしょうか。

141ケットシー:2015/05/16(土) 00:42:30
今日追加したアーマー用ヘルパーをnullしたところ症状が出なくなりましたが、makedustなんて全然ない・・・
[State -3, HA用ヘルパー管理] ; HAヘルパーを作成
type = Helper
trigger1 = NumHelper(8800) < 1
helpertype = normal
name = "HA Helper"
ID = 8800
pos = 0, 0
postype = p1
stateno = 8800
keyctrl = 0
ownpal = 1

142ケットシー:2015/05/16(土) 00:44:18
続きです
; HA用ヘルパー
;---------------------------------------------------------------------------
[Statedef 8800]; HA用ヘルパー
type = S
movetype = H
physics = N
velset = 0, 0

[State 8800, 本体がきたら場合立ちへ移行]
type = ChangeState
trigger1 = !IsHelper
value = 0
ignorehitpause = 1

[State 8800, 親の位置に固定]
type = BindToRoot
trigger1 = 1
time = 1
facing = 1
pos = 0, 0
ignorehitpause = 1

[State 8800, 透明化]; 透明化
type = AssertSpecial
trigger1 = 1
flag = invisible
flag2 = noshadow
ignorehitpause = 1

[State 8800, ブランクアニメ設定]; HA処理用ヘルパーは基本ブランクアニメ
type = ChangeAnim
trigger1 = 1
value = 20000
ignorehitpause = 1

[State 8800, アニメ変更]; HA処理用 食らい判定アニメ
type = ChangeAnim
;************************************************
; ※ 以下にHA処理を行いたいステートの条件を羅列する。
; ここの記述内容は -3ステートの「HAモーションに打撃無敵付加」の箇所で指定した条件と
; 同じ条件を羅列することになりますが、ヘルパーから本体への参照となる為
; Root, リダイレクトを追記する必要が有ります。
;************************************************
trigger1 = Root, StateNo = 1100 ; ステート1100をHA化
trigger1 = Root, AnimElemTime(7) <= 0 ; ステート1100の7マizenn をHA化
;************************************************
value = Root, Anim
Elem = Root, AnimElemNo(0)
ignorehitpause = 1

[State 8800, 被弾判定制御]; ブランクアニメ時は無敵状態
type = NotHitBy
trigger1 = Anim = 20000
value = SCA
ignorehitpause = 1

[State 8800, 被弾判定制御]; HA状態(Helperは打撃判定を担当する為、全ての投げを無効化)
type = NotHitBy
trigger1 = Anim != 20000
value = , AT
ignorehitpause = 1

[State 8800, HitPause時間初期化]
type = VarSet
trigger1 = Var(41) != 0
trigger1 = Anim = 20000
var(41) = 0
ignorehitpause = 1

143ケットシー:2015/05/16(土) 00:44:54
[State 8800, 前回分のRoot, AnimTime【Var(1)】の初期化]
type = Null
triggerall = Var(1) = 0 || Var(1) = -1
;************************************************
; ※ 以下にHA処理の終了フレームまでのAnimTime取得条件を羅列する。
; ここの記述内容は -3ステートの「HAモーション最終フレームから1F打撃無敵付加」の箇所で指定した条件と
; ほぼ同じ条件を羅列することになりますが、ヘルパーから本体への参照となる為
; Root, リダイレクトを追記する必要が有ります。
; また、取得したAnimTimeをヘルパー変数のVar(1)へ代入する為に「 Var(1) := XXXX 」という記述を
; 行う必要が有ります。
;************************************************
trigger1 = Root, StateNo = 1100 ; ステート1100をHA化
trigger1 = Root, AnimElemTime(7) <= 0 ; ステート1100の7マ以前をHA化
;************************************************
ignorehitpause = 1

[State 8800, ダメージ処理]
type = VarSet
trigger1 = 1
var(40) = GetHitVar(damage)
ignorehitpause = 1

; HA中に攻撃被弾時、もしもHitPauseがHAの残りモーションより長く続く場合
; HA終了直後にHitStop中の相手の攻撃を食らってしまう。
; (本体の変わりに打撃を食らうヘルパーが無敵状態になると共に本体の打撃無敵が解除されるため
; ヘルパー、本体の順にHAで耐えたはずの攻撃を2重に食らってしまう)
;
; その為、ヘルパーが受けた打撃のHitPause時間からHAの残り時間を引いた値が0以上の場合
; (HA終了後にも打撃のHitPauseが続く場合)
; HA終了後も継続するHitPauseの時間分、本体に打撃無敵を付ける。
; その為、ParentのVar(41)へHA終了後も継続するHitPauseの時間を代入する。
;(10フレーム多く打撃無敵を付加。飛び道具とか設置技のような持続が長い技を2重に食らうのは妥協します。)
; (普通の打撃であれば10F以上持続が有るような技は無いと思うので10Fに設定)
; (延長する無敵時間は各々好きなように調節してください)
[State 8800, HitPauseTime取得]
type = VarSet
trigger1 = GetHitVar(damage) != 0
trigger1 = GetHitVar(hitshaketime) + Var(1) > 0
var(41) = GetHitVar(hitshaketime) + Var(1) + 10
ignorehitpause = 1

[State 8800, 前回分のRoot, AnimTime【Var(1)】の取得]
type = Null
;************************************************
; ※ 以下にHA処理の終了フレームまでのAnimTime取得条件を羅列する。
; ここの記述内容は -3ステートの「HAモーション最終フレームから1F打撃無敵付加」の箇所で指定した条件と
; ほぼ同じ条件を羅列することになりますが、ヘルパーから本体への参照となる為
; Root, リダイレクトを追記する必要が有ります。
; また、取得したAnimTimeをヘルパー変数のVar(1)へ代入する為に「 Var(1) := XXXX 」という記述を
; 行う必要が有ります。
;
; ここの条件は、[State 8800, 前回分のRoot, AnimTime【Var(1)】の初期化]の変更部分をコピペすればおkです。
;
;************************************************
; 例1) ステート全体をHAにしたい場合
trigger1 = Root, StateNo = 1100 ; ステート1100をHA化
trigger1 = Root, AnimElemTime(7) <= 0 ; ステート1100の7マ以前をHA化
;************************************************
ignorehitpause = 1

[State 8800, デバッグ]
type = DisplayToClipboard
trigger1 = 1
text = "Var(40) = %d, Var(41) = %d, Var(1) = %d, Root, AnimTime = %d, AnimTime = %d"
params = Var(40), Var(41), Var(1), Root, AnimTime, AnimTime

[State 8800, 攻撃被弾上書き]
type = HitOverRide
trigger1 = 1
attr = SCA, AA, AT, AP
stateno = 8800
ignorehitpause = 1

144ケットシー:2015/05/16(土) 10:07:42
他のアーマー記述で試したところ同様の症状は出ず無事に機能しました。
もしかして
[Statedef 8800]; HA用ヘルパー
type = S←が原因だった?

145blank:2015/05/18(月) 11:59:29
type=SかCでmovetype=Hだと漏れなく塵が出る

146ケットシー:2015/05/20(水) 20:29:21
>type=SかCでmovetype=Hだと漏れなく塵が出る
 おおそうなんですか。しかしなんでこんな仕様に・・

147ソルト:2015/05/24(日) 08:31:56
連続攻撃で浮かせて、浮かせたあと落としたいのですが、いくらやってもわかりません。
(hitdefにそんな機能がない?)
それともステートを奪わなければいけないですかね?
すみませんが、これを分かる方がいましたらお願いします。

148blank:2015/05/24(日) 12:35:16
ヘルパー式飛び道具に補正をかけることってできますか?

149blank:2015/05/24(日) 13:18:36
>>147
言わんとしてることがよくわからない
どんな感じの挙動のこと?

>>148
出来ます
enemy,gethitar(hitcount)でもヒット数変数管理でも何でもOK

150ソルト:2015/05/24(日) 23:18:54
>>149
うーむ、朝書いたのと、国語力がない自分と合わさって、わけわからないこと書いていますね自分
やはり記述も一緒に投稿したほうがいいか…
あと、具体的には、その場で昇竜拳みたいなものをし、自分がある程度の高さまで行ったら、その場で回転
回転し終わったら、刀を降ったまんま降下して、着地する。その時の着地にも攻撃判定もある
その時に衝撃波も出て、それも攻撃判定がある
どんな挙動にしたいか、まず、昇竜拳のように相手を上に行かせたいのに、行かせてもらえない。
もしそれを行った場合、回転するとき、相手は空中に停止しながら喰らい、降下するときに相手も一緒に落とします
これが、自分が考えている挙動です。(あと長ったらしくてすみません)
次に記述です
;スカイクライム ジャンプ準備
[Statedef 1110]
type = S
movetype= A
physics = N
juggle = 0
velset = 0,0
anim = 1110
ctrl = 0
sprpriority = 2

[State 1110, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(1) >= 0 && AnimElemTime(4) < 0
value = 5,0




[State 1110, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 2

[State 1110, ヒット定義]
type = HitDef
trigger1 = AnimElem = 4
attr = S, SA
animtype = Med
damage = 57, 4
priority = 5
guardflag = MA
getpower = 30,5
givepower = 16,3
pausetime = 4,8
sparkxy = 0,-48
hitsound = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime = 18
ground.velocity = -3
guard.velocity = -6
air.velocity = -2,-2
airguard.velocity = -4,-4.5
p2facing = 1
forcestand = 1


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

151ソルト:2015/05/24(日) 23:21:05
;スカイクライム 上昇
[Statedef 1111]
type = A
movetype= A
physics = N
juggle = 0
velset = 0,-14
anim = 1111
ctrl = 0
sprpriority = 2


[State 1111, 一撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 1
attr = S, SA
animtype = B
damage = 57, 4
priority = 5
guardflag = MA
getpower = 30,5
givepower = 16,3
pausetime = 4,8
sparkxy = 0,-48
hitsound = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime = 18
ground.velocity = 0
guard.velocity = -6
air.velocity = 0
airguard.velocity = -4,-4.5

[State 1111, 二撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 2
attr = S, SA
animtype = B
damage = 57, 4
priority = 5
guardflag = MA
getpower = 30,5
givepower = 16,3
pausetime = 4,8
sparkxy = 0,-48
hitsound = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime = 18
ground.velocity = -0.1,-5
guard.velocity = -6
air.velocity = -0.1,-5
airguard.velocity = -4,-4.5
fall = 1




[State 1111, ステート変更]
type = ChangeState
trigger1 = Pos Y = -140
value = 1112

152ソルト:2015/05/24(日) 23:24:27
;スカイクライム 下降
[Statedef 1112]
type = A
movetype= A
physics = N
juggle = 2
velset = 0,0
anim = 1112
ctrl = 0
sprpriority = 2

[State 1112, 降下加速]
type = velset
trigger1 = AnimElem >= 4
x = 0
y = 14

[State 1112, 一撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 2
trigger2 = AnimElem = 3
trigger3 = AnimElem = 4
trigger4 = AnimElem = 5
attr = S, SA
animtype = Med
damage = 57, 4
priority = 5
guardflag = MA
getpower = 30,5
givepower = 16,3
pausetime = 4,8
sparkxy = 0,-48
hitsound = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime = 18
ground.velocity = 0


[State 1112, 五撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 6
attr = S, SA
animtype = Med
damage = 57, 4
priority = 5
guardflag = MA
getpower = 26,4
givepower = 14,3
pausetime = 4,8
sparkxy = 0,-48
hitsound = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime = 18
ground.velocity = -3
air.velocity = 0,4
airguard.velocity = -4,3

[State 1112, 六撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 7
attr = S, SA
animtype = Med
damage = 57, 4
priority = 5
guardflag = MA
getpower = 26,4
givepower = 14,3
pausetime = 4,8
sparkxy = 0,-48
hitsound = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime = 18
ground.velocity = -3
air.velocity = -2,-2
airguard.velocity = -4,-4.5

153ソルト:2015/05/24(日) 23:26:24
続き
[State 1112, 七撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 8
attr = S, SA
animtype = Med
damage = 57, 4
priority = 5
guardflag = MA
getpower = 30,5
givepower = 16,3
pausetime = 4,8
sparkxy = 0,-48
hitsound = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime = 18
ground.velocity = -3
air.velocity = -2,-2
airguard.velocity = -4,-4.5


[State 1112, ステート変更]
type = ChangeState
trigger1 = Pos Y = 0 && Vel Y >= 0
value = 1113

;---------------------------------------------------------------------------------
;着地

[Statedef 1113]
type = S
movetype= A
physics = S
anim = 1113
sprpriority = 1
velset = 0,0 ;ここで速度をリセットしている


[State 1113, 音を鳴らす];着地音
type = PlaySnd
trigger1 = Time = 0
value = 40, 0

[State 1113, 衝撃波]
type = Helper
trigger1 = AnimElem = 1
helpertype = normal
name = "syougeki"
ID = 1114
pos = 30, 0
postype = p1
facing = 1
stateno = 1114
keyctrl = 0
ownpal = 1
SuperMoveTime = 999999999 ;★時間停止中も動かすか1
PauseMoveTime = 999999999 ;★時間停止中も動かすか2
size.xscale = 0.5
size.yscale = 0.5
size.ground.back = 0
size.ground.front = 0
size.air.back = 0
size.air.front = 0
size.height = 0
size.proj.doscale = 0
size.head.pos = 0, 0
size.mid.pos = 0, 0
size.shadowoffset = 0


[State 1113, 移動速度] ;Y方向の速度を0に
type = VelSet
trigger1 = time = 0
y = 0

[State 1113, 軸位置] ;地上に戻す
type = PosSet
trigger1 = time = 0
y = 0

[State 1113, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 4
x = 15

[State 1113, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 5
x = 10

[State 1113, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 6
x = 20

154ソルト:2015/05/24(日) 23:27:41
続き
[State 1113, 1撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 1
attr = S, SA
animtype = hard
damage = 90, 4
priority = 5
guardflag = HA
pausetime = 4,7
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = high
ground.slidetime = 12
ground.hittime = 15
ground.velocity = -4,-3.5

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

[Statedef 1114];衝撃波
type = S
movetype= A
physics = N
anim = 1114
sprpriority = 1
velset = 5,0

[State 1114,影消し]
Type = AssertSpecial
Trigger1 = 1
flag = noshadow


[State 1114, 1撃目ヒット定義]
type = HitDef
trigger1 = AnimElem = 4
trigger2 = AnimElem = 5
attr = S, SA
animtype = hard
damage = 90, 4
priority = 5
guardflag = HA
pausetime = 4,7
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = high
ground.slidetime = 12
ground.hittime = 15
ground.velocity = -4,-3.5


[State 1114,消滅条件]
type = destroyself
trigger1 = animtime = 0
終わり

155blank:2015/05/25(月) 00:41:49
一つ目のHitDefの
ground.velocity = -3 を
ground.velocity = -3,-XX XXは吹っ飛びの強さ
にすりゃ飛ぶんでないの。
あとはFall=1入れるなりで吹っ飛ばしたアニメにするとか

156blank:2015/05/25(月) 03:34:57
>>150
よく分からない内はHitDefの各オプションを省略しない方がいいと思う
仮に省略した場合に参照する数値で問題ない場合も、その数値を実際に入れておく
理由は色々あるけど大きいのは大体こんな感じ

・省略した時に、別のオプションの数値を参照する物、0になる物、1になる物、などが混在している
特に速度(〜Velocity、〜Veloff)や時間(〜Time)は省略時に参照する数値が数珠繋がりだったりするので、
予想外の挙動をした時にどこの数値が原因か分かりにくい
>>118で指摘されてるのもこれ

・GetPowerとGivePowerは省略すると相手に与えるダメージ量を基準に算出されるからバランスが極端になりがち
あとヘルパーのHitDefはGetPowerを0にしておかないと、特定の状況で相手側のゲージが増える可能性がある

それと、いくつものレスを使って記述を書かれても非常に見づらい
1つ2つのレスで収まらない場合はその記述だけを書いたテキストファイルをどこかのアップローダーにアップしてurlを貼ったりはできない?

157ソルト:2015/05/25(月) 15:31:37
>>156
確かに、オプションは設定したほうがいいみたいですね(よっぽどいらない限り)
後、そのおかげで、なんとか浮かすことができました。
ありがとうございます! 

>>非常に見ずらい記述
すみません、実は過去レスを見たらこのような形式ばっかりだったので
それにならって、真似してみたのです。
今後からアップローダーにテキストファイルをアップしてから投稿します。
ご迷惑かけてすみませんでした。

158blank:2015/05/25(月) 23:15:49
>>157
改めて見返すと投げやりな書き方になっててこちらも申し訳ない
あと、解決したのは>>155さんのおかげだと思う

159blank:2015/06/05(金) 00:31:48
以前こちらでヘルパーにも適応されるコンボ補正に関して質問したものですが、
まだ使えるレベルの記述が作成できません。どういった記述にすればいいか教えていただけませんか?

160ケットシー:2015/06/05(金) 23:43:09
>159
まず本体のコンボ補正が-2に

[State -2, damage_reset];攻撃が途切れたら値をリセット
type = VarSet
trigger1 = p2movetype!= H
fvar(0) = 1



[State -2, VarSet]
type = VarSet
trigger1 = stateno = 810
trigger1 = time = 1
fvar(0) = FVar(0) * 0.50
Persistent = 0

[State -2, VarSet];当たったら
type = VarSet
triggerall = MoveHit = 1
trigger1 = stateno = 1010
fvar(0) = FVar(0) * 0.60
Persistent = 0
 で本体の技のhitdefに
damage = Floor(72*fvar(0)), 0;たとえばstate1010の攻撃が当たるとダメージが72*0.6の小数点以下切捨てになる
helperのほうは
damage = Floor(20*root,fvar(0)), 3;「root,〜〜」で本体の〜〜を参照するようになる。この場合は本体のコンボ補正を参照する。

161blank:2015/06/19(金) 13:21:42
>>160
返信が遅れてしまい申し訳ありません。

ヘルパーが1ヒット目の場合補正が適用されないのですが、
適用される方法はありますでしょうか?

162blank:2015/06/22(月) 21:16:23
[helperの攻撃が当たったとき]にダメージの補正値が変わらないってことです?
もしそうなら
helper(123),movehit=1
が[id123のhelperの攻撃が当たったとき]っていう条件なので
補正値更新のステコンに入れるといいよ。
使う場合は事前にnumhelperで存在を調べないと
警告がすごい勢いで流れるので注意してください

163名無しさん:2015/08/08(土) 21:18:11
これがMUGEN関連ツールですが、使えそうですか?
■Fighter Factory 3
ttp://yurusanae.blog98.fc2.com/blog-category-38.html
■SffAirEditor
ttp://www.geocities.jp/sffeditor/

164豆大福:2015/10/13(火) 14:24:11
cnsについて困ったことがあるのでここで質問をさせていただきます。とま氏の魔理沙を
ベースに霊撃ゲージを搭載してみましたがどうやらゲージが床にあり、かつプレイヤーキャラ
の足と接触している状態になってしまっています。
おそらく、魔理沙の記述をコピペしたときのゲージの座標設置の記述が関係していると思うのですが・・・
どなたか知恵をお貸しいただけるとうれしいです。Axfcにアップしたんで、mugenで動作確認していただけたら、ゲージの位置が把握できると思います。

(DLPass = hijirinで,ファイルの番号は3548989番、ファイル名は3548989.zipです。
ファイルのサイズは2〜4MBです。行き方はAxfcのトップ→左メニューのファイル一覧→旧システム版一覧の「Helium」クリック→ファイルの一覧に私のアップしたファイルがあるので
3548989.zipをクリックすると、DL画面へいけます。)

165blank:2015/10/18(日) 17:18:36
一度写す前のとま氏のcnsを見直してみてはいかがでしょうか
そのまま写すと噛み合わないから一度分析したほうがいいです

だめなら総合チャットで相談するのも手かもしれません

166ソルト:2015/10/23(金) 23:53:47
お久しぶりです。
さっそく本題に入りますがscreenboundについてなのですが、画面を固定するために某ページ
にある、記述を使っているのですが、何故か機能しません。
(そのページはGoogleで「mugen screenbound ヘルパー」を検索して4番目のQ.ステージの端ってどう認識したら良いんだぜ?のところ)
あと、そのページの下あたりの
facing*(helper(30000+(facing=-1)*10),pos x-pos x);前方端
-facing*(helper(30000+(facing=1)*10),pos x-pos x);後方端
がよくわからないのですが、何処に入れたらいいのでしょうか?

167blank:2015/10/28(水) 08:00:19
距離検出のトリガーだし、BackEdgeDistみたいな感じで使えば良いんじゃない
trigger1 = 【前方端】 < 30;正面ステージ端までの距離が30未満のとき
みたいに。

168:2016/01/14(木) 16:55:25
gimp2で素材を作っているんですが、
背景色が滲んでいるせいか、
SFFファイルに登録するときに背景色に近い別の色が残ってしまうんですが、どうしたいいでしょうか?

169豆大福:2016/02/11(木) 07:39:33
EDGEを使っている方に質問です。
アニメーションフレームの設定から「毎回位置とサイズを指定」を選んで、編集範囲で設定したサイズと位置に合わせて選択すると
体の位置がところどころ違った位置にあってしまいます。

毎回、位置とサイズを手動で指定するとそのコマだけ、フレームの共通固定位置とは違った位置になり、右もしくは左、上もしくは下に行ったりします。
なので画像自体動かしてもまた違う位置に行ってしまい、時間がかかってしまうので非常に面倒です。
フレームの共通固定位置に合わせてもバラバラになってしまいます。どうすればいいですか?

170blank:2016/02/12(金) 12:59:52
>>169
「毎回〜」のやつで位置が変わるのは選択が若干ずれてるからでない?
「あらかじめ〜」でサイズ指定する方がいいよ。

171blank:2016/02/14(日) 18:34:55
>>169
いまいち、どういう状態になってて困ってるのか上手く読み取れてないのですが、
とりあえず、指定する範囲の大きさは統一したほうがいいです。
ひょっとして画像のサイズに合わせて取り込み範囲を指定しているのでは・・・?
取り込んだ範囲を左上に詰めて表示されるので、それではズレてしまいます。
「取り込み範囲を合わせる」のではなく、「決まった取り込み範囲にドットを合わせる」ほうが楽です。

オオバコさんのサイト→ ttp://www.geocities.jp/zassoh2/index.htm
その悩みを解決できるかどうかは置いといて、とりあえずEDGEを使っているならばこのサイトのアニメ作成講座は非常に参考になると思われます。
(オオバコさん勝手に乗っけてゴメンなさい)

あと、問題が解決した、しないに関わらず報告はしたほうがよいかと(前にも質問をしっぱなしな書き込みがあったので)
解決済みなのかまだ回答が必要なのか判断がつき辛いとレスもつきにくいでしょうし。前者ならよくても後者なら答えが得られませんからね。

172豆大福:2016/02/18(木) 16:55:06
>170さん,171さん
返信遅れてしまい、申し訳ないです。
画像のサイズに合わせて指定した後、プロパティで画像を移動させて調整したにしても中途半端な解決になってしまったなぁと思い、
報告しにくかったんですね。

とりあえずドットのサイズが大きいので、「決まった取り込み範囲にドットを合わせる」というのはありがたいですが
ドットのサイズに合わせて取り込み範囲を大きくしたいと思います。
オオバコさんのサイトはこれから難しいモーション作るときに参考になりそうなのでちょくちょく拝見させていただきます。

以前の質問しっぱなしな件に関しては、自分に至らなかった点があったので、以後気をつけようと思います。
アドバイスありがとうございました。

173スマッチュウ:2016/03/29(火) 10:29:25
今、高頭身早苗さんのことで悩んでいます。
これまで描いたドット絵のほとんどのモーションが黄昏ドットのモーションの流用なのですが、だったら高頭身にする意味などないんじゃないかと(はじめから黄昏ドットを使えばいいんじゃないかと)思っています。
でも、黄昏ドットにないモーションは僕の今の技術では描くのは難しそうです。 どうすれば黄昏ドットにない個性をつけられるでしょうか?

174blank:2016/04/01(金) 19:33:02
>> 173
別に黄昏さんに拘らなくても良いんではない?
kofやsfみたいな所から動作を持ってくるとか。

175スマッチュウ:2016/04/04(月) 15:59:37
>>174
いえ、KOFやSFには早苗さんのようなロングスカートをはいたキャラがいないので、現状黄昏ドットを使わないとスカートの影の付け方がわからないのです。
でも、今のドット絵もうまく影付けできていない気がするのですが・・・
やっぱりスカートの影のつけ方もわからない僕がMUGEN用のドット絵を描くのは無謀だったのでしょうか・・・?

176blank:2016/04/05(火) 01:33:57
逆に考えるんだ
「影なんて付けなくてもいいさ」と考えるんだ

177スマッチュウ:2016/04/05(火) 10:07:47
>>176
影なんて付けなくてもいい・・・?
どういうことでしょうか・・・?

178blank:2016/04/05(火) 23:53:02
メルブラ、わく7、ヴァンパイア辺りにロンスカキャラがいるかな。
電撃にも居たような気がするけど、気のせいかもしれない。
探せばもっと居ると思うよ。

影の付け方〜の話だけど、無謀ではないよ。
分からないなりにやってると、そのうちにぼんやり出来てくるので。

上達に対して明確な方法は無いけど、方法の1つとして他人のあら探しをするってのがあります。
(イメージは悪いですが自分の中で思う分には自由ですし。)
「分からんけど、たぶんこの辺が悪い」から「ここがこうだから悪い」になった辺りで
自分の絵に対しても間違い探しがある程度出来るようになります。

うまい人の絵をしっかり見れると、こんなことしなくてもいいですが、
上手な絵をどんなシワが入って、どこが影でっていう見方するのは結構難しいです。
全てが正しく見えるし、いろんな部分に目移りしますからねえ。

179null:null
null

180null:null
null

181null:null
null

182livend:2016/12/13(火) 14:28:58
1ヶ月近く色々勉強して試行錯誤しても思うようにいかないのでここで質問させて下さい
社咲氏のサイトに載ってる伸縮型の特殊ゲージを搭載しようとしているのですが、どうにも上手くいきません・・・orz
画像表示までは出来ているのですが、変数の増減にゲージが一切反応してくれません
試しに丸々コピペしてみても反応無しなのでお手上げです・・・どなたかご助力の程お願い致します
以下記述ですがおかしい箇所等ご指摘お願い致します
[Statedef 10000]
anim = 9999

[State 10000];ゲージ
type = Explod
trigger1 = numexplod(10000) = 0
anim = 10000
id = 10
pos = ifelse(teamside=1,15,220),220
postype = left
facing = ifelse(teamside=1,1,-1)
bindtime = -1
removetime = -1
scale = 0.6,0.3
ontop = 1

[State 10000];ゲージの外枠
type = Explod
trigger1 = numexplod(10001) = 0
anim = 10001
id = 11
pos = ifelse(teamside=1,15,220),220
postype = left
facing = ifelse(teamside=1,1,-1)
bindtime = -1
removetime = -1
scale = 0.6,0.3

[State 10000]
type = ModifyExplod
trigger1 = numexplod(10000) = 1
Trigger2 = Time >= 0
scale = var(1)/300.0,1
id = 10
anim = 10000

[State -2]
type = helper
trigger1 = Numhelper(10000) = 0
stateno = 10000
ID = 10
pos = 0,0
postype = left
helpertype = normal
name = "gauge"
keyctrl = 0
ownpal = 1

[state -2]
type = VarSet
trigger1 = var(1) < 1
var(1) = 0

[state -2]
type = VarSet
trigger1 = var(1) > 300
var(1) = 300

183blank:2016/12/14(水) 05:24:06
>>182
scale = var(1)/300.0,1

scale = root,var(1)/300.0,1
にしてみてください

184livend:2016/12/14(水) 19:47:23
>>183
それでも上手く画像が伸縮されませんでした
cmdファイルみたいな記述の順番とか関係してくるのでしょうか?
一応explodの画像が2枚以上表示されてるとかはないのは確認済みなのでどこか別のところが悪さしているのでしょうか?
var(1)の変数が他と被ってたりとかもないですし、伸縮はしないですが変数自体は想定通りに動作してくれています
一応helper式に変えてみてparentに変えてみたりとか自分がわかる範囲でやってはみたんですがそれでもだめで・・・orz
でもontopがhelper式は出来ないみたいなのでどうにかしてexplod式でやりたいです、どうかお知恵をお貸し下さい

185183:2016/12/15(木) 04:44:32
>>184
見落としてましたが、
[State -2]
type = helper
trigger1 = Numhelper(10000) = 0
stateno = 10000
ID = 10
以上の記述だとこのヘルパーは Numhelper(10) なので、
他に Numhelper(10000) を射出する記述がなければ永遠にトリガーを満たしたままです。
これを「ID = 10000」にしても解決しない場合は、もう一度 var(1) を疑ってみてください。
こちらで>>182のゲージ表示と伸縮部分の記述を自キャラに搭載してみたところ問題なく伸縮しましたので。

186183:2016/12/15(木) 04:53:12
すいません、>>185の追記です。
helper だけじゃなく Explod も ID と numexplod() が一致してないので一致させてください。

187livend:2016/12/15(木) 11:04:46
>>183 >>184
ご指摘頂いた通りにしてみたところやはり駄目でした
ファイターファクトリーを使用しているのですが、その機能の変数管理で見てみましたがvar(1)は使用していませんでした
IDをnumexplodと同じにしてみましたがゲージの最大状態の画像が表示され続けるだけでした
どこが悪さをしてるか色々試行錯誤してみたところ、どうやらnumexplod(10000)が存在する時をトリガーにしたvar(1)を300にするという命令が実行されてない事に気付いたんですが
ゲージの最大状態の画像は表示されているのでnumexplod(10000)は実行されているような気もしています
でもnumexplod(10000) = 1をmodifyexplodもトリガーにしているので、伸縮しないのもnumexplod(10000)が存在していないからという事なのでしょうか?
一応var(1)の使用に不安を覚えてvar(1)をvar(30)に変えています
以下現状の記述ですが、どうにも私にはお手上げです
[Statedef 10000]
anim = 9999

[State 10000];ゲージ
type = Explod
trigger1 = numexplod(10000) = 0
anim = 10000
id = 10000
pos = ifelse(teamside=1,15,220),220
postype = left
facing = ifelse(teamside=1,1,-1)
bindtime = -1
removetime = -1
scale = 0.6,0.3
ontop = 1

[statedef -2]
[State 10000]
type = ModifyExplod
trigger1 = numexplod(10000) = 1
scale = root,var(30)/300.0,1
id = 10000
anim = 10000

[State -2]
type = helper
trigger1 = Numhelper(10000) = 0
stateno = 10000
ID = 10000
pos = 0,0
postype = left
helpertype = normal
name = "gauge"
keyctrl = 0
ownpal = 1

[state -2]
type = VarSet
trigger1 = var(30) < 1
var(30) = 0

[state -2]
type = VarSet
trigger1 = var(30) > 300
var(30) = 300

188183:2016/12/15(木) 15:54:05
>>187
>>182と違って
[statedef -2]
[State 10000]
type = ModifyExplod
となっていますが、これはファイルの記述そのままでしょうか?
もしそうであれば、
[State 10000]
type = ModifyExplod
(省略)

[statedef -2]
として、 [Statedef 10000] に含めるようにしてください。
「helpertype = normal」であるヘルパーは -2 と -3 のステートを読み込みません。
(余談ですが、「keyctrl = 0」の場合は -1 のステートを読み込みません)

189livend:2016/12/15(木) 18:57:49
>>188
おぉぉぉぉー!
出来ましたー!イメージ通りの完璧な動きです、本当に有難う御座いました!
helpertype = normalは-2-3ステートを読み込めないのですね、これで他に躓いていた部分も進むかもしれません・・・
本当に助かりました!また独力ではこれ以上進めないと判断した場合此方で質問させて頂きます、本当に有難う御座いました!

190yakan2:2017/08/18(金) 22:26:42
windows10になってwindows_photo_viewerでgifアニメーションをコマ送りできなくなりました。
何か代用できそうな良いソフトはありますか?

191名前が決まらないフレンズ:2017/08/23(水) 22:14:12
>>190 yakan2さんへ
遅レスですが自分は7GIFというフリーソフトを使ってますよ。
ドット絵が多少にじんで見えるので細部を観察するのには不向きですが、コマ送り・再生・拡大などの基本的な機能はあります。
後はMUGENツールのSAEでもAirファイルを矢印キーでコマ送りすることも出来ますね。(登録の手間が掛かりますが)

参考になれば幸いです

192とある作者:2017/08/26(土) 00:35:04
初めまして、作成で色々調べてたらここにたどり着きました
一つ悩んでいることがあるのですが
飛び道具(波動拳の様なオーソドックスな)を2フレームごとにHITDEFを出し連続ヒットさせます
そして3HITor3回ガードされると消滅というようにしています

3ヒットした時に消滅させるということはできたのですが
3回「ガード」された場合にも消滅ということができないかと悩んでおります
現状、1回ガードされた時点で消滅させ妥協しています
Varも使おうとしましたが連続HITでVaraddが機能しませんでした
以下、ステート(HITDEFは必要な部分のみ記述)
[Statedef 2013]
type = A
movetype = A
ctrl = 0
physics = N
Anim = 3070

[State 2010]
type = HitDef
trigger1 = time%2 = 0
attr = S, SP
damage = 15, 10

[State 2300]
Type = Velset
Trigger1 = time = 0
x = 5

[State 2110]
Type = DestroySelf
Trigger1 = HitCount = 3
Trigger2 = FrontEdgeBodyDist < -20
Trigger3 = MoveGuarded

193島村鰐:2017/09/06(水) 12:08:03
これはhelperにhitdefを着けて飛ばすタイプの飛び道具ですかね

それであればhitdefの発生triggerを普通にtime > 0とかにしておき
2ヒットめ、3ヒットめを別ステートにしてmovehitとmoveguardedを条件に順次ステートを移動していくことで多段ヒットさせるのでどうでしょう
3ヒットめにあたるステートのみ同条件でdestroyself用のステートに飛ばすようにすれば3ヒットで消えますし
ステートをたくさん追加すればもっとたくさんヒットさせることも可能です

194とある作者:2017/09/14(木) 22:27:56
>島村鰐様
確認と返信が遅れましたが、やってみたところ良い感じに動いてくれました
この発想は色々応用が効きそうですね
ありがとうございます

195yakan2:2018/02/07(水) 20:43:06
>>名前が決まらないフレンズさん
レス遅くなってしまい申し訳ありません、ありがとうございます。7GIF知らなかったので早速おとしてみます!

196豆大福:2018/11/04(日) 21:12:46
すみません。
ここに書き込むのは久しぶりです。
一つ直らないバグがあって、試行錯誤しても起きるのでここに来ました。どうか知恵をお貸しください。
試合中にヘルパーが消えずにそのまま残る現象が稀に起きます。
しかも、アニメは進まずに止まっています。
airを確認しましたが、ヘルパーの全フレームの速度は1以上にしています。以下、バグの該当のヘルパー記述です。


[Statedef 1200]
type = A
movetype= A
physics = N
velset = 0,0
anim = 1200
sprpriority = 2

[State 1030, 1]
type = NotHitBy
trigger1 = Time = 0
value = , AT;全ての投げに対し無効化
time = -1

[State 920, NoHitBy]
type = NotHitBy
trigger1 = Time = 0
value = SAC, NT, ST, HT ,NA, SA, HA ,NP, SP, HP
time = -1

[State 200 , 2]
type = HitDef
trigger1 = Time >= 5
trigger1 = Time%3 = 0
attr = A, SP
damage = 7,2
animtype = medium
getpower = 50,20
givepower = 15,2
guardflag = LHA
hitflag = MAF
priority = 4, Hit
pausetime = 1,6
numhits = 1
pos = -10, -20
hitsound = s1,5
guardsound = s1,11
sparkno = s3000
sparkxy = -10, 2
ground.type = low
ground.slidetime = 15
ground.hittime = 20
ground.velocity = -4
airguard.velocity = -2.5,-0.5
air.velocity = -3.5,-1.5
ignorehitpause = 1


[State 1200, 3]
type = Destroyself
trigger1 = AnimTime = 0

197Yes@バーチャルMUGENキャラ制作者:2018/11/08(木) 23:38:25
ヘルパーが消えずにそのまま残ったときの
ヘルパーのStatedef が何番か分かりますか?

198miyassa:2018/12/16(日) 17:15:39
>>196

デバッグを知らない前提で言うと、1対1の状態で
デバッグキー ctrlを押しながらdボタンを推せば、左下に小さい文字群が出てくると思います
1p側の名前があって、stateno やtimeなどそのプレイヤーのデータが出てくるはず
それをもう一回押せば2p側の、その後に押せば誰もヘルパーを出してなければ無表示に戻る
ヘルパーが固まった時にそれをやれば固まってるヘルパーの名前Razer1が出てくるはず
yes氏の言っているステートの番号も分かると思います

sffファイルでレーザーヘルパーのアニメ見たんですけど、どれも当たり判定ないので無敵は要らないはず
誰と対戦して、どの状況の時か分からないので、ヘルパーが何かに当身されたくらいしか思いつかない
とりあえず再度固まった状態で、デバッグして確認でしょうか

199miyassa:2018/12/16(日) 22:33:26
さっき気づいたけど、1250から1251のヘルパーが消えてない
無敵にしたカンフーマンと適当に遊んでて分かった
ステート1200のヘルパーじゃなくこれのことじゃないんですか

Destroyselfの条件がmovecontactだけはまずいですよ
無敵や移動でよけられる等、当たらなかった場合どうするかの記述がないので消えずに残ります
2つ目の条件を作って、 !movecontactの時に、時間経過で消すか、
FrontEdgeDist <= -30 (画面の向こう側30以上進んだ時)という条件を入れるなどしないと

もう直してる最中かもしれませんが

200豆大福:2019/02/02(土) 18:57:00
>197
1200番です。

>198〜199
11フレーム目で止まります。NotHitByの記述はコメントアウトしました。(1250から1251のヘルパーの記述も!movecontactの条件を追加しました。)
今のところ、原因はわかりません。ただ、Timeが11になった時、止まることがあるのは確かです。
対戦相手は1pと同じにしています。(2p側が立ち状態の時、1p側がしゃがみ状態で1200番のヘルパーを出した時です。)

201豆大福:2019/02/02(土) 19:14:49
>200の続きです。
レーザーの攻撃判定を修正したら、直りました。
大変お騒がせして申し訳ありませんでした。

202blank:2019/02/07(木) 19:13:23
相手のヘルパーのステートを奪ってしまったときの処理はどうするのが良いのでしょうか
今はすぐにdestroyselfを読ませていますがこれもあまり良くないとも聞きました

皆さんの意見を聞かせて下さい
お願いします

203blank:2019/02/08(金) 00:36:26
ground.type = None の攻撃の感知が実装できず困っています
助けてください

以下、試したことと分かったこと
・gethitvar(ground.type)
- ヒット時点で反応し、 0 を返す
-> 開始後の最初の攻撃がGround.type=Noneの場合、対応できない
- 任意のタイミングでリセットできないので不便
-> Ground.type = None の攻撃が連続する場合、対応できない
・gethitvar(hitshaketime)
- ヒット後1F遅れて反応する
-> p2stateno付きの場合は既にステート移動済み
・gethitvar(damage)
- そもそもdamageは発生しないため反応しない
・movetype = I && stateno != var(X)
- var(X)は保存してある自分のStateNo (常に個別ステートの最後で代入)
- MUGENの内部処理によるステート移動(キー入力による前進など)との区別が困難

204blank:2019/02/17(日) 15:38:29
ステ抜け組み込みたいんだけどMoveType=H式のテンプレってどこかにない?
もしくは分かりやすい記述のキャラを教えてほしいです

205blank:2019/02/18(月) 11:33:00
>>204
MoveType=H式抜けは本当にMoveType=Hになったらステ抜けを実行するだけだから
テンプレなんてないんじゃないかな
一応テンプレ
----------------------------------------------------
[Statedef -2]に以下の記述を入れておけば動く

[State -2]
Type = SelfState
Trigger1 = !ishelper
Trigger1 = MoveType = H
Value = 0 + 11 * (StateType=C) + 50 * (StateType=A)
Ctrl = 1
IgnoreHitPause = 1

206blank:2019/03/10(日) 17:37:55
記述について質問させてください

改変前
type = varset
trigger1 = Enemy(0),movetype != A
var(0) = enemy,power

1.相手のパワーゲージが同じ数値で一定時間経過するたびにvar(1)に1を足す
type = varadd
trigger1 = (var(0) - Enemy,power) = 0
var(1) = 1

2.相手がゲージ技を使用したステートをvar(2)(3)(4)に記憶する
type = varset
trigger1 = var(2) = 0
trigger1 = (var(0) > Enemy,power) && enemy,movetype = A
var(2) = enemy,stateno

3.
triggerall = var(2)!= 0
trigger1 = (var(0) > Enemy,power) && enemy,movetype = A
var(3) = enemy,stateno

1に一定時間経過するたびに を追加したい

2が攻撃中にステートを移動されると違うステートを記憶してしまうのを修正したい

3の記述だとvar(2)が記憶された後すぐにvar(3)が記憶されてしまうのを修正したい


うまく説明できていなければ申し訳ありません
改善案や意見をよろしくお願いします

207blank:2019/03/10(日) 22:37:12
<<206
察するに相手のゲージ技を記憶して、AIにそのステート警戒させたりしたいのかな?

①一定時間経過するたびに を追加したい
 →例えば60Fに1回なら、単純にtriggerX = (Gametime%60=0)入れてみるとか?

②2が攻撃中にステートを移動されると違うステートを記憶してしまうのを修正したい
 →「ステートを移動されると」じゃなくて「movetype!=Aになると」が正しい希ガス
   trigger1 = var(2) = 0 があるなら大丈夫でない?

③var(2)が記憶された後すぐにvar(3)が記憶されてしまうのを修正したい
 → triggerall = var(2)!= 0じゃなくて、triggerall = enemy,stateno != var(2) にしてみては
   これでvar(2)と同じ数値は入らないはず

試したわけじゃないけど参考になれば
細かいとこ言うとenemyリダイレクトそのままだとタッグで誤爆するかも

208blank:2019/03/10(日) 23:24:59
<<207
返信ありがとうございます

1.gametimeやtimeを使ってみましたが思うような挙動になりませんでした
敵ゲージが増えていてもvar(0)に加算されたり、時間を超えたら加算されっぱなしになったりと

[敵パワーゲージが1000の状態]が5秒経過したらvar(0) + 1で時間リセット
また[敵パワーゲージが1000の状態]が5秒経過したらvar(0) + 1で時間リセット
[敵パワーゲージが1000の状態]から「敵パワーゲージが1005の状態」になったら時間リセット
…みたいなのが理想なのですが

2.stateno = 2000でゲージ消費して開始。その後 stateno = 2001で攻撃判定を出すタイプの技だと
記録されるのは2001になってしまうのでこれを2000にしたいのです

3.例えば相手が「1回目のstateno = 2000」でゲージを使用した時
var(2)にはstateno = 2000が記録されてvar(2) != 0になります
その後var(3)を書き込むステコンのtriggerall = var(2) != 0 が達成して
var(3)に「1回目のstetano = 2000」が記録されてしまうので
var(3)には「2回目のstaetno = ????」を記録するようにしたいのです

var(2)に記録した後var(3)var(4)にはしばらく記録しないようにするにはどうしたらいいでしょうか

enemyリダイレクト。ご指摘ありがとうございます 変えてみます

209blank:2019/03/11(月) 00:05:25
>>208
207です。ちょっと弄ってみたけどこんな感じでどうでしょ
時間リセットどうこうはともかく、とりあえずアフロン氏アッシュのゲージ技を4つ覚えることはできた
var(2)〜var(5)に順に相手がゲージ払ったステートを格納する仕組み

[Statedef -2]

;1.相手のパワーゲージが同じ数値で一定時間経過するたびにvar(1)に1を足す
[State -2]
type = varadd
trigger1 = gametime%60 = 0
trigger1 = var(0) = Enemy,power
var(1) = 1

;相手のゲージが増えたらvar(1)をリセット
[State -2]
type = varset
trigger1 = Enemy,power != var(0)
var(1) = 0

;2.相手がゲージ技を使用したステートをvar(2)(3)(4)に記憶する
[State -2]
type = varset
trigger1 = var(2) = 0
trigger1 = (var(0) > Enemy,power) && enemy,movetype = A
var(2) = enemy,stateno

;3に入れるよ
[State -2]
type = varset
triggerall = var(2) > 0
triggerall = enemy,stateno != var(2);どれとも合致しない
triggerall = var(3) = 0
trigger1 = (var(0) > Enemy,power) && enemy,movetype = A
var(3) = enemy,stateno

;4に入れるよ
[State -2]
type = varset
triggerall = var(3) > 0
triggerall = enemy,stateno != var(2)
triggerall = enemy,stateno != var(3);どれとも合致しない
triggerall = var(4) = 0
trigger1 = (var(0) > Enemy,power) && enemy,movetype = A
var(4) = enemy,stateno

;5に入れるよ
[State -2]
type = varset
triggerall = var(4) > 0
triggerall = enemy,stateno != var(2)
triggerall = enemy,stateno != var(3)
triggerall = enemy,stateno != var(4);どれとも合致しない
triggerall = var(5) = 0
trigger1 = (var(0) > Enemy,power) && enemy,movetype = A
var(5) = enemy,stateno

;改変前
[State -2]
type = varset
trigger1 = Enemy,movetype != A
var(0) = enemy,power

↓上記のを搭載したkfm。デバッグ表示で見てね
ttp://firestorage.jp/download/33dbeb6c2ee645dd050fff7c909274764686e3e5

世の中にはmovetype=Aじゃないゲージ技やらいろいろあるから、その辺はまたカバーするとか諦めるとかになるけどね!

210blank:2019/03/11(月) 00:12:02
訂正
×相手のゲージが増えたらvar(1)をリセット
〇相手のゲージが増減したらvar(1)をリセット

×;2.相手がゲージ技を使用したステートをvar(2)(3)(4)に記憶する
〇;2.相手がゲージ技を使用したステートをvar(2)(3)(4)(5)に記憶していく

あと";改変前"て文章は関係ないです

211blank:2019/03/12(火) 15:41:41
<< 209
色々親切にしてくださりありがとうございます
AIに組み込む為のものではないので同じステートも記憶できるようにしたかったのです
いくつか改善してみました。少し変ですが一応想定通りな動きしています

[State -2];ゲージ監視
type = varset
trigger1 = Enemy,movetype != A
V = 0
value = Enemy,power

1.
[State -2];ゲージ変動無し
type = varset
trigger1 = var(0) = enemy,power
trigger1 = enemy,time = 10 ←これが必要でした
var(10) = 1
[State -2];変動した
type = varset
trigger1 = var(0) != enemy,power
var(10) = 0
[State -2];変動せずに一定時間経過で追加
type = varadd
trigger1 = var(10) = 1 ;上をそのまま入れても機能しませんでした
trigger1 = gametime%60 = 0
var(1) = 1

2.
[State -2];敵がゲージ技を記憶
type = varset
trigger1 = var(2) = 0
trigger1 = var(0) > enemy,power
trigger1 = enemy,movetype = A
var(2) = enemy,stateno

[State -2];ゲージ技が終わったらこちらに移す
type = varadd
trigger1 = var(2) != 0
trigger1 = enemy,movetype != A
trigger1 = time = 0
var(3) = var(2)

[State -2];移し終わったらリセット
type = varset
trigger1 = var(2) != 0 && time = 0
trigger1 = enemy,movetype != A
var(2) = 0

[State -2];敵がゲージ技を2回以上使用した
type = varset
trigger1 = var(2) != 0 && var(3) != 0 ←1回目では達成しない
var(4) = ifelse(enemy,movetype = A,1,2)

[State -2]
type = varadd
trigger1 = var(2) != 0
trigger1 = var(3) != 0
trigger1 = var(4) = 1
var(5) = ifelse((var(3)/var(2)) = 2,1,0) ←3回同じ技を使ったら2になるので1増やす


問題は同じ技を3回使わなくても2になる場合があることなんですが少し諦めてます

212blank:2019/03/12(火) 17:00:41
記入漏れ

[State -2];頃合いを見てリセット
type = varrangeset
trigger1 = var(3) > 14000
trigger2 = gametime%1200 = 0
value = 0
first = 2
last = 4

213blank:2019/03/13(水) 12:44:16
>>211
横からですがこれでどうでしょうか

[state -2]
type = Null
trigger1 = var(0) = enemy,power
trigger1 = var(X) := var(X) + 1
ignorehitpause = 1

[state -2]
type = VarSet
trigger1 = var(X) = 300
trigger1 = var(1) := var(1) + 1 || 1
trigger2 = var(0) != enemy,power
trigger2 = var(1) := 0 || 1
var(X) = 0
ignorehitpause = 1

[state -2]
type = Null
trigger1 = var(2) = 0
trigger1 = var(0) - enemy,power >= 1000
trigger1 = var(2) := enemy,stateno
ignorehitpause = 1

[state -2]
type = Null
trigger1 = var(3) = 0
trigger1 = var(2) != 0
trigger1 = var(0) - enemy,power >= 1000
trigger1 = var(3) := enemy,stateno
ignorehitpause = 1

[state -2]
type = Null
trigger1 = var(4) = 0
trigger1 = var(2) != 0 && var(3) != 0
trigger1 = var(0) - enemy,power >= 1000
trigger1 = var(4) := enemy,stateno
ignorehitpause = 1

[state -2]
type = Null
trigger1 = var(5) = 0
trigger1 = var(2) != 0 && var(3) != 0 && var(4) != 0
trigger1 = var(0) - enemy,power >= 1000
trigger1 = var(5) := enemy,stateno
ignorehitpause = 1

[state -2]
type = Null
trigger1 = var(0) := enemy,power
ignorehitpause = 1

214blank:2019/03/13(水) 12:47:13
すみません訂正です
var(2)からvar(5)への代入の箇所を下記のように訂正

[state -2]
type = Null
trigger1 = var(5) = 0
trigger1 = var(2) != 0 && var(3) != 0 && var(4) != 0
trigger1 = var(0) - enemy,power >= 1000
trigger1 = var(5) := enemy,stateno
ignorehitpause = 1

[state -2]
type = Null
trigger1 = var(4) = 0
trigger1 = var(2) != 0 && var(3) != 0
trigger1 = var(0) - enemy,power >= 1000
trigger1 = var(4) := enemy,stateno
ignorehitpause = 1

[state -2]
type = Null
trigger1 = var(3) = 0
trigger1 = var(2) != 0
trigger1 = var(0) - enemy,power >= 1000
trigger1 = var(3) := enemy,stateno
ignorehitpause = 1

[state -2]
type = Null
trigger1 = var(2) = 0
trigger1 = var(0) - enemy,power >= 1000
trigger1 = var(2) := enemy,stateno
ignorehitpause = 1

215blank:2019/03/15(金) 00:10:03
>>213 214 返答ありがとうございます
「:=」を使用した記述、大変参考になりました

返答の中でtrigger1 = var(1) := var(1) + 1 || 1 というのがあるのですが
いまいちどういう動き方をしてるのかイメージが掴めません

参照した時 var(1) に var(1)+1 または 1 を代入するという認識で大丈夫でしょうか?

216213:2019/03/15(金) 01:08:54
>>215
var(1)にはvar(1)+1のみ代入されます

代入式を使用した場合は代入した値がそのままトリガーの真偽の値となります
trigger1 = var(1) := var(1) + 1
とのみ記述していた場合にこの記述を読む前にvar(1)に-1が設定されていると
var(1) + 1 = 0 となるため
trigger1 = 0 扱いになりそこから先のトリガーを読まなくなってしまったり
ステコンが実行されなかったりといった不具合の原因となってしまいます

そこで"|| 1"の記述を付け加えて代入する値に関係なくトリガーの値を真にすることで不具合を減らすことができます
同じようなもので代入結果によらず負にしたいときに "&& 0" をつけることもあります
見易さから"1 ||"や"0 &&"といった書き方をしている製作者の方もいますが意味は同じです

とはいえキャラのランクにもよりますが今回の例ではvar(1)が-1になることは
おそらくないので無くても別に問題はありません

217blank:2019/03/16(土) 23:49:33
>>216
返答解説ありがとうございます。
代入式に関して知見を広めることができました

沢山意見を頂き、大変感謝しております。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

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