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

製作お助け掲示板

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

127Yes:2010/07/19(月) 18:05:20
>>126
僕は
"本体(Statedef 1000のとき)のanimが表示されないバグ"
を直そうとしています。

[Statedef 1000] が 射撃動作
[Statedef 1010] が 弾(Helper)
ですよね。

ゲーム画面では設定に反して
[Statedef 1000]のanim番号が1000のはずが1010になっているってことですか?
そんなはずあるかいっwww!!!

実際にゲーム画面で、
キャラクターが[Statedef 1000]の状態のとき
キャラクターのanim番号(ACTIONID)がいくつになっているか教えてください。

128Azuma:2010/07/19(月) 18:44:48
まさかと思うけど、デバッグ画面の見方がわかってないんじゃないかなっと

129黒川侑二:2010/07/19(月) 18:54:49
>>125のAzumaさんへ
おかげさまで無事に解決です!ありがとうございました。
どうやら「1.発動する技の上に、同じコマンドをトリガーにしたChangeStateが組まれてる」これだったようです(/ω\)ハジカシー

130ももんがー:2010/07/19(月) 19:20:04
>>127
のりつっこみワロタ
>>126
差し支えなければキャラうpすればここの人たちがなおしてくれると思う

131愛茶:2010/07/19(月) 22:21:09
>>127

むしろ自分が聞きたいです;OTL

>>128
そうであってほしい物です;w

>>130
もう、そうしちゃった方が早いかな?
ちょっち上げるように整備するので少しほどお時間のをば

132愛茶:2010/07/19(月) 23:34:08
とりあえず、ドット絵板の新アップローダーの方にキャラクターをうぷってみました〜;
どうか、よろしくやってください;

ファイル名は仮.zipっていうです。

133Azuma:2010/07/19(月) 23:41:58
うん、まず言えることが二つあるんだ

・DEFファイルの記述ミスってるよ(-2,-3の後に「.cns」入れなきゃエラー吐く)
・CMDのChangeStateがvalue=「1010」になってるわけよ、うん

134愛茶:2010/07/19(月) 23:54:56
>DEFのミス

あ、それ多分、直してない奴だ;
仮フォルダ内部の直すに忘れてもうたOTL

>CMB
やっぱ、そっち関連にミスか?

135愛茶:2010/07/20(火) 00:00:01
あ、色々やってるうちにChangeStateも撤去してた・・・・・・・・・・・ひでぇ;;;;;;;;;;

136Azuma:2010/07/20(火) 00:01:15
全部治った、アップローダに上げといたからそれ参照ね

人のコト言えないですが、全部数字の書き間違いです。
まず技のステート呼び出し(1000)がヘルパー用の数字(1010)になってる
ヘルパーの参照するステートが呼びだしてるステートになってる(つまり1000で1000を呼びだしてる)
ヘルパーの向きが間違えてる(facing=-1になってる)
ChangeStateの最後になぜか「;ctrl=1」になってる

あ、それと1000-2はSFFに登録されてない画像だよ

137愛茶:2010/07/20(火) 00:01:46
連レス過ぎるけど。>>135は嘘だった。
でもそのまま硬直してもうた・・・・・・・・・・・ぬぁぜだ?

138愛茶:2010/07/20(火) 00:23:42
>>136
すんません、言葉がありません・・・・・。
と、言って万事解決には至らぬ。

>>137でも書きましたが、なぜか、なぜか、コマンド入力すると、アニメが終わって立ち絵に移ると操作不能になってしまいました;
ちなみに1010の奴が出てきません;
この問題児め・・・・・・・・・

139blank:2010/07/20(火) 00:30:40
え?
それも直しといたはずだけど…ファイルごと上書きして試してみました?

140blank:2010/07/20(火) 00:33:19
解説入れてファイル修正しといたから、丸ごと上書きすれば
直った状態が見れる&CNSの修正箇所にコメント入れてある、な状態になるようにしといたんですけど

141Yes:2010/07/20(火) 00:38:36
バックアップをきちんと取るように。
トラブルの素ですよ。

142Yes:2010/07/20(火) 00:40:03
あ!
ロダに上げたから大丈夫か。

143Azuma:2010/07/20(火) 00:42:02
そうそう;上書きの際はバックアップはとった上でね;

アップロードした仮.zipを別キャラとして登録した上で、そのフォルダに上書きすれば元データが生きたまま試せます。

144Yes:2010/07/20(火) 01:10:49
あああああ、こういうバグか。
僕もよくやる。

なんだかアレみたいですね。あの、
IQサプリの問題を(スペシャルヒントまで出たのに)解けなかったときのような、
そんな残念な感覚ですね。

次回は頑張ろう‥。

145愛茶:2010/07/20(火) 18:28:08
おっしゃ! 形はできたぁ!
Destroyselfの記載する場所と番号間違えてただけ。これでヘルパーが出て何とかなった―――――――――――――のだが。

今度はそのヘルパーが消えない・・・・ちゃんとDestroyselfしてるのに・・・・
しかも相変わらずヒットはするのにダメージが入らぬ・・・・・
それでも大きな一歩だ・・・・。

146Azuma:2010/07/20(火) 19:23:14
良かったですねー

ってことは
前までの不具合の原因だったCNSの修正箇所全部把握して、修正できた…んですよね?
手元の(昨日Upしたデータのまま)だと、ちゃんとヘルパー消えてるみたいなのですけど…おかしいな

それとダメージが入らないのは原因簡単「ス ペ ル ミ ス」です。
state1010.Hitdefのオプションパラメータの項にて
「damege」←間違い
「damage」←正しい

エラメ出ないから気付きにくくはあるよね

147愛茶:2010/07/20(火) 19:46:51
>>146

アッー!それだったか・・・・・泣きてぇ;OTL
ちゃんと直したらダメ入った。ありがとうございます(_ _)

ヘルパーが消えない理由。
1010じゃなくて1000に変えたらヘルパー映ったから有頂天になってた;
てか、なんでこうなる前の奴はヘルパーごと消えてたんだ?????
どっかの文字が狂ってたのかな・・・・・・;

これで事実上、咆哮衝撃波の記述は完成しました。
尽力してくださった皆様にはどんなに感謝すればよいのやら・・・・。

ん?
壁際でするとヘルパーがズリズリーっとずれてく・・・・・

148にゃ:2010/07/20(火) 20:17:21
質問いいですか?
同じstatedefに
のトリガーが(GameTime%1)= 0で数える
メーターの様なステートを何個も入れると
動かなくなったりすることある?

149にゃ:2010/07/20(火) 20:44:05
ごめんなさい自己解決しました
別の理由でした

150メイトル:2010/07/21(水) 16:22:10
cnsの記述で詰まってしまったので、質問よろしいでしょうか

ずっと相手を追尾するのではなく、発射の瞬間に相手のいた方(角度)へ弾を発射する射撃を作りたいのです
更に、弾の画像を射出角度に合わせて回転させたいです
つまり、この矢印(→)が弾の画像だとして、射出の瞬間相手が真上にいたらこのように(↑)射出角度に合わせて画像が回転するような
そしてこの角度算出、回転、発射の動作を出来る限り素早く行いたい…

現在私の自作キャラ(ウサギくん)に使っている、ずっと相手を追尾する射撃のcnsの応用でなんとかなるかなー、
と思ってたんですが、ところがもう全然現実は、もう、そうでなくて。完全にお手上げ状態です
(まぁそのcnsも私が考案したものではなく、人様の考案したものを借用したのですけど)

よろしくお願いいたします
(わかる人がここにどれだけいるかわかりませんが、東方非想天則の八雲紫の「変容を見る眼」を作りたいんです)

151blank:2010/07/21(水) 19:10:31
飛び道具Helper出して、そのHelperがTime=0でP2Dist xとP2Dist yをVar(0)とVar(1)に保存
VelSetでx=n*Cos(IfElse(Var(1)>0,Pi,0)+Atan(Var(0)*1.0/Var(1)))に設定する(yはCosの代わりにSin)
IfElse(Var(1)>0,Pi,0)+Atan(Var(0)*1.0/Var(1))で角度計算してAngleDraw

Var(0)=0またはVar(1)=0のとき(相手と垂直位置または水平位置が同じ場合)は個別に設定する必要ある
あと、AngleDrawで回転させてもClsn1は変わらないからAirの設定次第で詐欺判定になるから注意

152blank:2010/07/21(水) 19:16:08
説明しやすいようにP2Dist使ったけど、
相手のMid.Posとかに向けて飛ばしたい場合はその分考慮してVarSet
あと、VelSetのとこの「n」は飛び道具の速さだから適当な値入れて

153メイトル:2010/07/22(木) 07:40:47
>151
>152
手こずりましたけど、ご助言を参考にしながら他の方のcnsをベースにいじってみたところ、
なんとか形になりましたー感謝です

154わるーん:2010/07/22(木) 14:01:25
初めまして。
詰まってしまったので質問させてください。

相手を空中に吹っ飛ばし、落下してくるところに
追撃を加えられるようにしたいのですが
どうもそのやり方がわかりません。
↓の攻撃を当てた後に「hitflag = MAF」の攻撃を当てたいのですが…
どこか問題ありますでしょうか?

[Statedef 305]
type = S
movetype = A
physics = S
juggle = 15
poweradd = 0
ctrl = 0
velset = 0,0
anim = 305
sprpriority = 3

[State 300, ]
type = HitDef
trigger1 = Time = 0
attr = S, NA
animtype = Up
guardflag = M
hitflag = MAF
damage = 100
pausetime = 12,15
sparkno = s4010
sparkxy = -20,-60
hitsound = s1,4
ground.type = High
ground.slidetime = 16
ground.hittime = 18
ground.velocity = -2,-8
air.velocity = -2,-8
fall = 1
fall.recover = 0
ground.cornerpush.veloff = 0
air.cornerpush.veloff = 0

155Yes:2010/07/22(木) 14:55:39
juggle = 15

juggle = 0
にしてみてください。

156わるーん:2010/07/22(木) 15:18:56
>>155
解決しました。ありがとうございます。
基本について勉強不足でしたね。精進します。

157Azuma:2010/07/22(木) 20:06:55
攻撃がヒットした場合、攻撃動作のアニメから武器を突き刺した(つまり切先が欠けている画像)アニメに切り替えたいので
Hit.pausetime中でも自分のアニメが変更されるよう、下記のステコンを組んだのですが

何故かHit.pausetime中は透明化してしまいました…何故なのでしょう?

--CNS
[State 3860, HitDef1]
type = HitDef
trigger1 = Anim = 3860
trigger1 = AnimElemTime(3) >= 0
trigger1 = AnimElemTime(4) < 0
attr = S, HA
pausetime = 20, 20
guard.pausetime = 8, 8
persistent = 0


[State 3860, ChangeAnim]
type = ChangeAnim
trigger1= Anim = 3860
trigger1= MoveHit
trigger1= NumTarget(3860)
trigger1=!Target(3860),IsHelper
value = 3870
IgnoreHitPause = 1




--AIR
; 突き姿勢1
[Begin Action 3860]
3860, 0, 0, 0, 9
3860, 1, 0, 0, 9
Clsn1: 1
Clsn1[0] = 47,-71,120, 0
3860, 2, 0, 0, 15
3860, 2, 0, 0, -1

; 突き姿勢2
[Begin Action 3870]
3860, 3, 0, 0, -1



まぁ、ぶっちゃけ演出自体はpause使ってHitdefに頼らなければいいんだと気付いたのですが…
解決はしないと後々に差障るので、わかる方いらっしゃいましたら、お願い致します。

158blank:2010/07/23(金) 00:19:53
HitDefにID=3860付けてる?付けなきゃChangeAnim実行されないと思う

あと、Damage無いってことはTargetLifeAddか何かで処理してるんだろうけど
他のステコンが悪さしてることは無い?
取り敢えず>>157の情報から言えるのはこのくらい

159Yes:2010/07/23(金) 02:10:12
原因は不明ですが
解決方法はわかりました。


ChangeAnimのパラメーターに
elem = 2
を追加して

; 突き姿勢2
[Begin Action 3870]
3860, 3, 0, 0, -1

; 突き姿勢2
[Begin Action 3870]
3860, 300, 0, 0, -1 ;←なんでもいい     (elem = 1)1枚目
3860, 3, 0, 0, -1  ;←表示させたいアニメ  (elem = 2)2枚目

にしてください。


そうすると上手く行きます。

160Yes:2010/07/23(金) 03:22:37
注意8割方妄想です。
あと単語の統一ができてないので読みにくいです。

*原因の予想として
*処理のやり方が1枚目のアニメだけ特殊なんじゃないかと思います。

 処理0 [Begin Action 100] ;Begin Action 100を発動させる
 処理1 100, 0, 0, 0, 2   ;Begin Action 100の1枚目を表示
 処理2 100, 1, 0, 0, 2   ;Begin Action 100の2枚目を表示
 処理3 100, 2, 0, 0, 2   ;Begin Action 100の3枚目を表示
 処理4 100, 3, 0, 0, 2   ;Begin Action 100の4枚目を表示
 処理5 100, 4, 0, 0, 2   ;Begin Action 100の5枚目を表示
 処理6 100, 5, 0, 0, 2   ;Begin Action 100の6枚目を表示
 :
 処理n 100, n, 0, 0, 2   ;Begin Action 100のn枚目を表示

Begin Action がこんな感じの処理に分けられるものだとし

さらに
ChangeAnimが
 現在表示されているスプライトを消去
 Begin Actionの処理x(0≦x≦n)を実行
を同時に行うものだとすると

例えば
elem = 3が付いているChangeAnimであれば
 現在表示されているスプライトを消去
 Begin Action 100の3枚目を表示
が同時に行われます。

elem = 5が付いているChangeAnimであれば
 現在表示されているスプライトを消去
 Begin Action 100の5枚目を表示
が同時に行われます。


それじゃあ
elem = 1が付いているChangeAnimの場合はどうかというと
(elemは省略すると1になります。)

 現在表示されているスプライトを消去
 Begin Action 100を発動させる
が同時に行われる
という処理をしていることが予想されます。

なぜ
  現在表示されているスプライトを消去
  Begin Action 100の1枚目を表示
 が同時に行われる
じゃないのか?というと
1F間隔の連続で出来ているmugenの世界では
  現在表示されているスプライトを消去
  Begin Action 100の1枚目を表示
 が同時に行われる

  現在表示されているスプライトを消去
  Begin Action 100を発動させる
 が同時に行われ
 次の瞬間
  Begin Action 100の1枚目を表示
という処理は同じことが行われたとしか観測できない
ので

エレクバイトさんが
なんとなくそうした

そうしなければならなかった
かで

elem = 1が付いているChangeAnimの場合は
 現在表示されているスプライトを消去
 Begin Action 100を発動させる
が同時に行われる
という処理にしたんじゃないかと思います。

161Yes:2010/07/23(金) 03:23:20
続き



HitPause中だと、基本的にほとんどの処理が止まる中
IgnoreHitPause = 1 の力を受けたChangeAnimは処理を実行
 現在表示されているスプライトを消去
 Begin Action 100を発動させる
が同時に行わる処理を実行

表示されているスプライトが消え
 処理0 [Begin Action 100] ;Begin Action 100を発動させる   ←これ
 処理1 100, 0, 0, 0, 2   ;Begin Action 100の1枚目を表示
 処理2 100, 1, 0, 0, 2   ;Begin Action 100の2枚目を表示
 処理3 100, 2, 0, 0, 2   ;Begin Action 100の3枚目を表示
 処理4 100, 3, 0, 0, 2   ;Begin Action 100の4枚目を表示
 処理5 100, 4, 0, 0, 2   ;Begin Action 100の5枚目を表示
 処理6 100, 5, 0, 0, 2   ;Begin Action 100の6枚目を表示
 :
 処理n 100, n, 0, 0, 2   ;Begin Action 100のn枚目を表示
を実行し、ChangeAnimの処理は終わり

今度は
 処理0 [Begin Action 100] ;Begin Action 100を発動させる

 処理1 100, 0, 0, 0, 2   ;Begin Action 100の1枚目を表示
処理0→処理1に以降する仕事はBegin Actionの管轄なんですが‥
Begin ActionはIgnoreHitPause = 1の力を受けていないので
動けない。
だから透明になってしまう。

ということなんだろうと思います。

162Azuma:2010/07/23(金) 08:40:23
なるほど…Air側の処理は、深く考えてなかったな…
「IgnoreHitPause = 1」関連の処理が怪しいと覚えておこう。

ありがとうございました!


>>158
モチ、IDは設定してます;
投稿用に余計なオプションパラメータ消した際に巻き込んじゃったみたいです。

163blank:2010/07/25(日) 21:08:06
reversaldefで打撃を、hitoverideで飛び道具を当て身…というか耐えさせてるんですが
喰らう予定だった攻撃のダメージ量を測るgethitvar(X)トリガーを使いたいです。

・reversaldefは攻撃判定VS攻撃判定で反応するので「攻撃を喰らう」わけではない
・gethitvarトリガーはMoveType=Hでないと機能しない

以上2点から、直接的手段での使用は無理だとわかったのですが、どうにかして相手の攻撃ダメージ量を測る手段はないでしょうか?

164blank:2010/07/26(月) 00:10:55
コンプゲーでもなければGetHitVar(Damage)使わずにダメージ情報取得するのは無理
AIの学習の要領でやっても一度喰らった攻撃じゃないと分からないし補正の影響で正確な値知るのが不可能


アーマー処理(本体HitOverrideでもヘルパーHitOverrideでも好きな方)使ってMoveType=Hの状態でGetHitVar(Damage)して
用が済んだらStateTypeSetでIやAに戻してやるしかない

AnimとかVelSetとかをStateDefのパラメータに置かず、TypeとかをU(Unchange)にして
PrevStateNoをトリガーにステコンで処理すればHitOverrideでStateDef読み直しても上書きされないし
AnimElem系のトリガー使えば(Timeは使えないけど)技の流れを阻害されることなく処理できる
詳細はアーマー持ってるキャラのcns参考にするといいよ

165ケットシー:2010/07/27(火) 01:53:24
 エリアルの調整していて気になったのですがair.hittimeとfall.recovertimeの二つの違いは
air.hittime 空中受身とか関係なくこれに設定した時間で行動可能状態になる。受身可能キャラならその前に空中受身することで行動可能になれる

fall.recovertime これ設定の設定時間まで受身不能。air.hittimeより短い時はこれの設定時間より早く受身などに関係なく行動可能になる・
という理解の仕方であっていますでしょうか?

166blank:2010/07/27(火) 08:33:42
一部アーク系キャラがCanRecover無視して空中受け身取るのはマジやめて欲しい。

167blank:2010/07/27(火) 18:51:49
>165
たぶん言い回しの問題で間違っているように見える。
このあたりは結構ややこしいです。
2,3日待ってください。
なんとか上手く解説して見せます。

やられ状態は大まかに2種類あって
A:最終的に[Statedef 5040]に到達するやられと
B:最終的に[Statedef 5050]に到達するやられがあります。
Bのときfall.recovertimeが関わってきます。
[Statedef 5050]の到達の経路は色々あって
経路しだいではair.hittimeは無視されます。

168Yes:2010/07/27(火) 18:55:19
>>166
知らずに調整に使うととんでもないことになりますよね。

169Azuma:2010/07/27(火) 18:58:15
[State -2, VarSet / PrevStateNo_Check]
type = Null
trigger1= Var(50) != StateNo
trigger1= 1 || Var(51) := Var(50)
trigger1= Var(50) := StateNo
IgnoreHitPause = 1

↑は、ADS氏のメモにあった記述なんですが
これでPrevStateNo代用できるぞーレバー行動でズレなくなるぞーやっほーい
…って思って、AIに噛ませて記述したのですが、PrevStateNo(…の本来機能すべき数字)とも違った結果が出ることがままあるらしくバグ連発

何を間違えたのでしょうかorz


>>165
たぶん、あってる…と思いますが詳しい仕様知らないです、いい加減なこと言うのもアレなんでパスw
YESさん辺りが綺麗な回答を出してくれるでしょう(丸投げ)

170gan:2010/07/27(火) 21:16:46
>>165
検証してみたら、hittimeっていうのは操作不能時間とは関係ないのよね…
hittimeは、相手がやられ扱いになる時間で、数値が大きいとコンボのカウントが続きやすいっていうだけで、
例え受け身を取られても、hittimeで指定した時間内に攻撃を当てればコンボが続いていると判断される。
recovertimeはそのまま、受け身不可能な時間。
なのでhittimeとrecovertimeは別物と考えて良い。

と思います…

171blank:2010/07/27(火) 23:36:36
>>169
その方法だと1Fの間に複数回ChangeStateした場合に
PrevStateNoとVar(51)に食い違いが生じるんじゃないかな
特に内部処理のChangeStateや相手のTargetStateなんかが絡む時
あと、-2の特性上PauseやSuperPauseがかかってる時も怪しい

172Azuma:2010/07/28(水) 00:06:07
内部処理のCHangeStateが絡むと崩れてたのかな…?
んーむ…Pauseに関しては-1か-3に置けばいいっちゃいいはずですが、ステコン管理に使うにゃ脆いのかなぁ。

あ、1Fの間に複数回ChangeStateする場合って、どんなのでしょう?

173blank:2010/07/28(水) 01:40:28
1Fの間にというより-2と-2の間って言った方が良いかな
-2でVar代入→-1でChangeState→個別ステートでChangeState→次の周の-2でVar更新
デバッグ用のChange(Self)Stateが置いてある場合とか

174Azuma:2010/07/28(水) 21:31:42
あーにゃるほど
なんというかイメージは掴めました。

-2ステートの実行は1Fに一回だからってことかな

175blank:2010/07/29(木) 17:15:04
超必殺技発動時に背景を黒くしたいのでBgpalfxを使おうと思ったんですが

時間経過に応じて60Fかけて段々まっくろになって行って、240F黒のまま維持、60Fかけて元に戻すーという使い方をしたいです。
とりあえず黒くなる方向で組んでみたのですが…


[State 3000, だんだん黒く]
type = BgPalFx
trigger1= time = 0
sinadd = -205,-205,-205,110
time = 55

[State 3000, 黒維持]
type = AssertSpecial
trigger1= time >= 55
flag = noBG
flag2 = noFG


----------------------
[State 3005, まっくろ維持?]
type = AssertSpecial
trigger1= 1
flag = noBG
flag2 = noFG


…と書いて試したところ、bgpalfxのsinadd処理で一旦明るくなった後でassertの背景前景消しが発動してしまいました。
どうすればよいのでしょう?

176ケットシー:2010/07/29(木) 23:23:32
>ganさん
>hittimeは、相手がやられ扱いになる時間で
 そういうパラメーターでしたか。アドバイスありがとうございます。

177Azuma:2010/07/30(金) 17:54:35
>>171 >>173

代用は効きそうにないですが、バグはなくなったみたいです。
ありがとうございました!

178名無しのおせっかい:2010/07/30(金) 21:33:45
>>175
type = BgPalFx
trigger1= time <= 300
add = -4*time,-4*time,-4*time
time = 2

type = BgPalFx
trigger1= time = [301,360]
add = -256+(4*(time-300)),-256+(4*(time-300)),-256+(4*(time-300))
time = 2

要望の効果はこの二つで出来る
前景消すかどうかはそちらの判断で

179blank:2010/07/30(金) 23:32:25
初めまして。製作でどうにも引っかかってしまいまして、宜しければご助力下さい。

アーマー技を作りたいのですが、流れ的に
コマンドを入力

アーマー発動演出(一瞬ピカンと光る程度です)

アーマー発動中(打撃や飛び道具に有効 投げは効く)

十数秒経過で終了(終了モーションは特に無し)

アーマーの開始と同時に変数でカウントし、終了条件のトリガーとして使おうと思うのですが…
VarSet等記述しても、変数の中身が変わらず困っています。
もしくは変数を使って制御する自体が難しいのでしょうか。

ttp://acol.lomo.jp/arm_smp.txt
※CNSの中身が長くなりますのでこちらにテキストでまとめました。

宜しくお願い致します。

180リコ:2010/07/30(金) 23:50:56
>>179
もしかして
v = 56
value = 1

var(56) = 1
の混同

181blank:2010/07/30(金) 23:54:13
-2にあるVarAddはvar(56) = 1としてるならv = 56は要らんね

で、-2は「本体」か「HelperType = Playerのヘルパー」しか実行しないから
9000番のヘルパーがVar(56)をカウントしないのは当然
対処法は
①Var(56)のVarAddを9000番に移動させる
②DestroySelfのTrigger1をRoot,Var(56) = 100に書き換える
のどちらか一方やればいい

182Azuma:2010/07/30(金) 23:55:35
…だね

[state -2,1];間違ってる
type = varadd
trigger1 = var(58) = 1
v = 56;→これ不要、消せばOK
var(56) = 1

183blank:2010/07/31(土) 00:00:25
つかVar(58)の存在意義が無いでしょ、これ
毎フレームVar(58)に1を代入してるだけだし

①やる場合はVarAddのTrigger1も書き換える必要があるね
あと、PlaySndも書き換えなきゃいけないから②の方が楽

184blank:2010/07/31(土) 01:22:27
179です。
皆様とても素早い回答有難う御座いました!
他にもこちらで間違えていた箇所があったのですが、何とか気づいて修正ができました。
お陰様で無事作動しているようです。

185Yes:2010/07/31(土) 05:02:59
なんかもう‥>>165解決しちゃいましたね。
いや〜めでたい!
orz
でもせっかく調べたし‥
僕なりの答えを描きたいと思います。

[空中で攻撃を当てた際、相手が復帰する時間]
ここでいう復帰とは
・着地([Statedef 52]に移ること)
・受身可能([Statedef 5200]or[Statedef 5210]に移ることが可能であること)
・行動可能([Statedef 5040]においてCtrl = 1 であること)
のことです。
[空中で攻撃を当てた際、相手が復帰する時間]は
A:最終的に[Statedef 5040]に到達するやられ(fall = 0)での復帰時間
B:最終的に[Statedef 5050]に到達するやられ(fall = 1)での復帰時間
に分けられます。
↑これを一般的に表せば質問の回答になりそうなので調べました。

186Yes 185の続き:2010/07/31(土) 05:05:00
でその答えが↓です。


A:最終的に[Statedef 5040]に到達するやられ(fall = 0)での復帰時間


基本的には
 ・(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)
 ・(air.hittime)
 の短い方
□1
 {([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}
  <{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
を満たしたときのみ
 ・(Vel Y > 0 && Pos Y >= 0 を満たすまでの時間)
 ・(air.hittime)
 の短い方

B:最終的に[Statedef 5050]に到達するやられ(fall = 1)での復帰時間


 基本的には
 ・Vel Y > -1になるまでの時間
 ・fall.recovertimeで設定した時間
 の長い方
□2
{(fall.recovertime)&&(Vel Y > -1になるまでの時間)&&([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)}
  =<(air.hittime)
  =<{(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)&&([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}
 を満たしたときのみ
 ・(air.hittime)

あっているかどうか不安なので
途中式書いておきます。

□1の途中式
 [Statedef 5030]で
 ([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)
  =<{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
 且つ
 [Statedef 5035]で
 {([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}
  <{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
を言い換えると
 {([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}
  <{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}

□2の途中式
{(fall.recovertime)&&(Vel Y > -1になるまでの時間)}=<(air.hittime)
 [Statedef 5030]で
 ([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)
  =<{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
 且つ
 [Statedef 5035]で
 (air.hittime)
=<{([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
を言い換えると
 {(fall.recovertime)&&(Vel Y > -1になるまでの時間)&&([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)}
  =<(air.hittime)
  =<{(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)&&([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}

187Yes 186の続き:2010/07/31(土) 05:06:01
「なんかややこしくてめんどくさそう」って感想の人は

すべてのHitDefに
fall = 1
air.hittime = 0
をつけると
[空中で攻撃を当てた際、相手が復帰する時間]

 ・Vel Y > -1になるまでの時間
 ・fall.recovertimeで設定した時間
 の長い方
になります。
簡単でおすすめです。

もしくは
着地の誤差を無視して(所詮は1F,2Fの誤差だし着地硬直は結構キャラによって違うし)
air.hittime > fall.recovertime にならないように気をつけてさえいれば
(fall = 0)で
 ・(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)
 ・(air.hittime)
 の短い方
(fall = 1)で
 ・Vel Y > -1になるまでの時間
 ・fall.recovertimeで設定した時間
 の長い方
です。

188Yes:2010/07/31(土) 05:12:19
読むのタルいって人は
>>187

>すべてのHitDefに
から
>簡単でおすすめです。
まで読めば多少得るものがあるかもしれません。

189blank:2010/07/31(土) 12:25:57
Fall = 1付けちゃうと足払いみたいに地上にいる相手からもダウン奪っちゃうから
そういう技以外はFall = 0(省略可)とAir.Fall = 1付けないとダメだからね

190blank:2010/07/31(土) 13:15:36
>>178
できました! ありがとうございます!

191Yes:2010/07/31(土) 18:54:12
>>189
補足サンクス

192piece:2010/07/31(土) 23:20:48
初めまして。
レンのアレンジキャラを制作して、
DIOの「貴様、見ているな!」
のポーズをレンで書きたいのですが…
やり方がいまいち分からないです。

もし、よろしければご教授願います。
また、参考になるサイトを知っていらっしゃるのであれば、
教えてもらえるとありがたいです。

193Azuma:2010/08/01(日) 01:03:25
ここ、CNSメインの板だから…いや、いいのかもだけど
ともかく、実際に悪戦苦闘した成果をドット絵版に投稿するのが一番早いです。

どんなアドバイスを受けようともコピーするんじゃない限り描くのは御自分ですので
やってみないとわからないことは千万の数じゃききませんから

194Yes:2010/08/01(日) 02:13:00
>CNSメインの板
別にそういう感じでもないですが、
ドット絵の質問といえばドット絵版です。
あそこの方が指導者の層が厚いですよ。
質問は具体的なほど返答がもらえます。

まずドット絵の作成方法がわからない、なんてことならココで出来る限り教えます。
ツールを使ってドット絵をヘタでもなんでも描けるならば、
描いてドット絵版に投稿するといいですよ。

195piece:2010/08/01(日) 02:52:21
スレ違いな質問にも答えてくださってありがとうございます。
下手なりにも描いて投稿してみます。

196タンスの角:2010/08/02(月) 19:57:59
どうも、初歩的な問題だと思うのですがどうにもよく分からないので質問させてください。
設置系飛び道具で、画面上に2つ出そうとすると1つ目が消えるようにしたいと思ってます。
↓ヘルパーのchangestate
[State 6110,6]
type = changestate
trigger1 = MoveHit = 1
trigger2 = movecontact = 1
trigger3 = time = 360
trigger4 = numhelper(6110) = 2
trigger4 = time >= 2
value = 6111

[Statedef 6111];消滅ステート

簡単にこんな感じの記述をしたのですが消えませんでした。稚拙な質問ですがアドバイスをお願いします。

197Azuma:2010/08/02(月) 20:52:45
質問趣旨と違うんだが、気になったんで。
肝心の話は、ちょっとわからんです。

[State 6110,6]
type = changestate
trigger1 = MoveHit = 1;これバグの元「=1」不要
trigger2 = movecontact = 1;これもバグの元「=1」不要、否定したい場合はtrigger1=!MoveCotactと用いる
trigger3 = time = 360
trigger4 = numhelper(6110) = 2
trigger4 = time >= 2
value = 6111

198gan:2010/08/02(月) 21:24:08
それは接触しても消えないのか、2つ置いても1つ目が消えないのか…
多分、numhelper(6110)をroot,numhelper(6110)に変えればいいんじゃないかと。
そのままだと、「ヘルパーが出した」IDが6110のヘルパーの数かと思うので。

199タンスの角:2010/08/02(月) 23:11:21
>>gan さん
 接触では消えたのですが2つ目を出しても消えなかったので。
をroot,numhelper(6110)をつけてみたのですがうまくいかなかったので、発生前のエフェクトを使って
root,numexplod(1110) = 1
trigger4 = time >= 30
という形でやってみたらなんとかなりました。アドバイスありがとうございました。

200ケットシー:2010/08/04(水) 21:36:08
 さあ派生技のCNSを書いてみようと挑戦したところさっそくエラーが・・・・。和訳KFの派生CNSを元にしたんですが?技の性能上KFMのCNSの数字いじるだけではだめだしなぁ・・
毎度のことで申し訳ありませんがどなたかアドバイスしていただければ幸いです。
まず既に製作済みの派生元の技のCNSに以下を追記
[State 1100, ステート変更];追加入力
type = ChangeState
trigger1 = Command = "x"
trigger1 = p2statetype! = A
trigger1 = movecontact
value = 1200

長くなるので分割投稿になります。

201ケットシー:2010/08/04(水) 21:38:29
続いて派生技のCNSを
;ドライブ地上ヒット派生上段ふっとばし
[Statedef 1200]
type = A
movetype= A
physics = A
juggle = 4
poweradd= 40
velset = 3,-1
anim = 1200
ctrl = 0
sprpriority = 2

[State 1200, 速度加算]
type = VelAdd
trigger1 = AnimElem =4
x = -1

[State 1200, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 3
value = 0, 3

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



[State 1200, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype = Hard
damage = 50, 5
priority = 3
guardflag = MA
hitflag = MAF
pausetime = 15,15
sparkxy = 0,-65
hitsound = 5,3
guardsound = 6,0
ground.type = High
ground.slidetime = 16
ground.hittime = 18
ground.velocity = -10
guard.velocity = -7
air.velocity = -3.5,-4.5
airguard.velocity = -3.5,-4.5
air.hittime = 20

[State 4];着地stateに移行
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= 0
value = 1201

;■着地state
[Statedef 1201]
type = S
movetype = I
physics = S
anim = 6
ctrl = 0
velset = 0,0
sprpriority = 2

[State 5];地面に立たせる
type = PosSet
trigger1 = time = 0
y = 0

[State 261, 3]
type = MakeDust
trigger1 = time = 0
pos = -10,0
pos2 = -20,0
spacing = 1

[State 1201];立ちstateに戻る
type = Changestate
trigger1 = time = 15;(硬直時間)
value = 0
ctrl = 1

202UNA-10:2010/08/04(水) 22:01:25
えっと物凄く初歩的なので聞きづらかったんですが
空中投げでいきづまってます。一応調べながら
やってみてはいるんですが時間かかりすぎ?
ソロソロ一時的に報告ついでにうpしようと思ってはいるんですけど
どうにも成功しない?('A`;)
空中投げのタイプとしては秋葉系のつかんで落下タイプ
キャラの位置を動かせる段階なのか?
メルブラ風の空中投げみたいにしたいけれど…と悩んでいるんですよね〜
どうせうpするなら先に公開してもいいよね。
と言うわけでうpろだの方に置いてみます。
CNSとかその他もろもろ解ってないですね。
一応その他注意点として上に吹き飛ばすと挙動が変?
大まかにソレじゃないかと思い当たるふしはあるけれど
とりあえず後回しに…してあります。
更に…空中ジャンプキャンセルの回数制限も設定して無いですね。
コレかな?と思ったものをコピペしてみたら偶然出来たのでw
コレはテストプレイ中はそのままで遊び要素としておいて置こうかな?とか
考えています。まぁ修正しなきゃいけないんですけどね

独学でやっててかなりおかしくね?と言う結論になったので
わかる人に見てもらった方が良いかなと
なんか色々すみません
旧アップローダーに置かせていただきました。

203ケットシー:2010/08/04(水) 23:41:09
>200
 すいません解決しました。Widthの記述を削除したらちゃんとなりました。

204blank:2010/08/05(木) 13:11:26
すみません初歩的な質問なんですが、例えばタッグマッチで
貫通ビーム系の必殺技を敵二体同時に当てた場合、ヒットスパークも
二体別々に表示させる方法っていうのは有るんですかね?

205blank:2010/08/05(木) 20:36:33
>>202
ろだに上げてもURLなり番号なりを貼らんと
手を差し伸べてくれる人いないんじゃないかな
あと、空中投げについてアドバイスを欲してるんだとは思うけど
色々書いてるけど具体的にどこがどう行き詰ってるのかが不明瞭


>>204
Type = Explod
Trigger1 = Enemy(0),GetHitVar(Damage)
PosType = Left
Pos = (Enemy(0),ScreenPos x),(Enemy(0),ScreenPos y)
Persistent = 0

Type = Explod
Trigger1 = NumEnemy >= 2
Trigger1 = Enemy(1),GetHitVar(Damage)
PosType = Left
Pos = (Enemy(1),ScreenPos x),(Enemy(1),ScreenPos y)
Persistent = 0

上には書かなかったけどAnimとかFacingとかは適切に設定

206UNA-10:2010/08/05(木) 21:14:37
>>205
あら('A`;)うっかり
すみませんでした。
旧うぷろだの175.zipですね。
ttp://loda.jp/dteit009/?id=175
こうかな?

URL書いてないの気が付いてなかった。指摘ありがとうゴザイマス。

ほとんど解ってないのですけれど
まずは、食らいモーション中に出せるようにする所でしょうか?

207blank:2010/08/05(木) 22:58:42
>>205
とても丁寧な説明ありがとうございました。
お陰様で上手くいくことが出来ました。

208Yes:2010/08/06(金) 12:17:07
>>206
[State -1, 空中投げ]
type = ChangeState
triggerall = (Command = "a+b")
TriggerAll = Command = "holdfwd" || Command = "holdback"
TriggerAll = Statetype = A
TriggerAll = P2Statetype = A
trigger1 = (Ctrl)
trigger1 = (P2MoveType != H)
value = 820

これから
trigger1 = (P2MoveType != H)
をはずすだけです。

他にも質問ありそうですね。
箇条書きでどんどん質問してください。

209UNA-10:2010/08/06(金) 21:06:24
>>208
ありがとうゴザイマス。お陰で修正できました。
では箇条書きで
・空中から着地時に別のアニメーションを表示させたい(叩きつけるモーション)
・ダウンを奪うやり方はこのキャラの後方投げで問題が無いのか気になりますね。
かなり強引なやり方だった気がするので
特に聞いておかないとワカラナイのはココだけですね。

210Yes:2010/08/07(土) 00:30:40
一つ目
trigger1 = Pos Y >= 0 && vel Y > 0 ;地面からの高さが0以下(地面にめり込んでいる)、かつ落下している
こいつを条件に使って
ステートコントローラーChangeAnimで
アニメーションを変えてください。

二つ目
問題ないです。
ただし
SelfStateの発動条件を適切なものにしてください。

211blank:2010/08/08(日) 12:04:53
ガードポイント的な技を作っていて、
ヘルパーの常時ガードステートを用いてますが、ガード不能攻撃を
受けた場合に分身バグが起きてしまいます。
ニコニコmugenwikiのガードポイントの項目には
HitOverRideを使うとあるんですが、ガード不能だけ判別とかできるんですか?
それとも何か上手な使い方があるんでしょうか?
どなたかアドバイス宜しくお願いします。

212blank:2010/08/08(日) 13:34:11
ガー不攻撃も耐えるガードポイントなら
ヘルパーHitOverride使って、GuardFlag問わずガードステートに飛ばせばいい
ガー不攻撃で仰け反る(そのまま喰らう)GPは工夫が必要だけど

213blank:2010/08/08(日) 14:40:04
ガード不能は喰らいます。なおかつ腕部分のみGPって感じの技です

214blank:2010/08/08(日) 15:07:05
横槍失礼
ガードポイントは難しいと聞きます、参考になる(信頼性の高い)記述とか持ってるキャラっていますか?

215blank:2010/08/08(日) 15:23:08
いえ、ウェブの解説など見ながら一から構築しています。
多くのキャラは本体ごとガードステートに移行方式(全身GPになってしまう)
リバーサル方式(飛び道具が防げない、相手のコンボを切ってしまう)

なので今回の場合、あまり参考になりません。

一応ガードしてから攻撃、下半身はダメージ通る、投げは喰らう
ところまでは出来まして、あとはガード不能技の対処って感じです。

216UNA-10:2010/08/08(日) 20:47:50
>>210
1.ありがとうゴザイマス。修正できました。
けれど着地モーションに移行するので何か対策を探しています。
2.SelfStateと言うとダウンを奪う形なのでアレで済ませてましたけど
時間でステートをお返しするタイプもつけておくべきという事ですか?

217blank:2010/08/08(日) 23:37:25
>>215
GPヘルパーは本体に軸重ねてると思うからHelperType = Playerにしておいて
喰らいステートに移行したら(ガードできなかったら)本体も専用喰らいステートに移行
もしGPヘルパーがステート奪われたら-2でSelfStateかDestroySelf

専用喰らいステートは5000番台のステートをコピぺして
GetHitVarをHelper(**),GetHitVarに置き換えたもの
5000番台使ってもいいんだけど条件分岐面倒だから専用ステート用意した方が楽

218UNA-10:2010/08/09(月) 23:43:16
>>216
えー1.は出来てませんでした。
[State 821, ステート変更]
type = ChangeState
trigger1 = (StateType != A) && (AnimTime = 0)
trigger2 = (StateType = A) && (AnimElemTime(15) >= 0)
value = ifelse(StateType=A,51,0)
ctrl = ifelse(StateType=A,0,1)

コレがほぼその原因らしいけれどはずすと
空中で停止します。何か手を考え中

219Yes:2010/08/10(火) 01:17:50
[Statedef 821]

;---------------------------------------------------------------------------
;成功(放り投げる)
[Statedef 821]
type = A
movetype = A
physics = N
anim = 821
ctrl = 0
poweradd = 60
velset = 0,0

[State 821, 掴んだ相手の位置]
type = TargetBind
trigger1 = 1
pos = 0, -90

[State 821, 移動速度]
type = VelSet
trigger1 = time = 0
x = 1.5
y = -8

[State 821, 速度加算]
type = VelAdd
trigger1 = 1
y = 0.4

[State 821, 移動速度]
type = VelSet
trigger1 = Pos Y >= 0 && vel Y > 0
x = 0
y = 0

[State 821, 移動速度]
type = PosSet
trigger1 = Pos Y >= 0 && vel Y > 0
y = 0

まるまるこう書き換えて>>210を試してみてください。

220UNA-10:2010/08/10(火) 02:28:42
あれ?出ない?なんかすみません
確認の為に…
;---------------------------------------------------------------------------
;成功(放り投げる)
[Statedef 821]
type = A
movetype = A
physics = N
anim = 821
ctrl = 0
poweradd = 60
velset = 0,0

[State 821, 掴んだ相手の位置]
type = TargetBind
trigger1 = 1
pos = 0, -90

[State 821, 移動速度]
type = VelSet
trigger1 = time = 0
x = 1.5
y = -8

[State 821, 速度加算]
type = VelAdd
trigger1 = 1
y = 0.4

[State 821, 移動速度]
type = VelSet
trigger1 = Pos Y >= 0 && vel Y > 0
x = 0
y = 0

[State 821, 移動速度]
type = PosSet
trigger1 = Pos Y >= 0 && vel Y > 0
y = 0

[State 821, アニメ変更]
type = ChangeAnim
trigger1 = Pos Y >= 0 && vel Y > 0 ;地面からの高さが0以下(地面にめり込んでいる)、かつ落下している
value = 825

[State 821, ステート変更]
type = ChangeState
trigger1 = (StateType != A) && (AnimTime = 0)
trigger2 = (StateType = A) && (AnimElemTime(15) >= 0)
value = ifelse(StateType=A,51,0)
ctrl = ifelse(StateType=A,0,1)

;---------------------------------------------------------------------------
>>210
と言うとこの辺までですよね?
アレ?アニメーションの登録位置がおかしかったのかな?

221Yes:2010/08/10(火) 02:51:18
おおお落ち着いてください。
よく見て。その位置に(ChangeAnimを)入れると(ChangeAnimの)トリガーが満たされない。
入れるなら

[State 821, 移動速度]
type = VelSet
trigger1 = Pos Y >= 0 && vel Y > 0
x = 0
y = 0

の上です。
いっぺんChangeStateを入れずに
ChangeAnimだけ入れてみてください。

222UNA-10:2010/08/10(火) 03:08:59
ああなるほどソコでしたか。すみません
何とかアニメーションは変更できましたが
アニメーションが1枚目で止まりっぱなしで
1p2pともにうごけなくなります。

223Yes:2010/08/10(火) 03:53:40
それならば
ChangeAnimのトリガーに
trigger1 = anim = 821 ;現在のanimが821番である
を付け加えてください。

>うごけなくなります
[Statedef 821]のどこかに
[State 821, ステート変更]
type = ChangeState
trigger1 = anim = 825
trigger1 = animtime = 0
value = 0
ctrl = 1
を入れ

[Statedef 821]のTargetBindの発動条件に
trigger1 = anim != 825
を足し

[Statedef 823]に
[State 821, 移動速度]
type = VelSet
trigger1 = enemy,anim = 825
x = 3
y = -4
をくわえる。

こんな感じで如何でしょう。

224UNA-10:2010/08/10(火) 04:48:23
>>223
お陰で解決できました〜ありがとうございます。
後でキャラクターの細かい位置調整をしておきます。
いやほんとにありがとうございました。

225愛茶:2010/08/10(火) 23:59:50
う〜ん、対策の仕方は一様分かってるのですが。

trigger○ = Palno = [1,6](多分意味的には1pから6pまで、だと思う)

と入れるとCMBではちゃんと有効になるんですが、−2とかになると、エラー吐かれるんですよねぇ。
と、なると
trigger○ = palno = 1
(中略)
trigger○ = palno = 6
まで一々書かないといけないのでしょうかね?

めんどクセぇ・・・・もっと手間が省ける方法ないのかなぁ?

226愛茶:2010/08/11(水) 00:06:01
追記

どっかの記述がtype = ~~~~
が抜けてたのが原因だったみたい。

クソ過ぎる理由でエラー。




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