NEW  |  HOME  |  OLD

ヘルパー式AIなど(3/13会話の始まり部分追記)

12/11
22:15 (Anoth-blue-eyes) ヘルパーと本体とでコマンドが食い違ってAI判断するって話はよく聞きますけど、
22:16 (Anoth-blue-eyes) ヘルパーどうしでもコマンドがくいちがうことはあります?
22:17 (Anoth-blue-eyes) この際混線を受けない限り誤作動が起こらないようにヘルパーのみで起動させる方法をとってみようと思うんですが。。。
22:17 (emeru) どうだろう、ヘルパー同士ならあるんじゃないかなぁ
22:17 (Anoth-blue-eyes) ほむ
22:17 (emeru) つか、人操作でもヘルパーと本体じゃ食い違う事はある
22:17 (Anoth-blue-eyes) らしいですね
22:17 (Anoth-blue-eyes) くらい状態とか振り向きとかで起こることが多いらしいので
22:18 (emeru) 木人形をよくテストキャラとして動かしてるけど、たまーに誤爆するンw
22:18 (Anoth-blue-eyes) やっぱりw
22:18 (Anoth-blue-eyes) だからこそ、ステート固定を利用して混線が起こらない限り誤作動しないように
22:18 (Anoth-blue-eyes) 安全なヘルパー2つで起動させてみようと思ったんです
22:19 (emeru) 二つとナ
22:20 (Anoth-blue-eyes) keyctrl=1のヘルパーAとBを同時に召喚して、両方とも自分の後ろ側のはるか遠くに飛ばしておいて
22:21 (Anoth-blue-eyes) まずはP2誤判定を避けておく、と
22:21 (Anoth-blue-eyes) それで、全く同じ位置、全く同じ向きの状態でAからB、BからAのコマンドを互いに監視するんです
22:23 (Anoth-blue-eyes) この2つは常時無敵/ガーステの完全防備体勢をとるので、私の推測が正しければ、相手が混線親変更クラスのものをぶつけて来ない限り誤作動しないと考えられるんです
22:24 (Anoth-blue-eyes) 本体とヘルパーとでは攻撃の晒され方、硬直の発生など多数の異なる条件があるから食い違いが発生するわけで。だったら全く同じ条件でやろうじゃないって感じですね
22:27 (emeru) ふむふむ・・・
22:27 (Anoth-blue-eyes) というわけで実際にやってみます(
22:28 (Anoth-blue-eyes) これで本当に起動したらMUGEN界に革命が起きるぞ・・・(
22:29 (emeru) AI起動か・・ラベル差を利用した方法しかやってないなぁ・・・
22:30 (Anoth-blue-eyes) 私はそれこそAI専用コマンドを押したかどうかしかやってかなtt(
22:30 (Anoth-blue-eyes) ただそのタイムラグでAIが起動しないまま首とられることがザラにあったので(
22:31 (emeru) 常時アーマー(ボソッ
22:31 (Anoth-blue-eyes) wwwwwww
22:32 (Anoth-blue-eyes) でも実際はこのアクティベートヘルパーも5150においときたかったんですけど、どうやら5150にいるヘルパーはコマンドを読み込んでくれない(
22:37 (Anoth-blue-eyes) 混線でtargetfacingやってくるような輩で凶ランクにいられる連中はまずいないからこれが飛んでくる可能性は除外してよいっと(
22:41 (Anoth-blue-eyes) ・・・
22:41 (Anoth-blue-eyes) AIコマンド差式の場合ってコマンドいくつくらい監視対象にすればいいんです?(
22:43 (Anoth-blue-eyes) 基本的なABCXYZS↑↓←→くらいあれば十分なんですかね?
22:55 (Anoth-blue-eyes) 起動しない・・・orz
22:58 (Anoth-blue-eyes) triggerall=ishelper(80261)
22:58 (Anoth-blue-eyes) trigger1 =command="a"
22:58 (Anoth-blue-eyes) trigger1 =helper(80260),command!="a"
22:58 (Anoth-blue-eyes) 書き方自体はこれであってるはず・・・
23:00 (Anoth-blue-eyes) あ(
23:00 (Anoth-blue-eyes) こいつら5150にいやがった(
23:04 (Anoth-blue-eyes) うーん、わからん・・・
23:04 (Anoth-blue-eyes) 基本コマンドだけでは起動しないってことなのか・・・
23:04 (Anoth-blue-eyes) root比較を織り交ぜてなおこれだけ起動しにくいってことだから・・・
23:12 (Anoth-blue-eyes) コマンドに/・・・?やっべぇわかんないことだらけだ(
23:15 (vesper_AFK) winMUGENなら、どれだけやっても内部AIのコマンド入力でAI起動することが前提だからライフバーの設定によっては棒立ちしやすいよ
23:15 (vesper_AFK) 常時AI最強(
23:15 (Anoth-blue-eyes) まぁ一応常時用スイッチもありますけど(
23:16 (Anoth-blue-eyes) やっぱりこういうところでもデフォで動くようにしておきたいんですよ、ある種の汎用魂(
23:16 (vesper_AFK) うん。
23:17 (Anoth-blue-eyes) で、コマンドの仕様を調べてたんですが・・・わけわかめ(
23:17 (Anoth-blue-eyes) ;後を押しながらA+B、という意味
23:17 (Anoth-blue-eyes) [Command]
23:17 (Anoth-blue-eyes) name = "away-b"
23:17 (Anoth-blue-eyes) command = /B,a+b
23:17 (Anoth-blue-eyes) time = 10
23:17 (vesper_AFK) 自分が知ってる限りはこんなところ。 http://mugenbinran.web.fc2.com/AIFlag.html
23:17 (Anoth-blue-eyes) ヘルパーが読み込めるコマンドってもしかしてこれのことですか?
23:17 (vesper_AFK) ん?
23:18 (Anoth-blue-eyes) 私もちょうどそのページを調べてたんですが
23:18 (Anoth-blue-eyes) KeyCtrl=1のヘルパーでのラベルは人操作の入力なら本体と同様に真になるが、内部AIのキー入力ならコマンドに/を含むラベルのみ本体と同様の真偽になる(コマンドに/を含まないラベルは真になることがない)。
23:18 (Anoth-blue-eyes) ってのが出てきたんですよ
23:18 (vesper_AFK) うん
23:19 (Anoth-blue-eyes) その/入りてのが、もしかして上の/B,a+bのことなのかなぁと
23:19 (vesper_AFK) あ~
23:19 (vesper_AFK) 単ボタン前提で書いてたなぁ
23:20 (Anoth-blue-eyes) 単ボタン?
23:22 (vesper_AFK)  /Bなら内部AIのキー入力でも真になる。 A+Bは内部AIのキー入力では真にならないから、「/B,A+B」とすると内部AIのキー入力では真にならないと思う
23:23 (Anoth-blue-eyes) てーことは、ABCXYZS↑↓←→の11種類にのみ/処理を施せばいいってことです?
23:24 (Anoth-blue-eyes) [Command]
23:24 (Anoth-blue-eyes) name = "a"
23:24 (Anoth-blue-eyes) command = /a
23:24 (Anoth-blue-eyes) time = 1
23:24 (Anoth-blue-eyes) こんなふうに。
23:25 (vesper_AFK) う~ん、AIフラグに使うなら、そんな感じかな。 その説明のもう少し下にある「ヘルパー単独式」の基本例の項目に一応暴発しないはずの書き方例があるから、それを使ってもらってもいいよ
23:26 (Anoth-blue-eyes) 一応見ておきますけど大丈夫のはずです。この方法は本体に依存しない方法にできるかを試す意味合いもあるので。
23:27 (Anoth-blue-eyes) きた!・・・けど圧倒的に遅い(
23:27 (vesper_AFK) ところでヘルパーだけで判断させる方法の利点って何だろ?
23:28 (Anoth-blue-eyes) 本体がどんな状態にあっても暴発させること無く起動できるところ?
23:28 (Anoth-blue-eyes) なおしっかり暴発した模様(
23:28 (vesper_AFK) 自分のやつで暴発することあったら報告が欲しかったりはする(
23:29 (Anoth-blue-eyes) おかしい・・・Xボタンおしたときだけ百発百中で暴発する(
23:29 (vesper_AFK) 条件から抜けてるとか、コマンドが抜けてるとか。
23:30 (vesper_AFK) ちなみにAI暴発って単語は人操作中にAIが起動してしまうことで良いよね?
23:30 (Anoth-blue-eyes) ですです
23:31 (Anoth-blue-eyes) XじゃなくてAだった(
23:32 (vesper_AFK) 人操作フラグを立てるようにすれば、AI起動するのは人操作が立ってないときだけって条件にすることで、暴発しないと思ってるんだけど、例外あるっけ?
23:32 (Anoth-blue-eyes) 押し忘れ?(痴呆
23:33 (vesper_AFK) あ、人が操作する前に攻撃食らってどうのこうのの可能性はあるのかな。
23:34 (vesper_AFK) この文章書いてから時間経ってるから知識抜けてる(
23:35 (Anoth-blue-eyes) は?(
23:35 (vesper_AFK) ん?
23:35 (Anoth-blue-eyes) aボタンとXボタンを起動対象から外したのに暴発する(
23:35 (Anoth-blue-eyes) なにこれ(
23:36 (vesper_AFK) ちょっとcns見てみたい
23:37 (Anoth-blue-eyes) ちょっと待ってくださいね・・・本当にこのステコンが原因なのか試して見ます
23:37 (vesper_AFK) てか、ヘルパー単独式って言ってるやつがヘルパー単独で行う利点がわからないって言った事が分からない(おい
23:38 (vesper_AFK) 自分のがそもそもヘルパー単独で判断してるのに、何言ってたんだw
23:39 (vesper_AFK) 判断はヘルパー1個だけで行って、そのフラグの保存場所を本体にしてるだけだ、これw
23:39 (vesper_AFK) 忘れ過ぎである(

ここまで追加

23:39 (Anoth-blue-eyes) ;【AI起動制御】
23:39 (Anoth-blue-eyes) [State ];AIスイッチ
23:39 (Anoth-blue-eyes) type = parentvarset
23:39 (Anoth-blue-eyes) triggerall=ishelper(80260)
23:39 (Anoth-blue-eyes) triggerall=numhelper(80261)
23:39 (Anoth-blue-eyes) triggerall=playerIDexist(parent,ID)
23:39 (Anoth-blue-eyes) triggerall=(parent,ID)=(root,ID)
23:39 (Anoth-blue-eyes) triggerall=roundstate=2
23:39 (Anoth-blue-eyes) triggerall=root,sysvar(2)>=30
23:39 (Anoth-blue-eyes) triggerall=root,var(59)=96061096
23:39 (Anoth-blue-eyes) triggerall=1
23:39 (Anoth-blue-eyes) trigger1 =command="a"
23:39 (Anoth-blue-eyes) trigger1 =helper(80261),command!="a"
23:39 (Anoth-blue-eyes) trigger2 =command="b"
23:39 (Anoth-blue-eyes) trigger2 =helper(80261),command!="b"
23:39 (Anoth-blue-eyes) trigger3 =command="c"
23:39 (Anoth-blue-eyes) trigger3 =helper(80261),command!="c"
23:39 (Anoth-blue-eyes) trigger4 =command="x"
23:39 (Anoth-blue-eyes) trigger4 =helper(80261),command!="x"
23:39 (Anoth-blue-eyes) trigger5 =command="y"
23:39 (Anoth-blue-eyes) trigger5 =helper(80261),command!="y"
23:39 (Anoth-blue-eyes) trigger6 =command="z"
23:39 (Anoth-blue-eyes) trigger6 =helper(80261),command!="z"
23:39 (Anoth-blue-eyes) trigger7 =command="a"
23:39 (Anoth-blue-eyes) trigger7 =helper(80261),command!="s"
23:39 (Anoth-blue-eyes) trigger8 =command="U"
23:39 (Anoth-blue-eyes) trigger8 =helper(80261),command!="U"
23:39 (Anoth-blue-eyes) trigger9 =command="D"
23:40 (Anoth-blue-eyes) trigger9 =helper(80261),command!="D"
23:40 (Anoth-blue-eyes) trigger10=command="F"
23:40 (Anoth-blue-eyes) trigger10=helper(80261),command!="F"
23:40 (Anoth-blue-eyes) trigger11=command="B"
23:40 (Anoth-blue-eyes) trigger11=helper(80261),command!="B"
23:40 (Anoth-blue-eyes) v=59
23:40 (Anoth-blue-eyes) value = -(random+1)
23:40 (Anoth-blue-eyes) ignorehitpause=1
23:40 (Anoth-blue-eyes) 長いのでこっちに。
23:40 (Anoth-blue-eyes) 本体直属のヘルパーがこのステートにあるとき、80260のコマンドが成立して相棒の80261のコマンドが成立してない場合にスイッチ起動っていう寸法です
23:40 (Anoth-blue-eyes) [State ];AIスイッチ
23:40 (Anoth-blue-eyes) type = parentvarset
23:40 (Anoth-blue-eyes) triggerall=ishelper(80261)
23:40 (Anoth-blue-eyes) triggerall=numhelper(80260)
23:40 (Anoth-blue-eyes) triggerall=playerIDexist(parent,ID)
23:40 (Anoth-blue-eyes) triggerall=(parent,ID)=(root,ID)
23:40 (Anoth-blue-eyes) triggerall=roundstate=2
23:40 (Anoth-blue-eyes) triggerall=root,sysvar(2)>=30
23:40 (Anoth-blue-eyes) triggerall=root,var(59)=96061096
23:40 (Anoth-blue-eyes) triggerall=1
23:41 (Anoth-blue-eyes) trigger1 =command="a"
23:41 (Anoth-blue-eyes) trigger1 =helper(80260),command!="a"
23:41 (Anoth-blue-eyes) trigger2 =command="b"
23:41 (Anoth-blue-eyes) trigger2 =helper(80260),command!="b"
23:41 (Anoth-blue-eyes) trigger3 =command="c"
23:41 (Anoth-blue-eyes) trigger3 =helper(80260),command!="c"
23:41 (Anoth-blue-eyes) trigger4 =command="x"
23:41 (Anoth-blue-eyes) trigger4 =helper(80260),command!="x"
23:41 (Anoth-blue-eyes) trigger5 =command="y"
23:41 (Anoth-blue-eyes) trigger5 =helper(80260),command!="y"
23:41 (Anoth-blue-eyes) trigger6 =command="z"
23:41 (Anoth-blue-eyes) trigger6 =helper(80260),command!="z"
23:41 (Anoth-blue-eyes) trigger7 =command="a"
23:41 (Anoth-blue-eyes) trigger7 =helper(80260),command!="s"
23:41 (Anoth-blue-eyes) trigger8 =command="U"
23:41 (Anoth-blue-eyes) trigger8 =helper(80260),command!="U"
23:41 (Anoth-blue-eyes) trigger9 =command="D"
23:41 (Anoth-blue-eyes) trigger9 =helper(80260),command!="D"
23:41 (Anoth-blue-eyes) trigger10=command="F"
23:41 (Anoth-blue-eyes) trigger10=helper(80260),command!="F"
23:41 (Anoth-blue-eyes) trigger11=command="B"
23:41 (Anoth-blue-eyes) trigger11=helper(80260),command!="B"
23:41 (Anoth-blue-eyes) v=59
23:41 (Anoth-blue-eyes) value = -(random+1)
23:41 (Anoth-blue-eyes) ignorehitpause=1
23:41 (Anoth-blue-eyes) もちろん、80261の方からも同じ要領で監視を行っています
23:42 (vesper_AFK) trigger7 =command="a" これが原因じゃない?
23:42 (vesper_AFK) trigger7 =command="s" にしたら直らない?
23:42 (Anoth-blue-eyes) あwwwwwwwwwwwwwww
23:42 (Anoth-blue-eyes) あほやwwwwwwww完全にあほンゴwwwwwwwwwwwwwwwwww
23:42 (YANMAR) アチャー
23:44 (vesper_AFK) 直った?
23:44 (Anoth-blue-eyes) いや・・・それが今度は不思議な挙動をとるようになりまして(
23:44 (vesper_AFK) ふむ
23:45 (Anoth-blue-eyes) [Command]
23:45 (Anoth-blue-eyes) name = "a"
23:45 (Anoth-blue-eyes) command = /a
23:45 (Anoth-blue-eyes) time = 1
23:45 (Anoth-blue-eyes) オリジナルのコマンドで直接試したのがまずかったっぽい(
23:45 (Anoth-blue-eyes) 起動用コマンドってやっぱり"a"だとまずいです?
23:46 (Anoth-blue-eyes) どういうわけか必殺技が撃てなくなったりしてるので・・・
23:46 (YANMAR) AI起動用ってふつう人間が入力できない奴とかじゃなかったっけ
23:46 (Anoth-blue-eyes) それもあるんですが、コマンドの食い違いを利用する方法を使ってみようと思ったんです
23:46 (vesper_AFK) ん? command=a とcommand=/a の両方のラベル名をcommand="a"にしてたりします?
23:47 (Anoth-blue-eyes) command=aが/aに変わったんです
23:47 (Anoth-blue-eyes) command=aが存在しない状態です
23:48 (vesper_AFK) AI起動で入力できないコマンドを作るのは、内部AIがコマンド入力条件に関係なくそのコマンドのラベルを真にする動作を利用する場合ですね >ヤンマーさん
23:49 (YANMAR) ほうほほほう?
23:49 (Anoth-blue-eyes) コマンドは、AIの場合キャラが独自に持ってるコマンドを自力で入力することができないので
23:49 (vesper_AFK) 今回は内部AIのキー入力がヘルパーでは一部読み取れない事を利用しようとしてます
23:49 (Anoth-blue-eyes) そのキャラが持ってるコマンドを使うってのはご存知の通りですが
23:49 (YANMAR) あーその差を利用って感じなのね
23:50 (Anoth-blue-eyes) ヘルパーと本体で別々に管理されてるので、本体しか読んでない、もしくはヘルパーしか読んでないって上体が生まれうるのを利用してるわけです
23:51 (Anoth-blue-eyes) にしてもこの・・・/ってどういう意味なんだろう・・・
23:51 (vesper_AFK) 長押し
23:51 (vesper_AFK) 知らずに使ってたかw
23:51 (Anoth-blue-eyes) 長押し?
23:51 (YANMAR) おいいw
23:52 (Anoth-bl_) 回線きれた(
23:52 (vesper_AFK) aと/aの違いは、aは単にAボタンを押した瞬間ですけど、/aはAボタンを押し続けた時という感じですね
23:53 (Anoth-bl_) ほむ、それがどういうわけか、ヘルパーでは/しか読み込めなくなってる、と(
23:53 (vesper_AFK) ですね
23:55 (Anoth-bl_) なるほど。。。でも/しか使えるコマンドがないってことは、ヘルパーのコマンドプールはかなり少ないわけですね
23:55 (Anoth-bl_) つまり、たった10個程度の数でもすばやく感知できるわけだ。。。
23:55 (vesper_AFK) ん?
23:55 (vesper_AFK) すばやく感知というのは?
23:56 (Anoth-bl_) いえ、ヘルパー式がコマンド式よりも圧倒的に早いって書いてあったので。
23:56 (vesper_AFK) ああ、それはコマンド式は、↑で言ったラベルを直接真にする機能だけを使ってますけど、
23:57 (vesper_AFK) ヘルパー式はキー入力の機能を使ってることが原因ですね
23:57 (Anoth-bl_) ふむ
23:57 (vesper_AFK) ラベルを真にする機能が働く頻度は、キー入力が働く頻度よりだいぶ少ないのです。
23:58 (Anoth-bl_) ふむ・・・
23:58 (Anoth-bl_) つまりあれか、本体を経由しないとやっぱり起動速度はそのまま・・・
23:59 (vesper_AFK) で、自分が書いたヘルパー単独式はヘルパー式の暴発原因を取り除いたものなので速度も早いと
23:59 (vesper_AFK) (宣伝

00:00 (Anoth-bl_) ぬぁー起動しねぇ(
00:00 (vesper_AFK) 自分のと違うのは、自分は1つのヘルパーで判断してるのに対して、青眼さんは2つのヘルパーで判断してるってことかな
00:00 (Anoth-bl_) たった11このヘルパーじゃ全然起動してくれねぇ(
00:01 (vesper_AFK) ヘルパー増やしても変わらないようなw
00:01 (Anoth-bl_) ヘルパーじゃないや、コマンドです
00:01 (vesper_AFK) あ~、コマンド数は正義(
00:02 (Anoth-bl_) えっと
00:02 (vesper_AFK) それでも埋めなくても起動しないということは無かったはずだけど。
00:02 (Anoth-bl_) やっぱりキー操作で本体を経由しないとダメなのかー・・・
00:03 (vesper_AFK) 本体を経由というのがちょっと分かってなかったり。
00:03 (Anoth-bl_) えっとだ
00:03 (Anoth-bl_) ヘルパーでもキー操作は受け付けるんですよね?
00:03 (vesper_AFK) うん
00:03 (Anoth-bl_) [Command]
00:03 (Anoth-bl_) name = "a"
00:03 (Anoth-bl_) command = a
00:03 (Anoth-bl_) time = 1
00:04 (Anoth-bl_) つまり、この単独キーだけは/がなくても感知できるってことでいいんですね?
00:04 (vesper_AFK) いや出来ないです
00:04 (Anoth-bl_) ふぁー(
00:04 (Anoth-bl_) あれ、じゃあミストのヘルパーはどうやって動いてたんだ・・・?(
00:05 (Anoth-bl_) 旧ミストのボディヘルパーのことです
00:05 (Anoth-bl_) >みすとのへるぱー
00:05 (vesper_AFK) それはAIの時の話ですよね?
00:05 (Anoth-bl_) いや、本体動作のときです
00:05 (vesper_AFK) 人操作時です?
00:05 (Anoth-bl_) ・・・まさかあれはrootcommand参照だったのかしら
00:05 (Anoth-bl_) ですね
00:06 (vesper_AFK) 人操作の場合はヘルパーも↑のは感知できますよ
00:06 (vesper_AFK) 出来ないと言ったのは、内部AIのキー入力に対してですね
00:07 (Anoth-bl_) ほむ
00:07 (Anoth-bl_) キー操作ってのは、内部AIもやってくれるんです?
00:07 (vesper_AFK) はい
00:07 (Anoth-bl_) つまりだ
00:07 (vesper_AFK) 内部AIは2つの動作が有ります。
00:08 (vesper_AFK) 1つがあるコマンドのラベルを無条件で真にする動作。 もうひとつがキー入力の動作。
00:08 (Anoth-bl_) つまり・・・
00:08 (Anoth-bl_) [Command]
00:08 (Anoth-bl_) name = "a"
00:08 (Anoth-bl_) command = a
00:08 (Anoth-bl_) time = 1
00:08 (Anoth-bl_) こっちはキー操作してくれるからヘルパーでも有効化できるけど
00:08 (Anoth-bl_) [Command]
00:08 (Anoth-bl_) name = "a-X"
00:08 (Anoth-bl_) command = a
00:08 (Anoth-bl_) time = 1
00:09 (Anoth-bl_) こっちは読み込んでくれない。こういうことですか(
00:09 (Anoth-bl_) ちがってそうだ(
00:09 (vesper_AFK) ん? nameが違うだけ?
00:09 (vesper_AFK) それはどちらも内部AIのキー入力では、ヘルパーでのコマンドラベルは真に出来ないですね
00:10 (Anoth-bl_) あれー自分でも言ってることおかしくなってきた(
00:10 (Anoth-bl_) どっちも無理なんだ(
00:10 (vesper_AFK) nameは識別するための名前ですからねw
00:10 (vesper_AFK) 肝心なのはcommand= の方ですね
00:10 (Anoth-bl_) じゃあ、内部のキー入力で入力できるコマンドってどういうものなんです?
00:10 (Anoth-bl_) ふむ
00:11 (vesper_AFK) [Command]
00:11 (vesper_AFK) name = "a_AI"
00:11 (vesper_AFK) command = /a
00:11 (vesper_AFK) time = 1
00:11 (Anoth-bl_) こっちがキーで入力できないわけですか
00:11 (vesper_AFK) これだと内部AIのキー入力でも、ヘルパーのコマンドラベルも真になります
00:12 (Anoth-bl_) つまり・・・キー入力がなされた場合、aが有効化されずa-AIだけが有効化される、と
00:13 (Anoth-bl_) あぁこれデュアルヘルパーにする意味なかったやつかしら(
00:13 (vesper_AFK) うん(
00:13 (Anoth-bl_) ぐふっ(
00:13 (Anoth-bl_) はいっおとなしくそうしますっ(
00:35 (Anoth-bl_) いや待て・・・どういうことだ・・・これでどうやって本体とヘルパーを判別するんだ・・・
00:35 (vesper_AFK) 暴発はさっきのAIの話? 単純ミス?
00:35 (Anoth-bl_) AIのほうです(
00:37 (Anoth-bl_) キー入力がなされた場合、aが有効化されず/aだけが有効化される、ここまではいいですよ
00:38 (Anoth-bl_) でも、キーは本体だろうがAIだろうがやってくる。。。これをどうやってヘルパーだけで見破るのかが(
00:38 (vesper_AFK) 両方が真なら人操作、片方だけが真ならAI操作
00:39 (Anoth-bl_) trigger1 =command="a-X"
00:39 (Anoth-bl_) trigger1 =command!="a"
00:39 (Anoth-bl_) つまりこうでいいんですか?
00:39 (Anoth-bl_) というか今これなんですけど・・・
00:39 (vesper_AFK) え~とa-Xは/aで、aはaです?
00:39 (Anoth-bl_) です
00:40 (Anoth-bl_) そもそも人操作でもこれを満たすような気がしてならないんですよね。。。
00:40 (vesper_AFK) それが満たされるならAIですね
00:40 (Anoth-bl_) ですよね?じゃあ何で暴発するんだ・・・
00:41 (vesper_AFK) いつも暴発します?
00:41 (Anoth-bl_) どのキーでも百発百中で暴発しますね(
00:42 (vesper_AFK) う~ん、ファイルをアップしてもらったほうが見やすいかなぁ。
00:42 (Anoth-bl_) なにを送ればいいです?
00:43 (vesper_AFK) AI判断を行っているステートがあるファイルを上げてもらえれば。
00:43 (Anoth-bl_) つまりメインCNSか・・・了解です
00:46 (vesper_AFK) 受け取りました
00:47 (Anoth-bl_) 了解ですー
00:48 (Anoth-bl_) ;特殊召喚/AIアクティベーター
00:48 (Anoth-bl_) [statedef 77026]
00:48 (Anoth-bl_) これがその記述があるステートです
00:50 (vesper_AFK) は~い
00:55 (vesper_AFK) ああ、思い出した
00:55 (vesper_AFK) この条件はAボタンを押した瞬間だけ判別できてる
00:55 (Anoth-bl_) 押した瞬間?
00:55 (vesper_AFK) だけど、即ボタンを離すわけではないから
00:56 (Anoth-bl_) おしっぱなしになった場合はアウト、と。。。
00:56 (vesper_AFK) 2F目とかで、!="a"が成立しつつ、"/a"も成り立ってしまってる
00:56 (vesper_AFK) ですです
00:56 (vesper_AFK) だから、自分のフラグでは先に人操作であるかを判断して、人操作フラグを立てる構造になってますね
00:57 (Anoth-bl_) なるほど。。。
00:57 (Anoth-bl_) でも人間なんてそうそう1Fだけ押すことは不可能ですからねぇ・・・
00:58 (vesper_AFK) ですね。 
00:59 (vesper_AFK) だから人操作である判断も同時に行う必要がありますね
01:00 (Anoth-bl_) ふむ。。。
01:02 (Anoth-bl_) キーを押した1Fだけ判別できる、か・・・
01:02 (Anoth-bl_) となればこれはexplodスイッチの出番かな(痙攣
01:03 (Anoth-bl_) 各種キーに対応したexplodを、/なしが発動した瞬間にのみremovetime=0で発動して
01:03 (Anoth-bl_) このexplodがある間のみ判別を行う
01:03 (Anoth-bl_) これならいけるだろ・・・(執念
01:04 (vesper_AFK) 1Fだけ判断できるというか、1Fあれば判断できるという
01:04 (Anoth-bl_) ステコン数22個くらいに膨れ上がるやで(痙攣
01:04 (Anoth-bl_) 2Fがやってきたらまずいってことですよね?つまり。
01:05 (vesper_AFK) 人操作フラグ無しの話なら、そうかなぁ
01:05 (Anoth-bl_) ・・・あー
01:06 (Anoth-bl_) 両方が満たされた場合に別スイッチをONにして、
01:06 (vesper_AFK) 自分は未判断を0、AI起動を1、人操作時を-1にしてますね
01:06 (vesper_AFK) va(59)=x
01:06 (Anoth-bl_) これがOFFの状態のまま片方だけ満たされた場合に使えばいい、か・・・
01:07 (Anoth-bl_) 私のはAILvを備えてる上、対変数いじり対策に面倒なことをしてるので(
01:07 (vesper_AFK) 人操作感知で特定の番号のexplodを出すとか?
01:07 (Anoth-bl_) そうなりますね
01:08 (Anoth-bl_) で、このexplodがないまま前の条件を満たすとスイッチオン、と
01:08 (vesper_AFK) ですね
01:08 (Anoth-bl_) やってみますか。。。
01:18 (Anoth-bl_) trigger1 =command="a-X"
01:18 (Anoth-bl_) trigger1 =command="a"
01:18 (Anoth-bl_) えっと
01:18 (Anoth-bl_) これを満たした場合にAI発動を封じればいいんですね
01:19 (vesper_AFK) そうですね。それが満たされた時は人操作確定なので。
01:20 (Anoth-bl_) 暴発しました☆
01:21 (Anoth-bl_) というかまたしても百発百中なんですが(
01:25 (vesper_AFK) また、送ってもらえば見てみます
01:26 (Anoth-bl_) おくりましたー
01:26 (Anoth-bl_) 変わってるのは、AI発動補助用のexplodスイッチ記述が増えてるところくらいでしょうか

01:30 (vesper_AFK) 青眼さん、暴発するというのは試合開始して、イントロ飛ばさずにラウンドが始まって、操作しようとしたらAIが暴発ということであってます?
01:31 (Anoth-bl_) あれ、飛ばさなかったら暴発しなくなってる(
01:31 (Anoth-bl_) なんで(
01:31 (vesper_AFK) イントロ飛ばしは暴発原因だったり
01:31 (Anoth-bl_) そうなんですか?でもなんで?
01:31 (vesper_AFK) ちょっとよく分からないヘルパーの挙動があるのです
01:32 (Anoth-bl_) ふむ・・・
01:32 (vesper_AFK) えっと、推測混じりだった気がしますが
01:32 (vesper_AFK) 原因:イントロ終了によりヘルパーの変数がリセットされ、"/command"コマンド成立でAIフラグが立つ。
01:32 (vesper_AFK) これが原因だったと思います
01:33 (Anoth-bl_) でも変数も何も、このヘルパーが召喚されるのはroundstateが2になった後ですよ?
01:33 (Anoth-bl_) それでもこの影響を受けるものなんです?
01:33 (vesper_AFK) ふむぅ
01:34 (vesper_AFK) 自分は最初から出してたからなぁ
01:34 (Anoth-bl_) trigger1=sysvar(2)=3;
01:34 (vesper_AFK) RoundState=2から3F目って意味です?
01:34 (vesper_AFK) =2開始から
01:34 (Anoth-bl_) これですね、roundstate=2になってからの時間を計測する本体変数SV2が3のときなので
01:35 (Anoth-bl_) roundstate=2になってから3F経過しなければ召喚されないんです
01:35 (vesper_AFK) う~ん、
01:35 (vesper_AFK) イントロ飛ばしの直後って既にRoundState=2ですよね?
01:35 (Anoth-bl_) ですね
01:37 (vesper_AFK) あ、でも30F以降から判定かぁ
01:37 (Anoth-bl_) この条件でしかこのヘルパーはその処理をしないんです
01:37 (vesper_AFK) 0.5秒
01:38 (Anoth-bl_) さっき試したところ、試合開始後3秒経過してからキー操作して暴走したのを確認しました
01:38 (vesper_AFK) イントロ飛ばしは?
01:38 (Anoth-bl_) イントロを飛ばした場合のみですね、飛ばさなければ大丈夫なのは同じみたいです
01:39 (vesper_AFK) う~ん、やっぱりイントロ飛ばしかぁ・・・
01:40 (vesper_AFK) 確かイントロ飛ばしを行うといろいろとリセットがかかるんでしたよね
01:40 (Anoth-bl_) ですねー、かなり面倒なことになったような。
01:41 (vesper_AFK) そのリセットされた情報が特定の条件ではリセット前が読み込まれるとか?
01:41 (vesper_AFK) 凶悪技術系の部屋の話みたいな
01:41 (Anoth-bl_) ですねぇ、こんなところで仕様の話が飛んでくるんですねぇ
01:41 (vesper_AFK) 何が読み込まれた結果かとか一切思いついてないですけど(
01:41 (Anoth-bl_) そういった意味では神での経験はおおきかった(
01:42 (vesper_AFK) 人操作判定がトリガーで弾かれて、AI判定は弾かれない状態になってるということのはず。
01:43 (Anoth-bl_) そのようですね、trigger12=1をexplod側にいれたら発動しなくなったので
01:43 (Anoth-bl_) コマンド部分に何らかの影響が出てるってことでしょうか。。。
01:44 (vesper_AFK) 人操作のexplod側にだけあるtriggerall=PlayerIDExist(ID)をAI判定の方にも入れるとどうでしょ?
01:45 (Anoth-bl_) triggerall=PlayerIDExist(ID)
01:46 (Anoth-bl_) これってたしか、P消去かdestroyselfでもしない限り満たされないはずがないと思うんですが・・・
01:46 (vesper_AFK) 現状も「はずがない」状態なので、とりあえず形を一緒にしてみようという考え(
01:48 (Anoth-bl_) 了解です。でももしこれで発動したとなればMUGEN界の常識が根底から覆りかねない(
01:48 (Anoth-bl_) うん、やっぱり暴発しますね
01:48 (Anoth-bl_) 逆に安心(
01:48 (vesper_AFK) 良かった(
01:50 (vesper_AFK) 自分もイントロ飛ばしでそうなる現象おきてたけど、今は起きなくなってたはず。。。
01:51 (vesper_AFK) 十徳ナイフ使ってます?
01:51 (Anoth-bl_) 使ってないですね
01:51 (Anoth-bl_) なんならキャラごと送りましょうか?
01:51 (vesper_AFK) あ、じゃあお願いします
01:53 (Anoth-bl_) しかし何だろうなぁ・・・trigger12の例がある以上、イントロ飛ばしによってコマンドそのものに悪影響が及んでると考えるのが一番自然ですが・・・
01:57 (Anoth-bl_) 2時半まで粘って無理だったら、ヘルパー式とコマンド式のデュアルAIで妥協します(
01:57 (Anoth-bl_) イントロを飛ばされたらヘルパーを召喚しないという開き直り(
01:58 (vesper_AFK) イントロ飛ばしって、ヘルパーを出しておいて、RoundState=2開始時に消えていたら感知ってことでいいのかなぁ
01:59 (Anoth-bl_) 逆に言えば、このヘルパーをroundstate=1のときにだけ召喚するって方針でいいかと
01:59 (vesper_AFK) ああ、確かに
02:00 (Anoth-bl_) で、無かったら無かったで元から本体に入ってるコマンド式でなんとかする、って形で。。。
02:02 (vesper_AFK) やった暴発確認できた(
02:02 (Anoth-bl_) でしょー(
02:03 (Anoth-bl_) そして環境依存で発生する類のものではないことを確認できて一安心(
02:03 (vesper_AFK) ですねw
02:04 (Anoth-bl_) こうも長くMUGEN神環境やってると異常動作の原因に考えられるものが多すぎるんですよね(
02:05 (Anoth-bl_) まあ迷宮入りするよりは圧倒的にマシなんですけど(
02:08 (Anoth-bl_) あ゛
02:08 (Anoth-bl_) 待ってこれなんかいやな予感する(
02:10 (Anoth-bl_) ・・・いやそんなはずないか、私とてその程度のことは当然踏まえてるよな(

02:51 (vesper_AFK) [state ]
02:51 (vesper_AFK) type = null
02:51 (vesper_AFK) triggerall=!var(58)
02:51 (vesper_AFK) trigger1 = command="a"&&command="a"
02:51 (vesper_AFK) trigger1 = var(58) := 1
02:51 (vesper_AFK) trigger2 = command!="a"&&command="a-X"
02:51 (vesper_AFK) trigger2 = var(58) := 2
02:52 (vesper_AFK) こんなのをヘルパーに読み込ませると、イントロ飛ばしせずにAを押すと1、イントロ飛ばしをすると2になる
02:52 (vesper_AFK) ちなみに本体なら1。
02:53 (vesper_AFK) イントロ飛ばしをすると、最初の入力に限って人操作でも内部入力と同じ動作になってるなぁ。

03:21 (vesper_AFK) うん、確実に1F起動が遅くなるけど、1F目はAI起動フラグのフラグを立てて、2F目にフラグのフラグが立っていればAIフラグを立てるようにすれば暴発もしないし、ちゃんと起動もする
03:22 (vesper_AFK) 一応イントロ飛ばしを完治した時だけ、この1F目はフラグをたてるだけにするようにすれば、遅れを最小限にできるはず。
03:22 (vesper_AFK) ちょっと複雑になるけど。
03:22 (vesper_AFK) まぁそんなわけで勝手にヘルパーのvar(58)を使ってるけど、
03:22 (vesper_AFK) [State ];AIスイッチ
03:22 (vesper_AFK) type = parentvarset
03:22 (vesper_AFK) triggerall=PlayerIDExist(ID)
03:22 (vesper_AFK) triggerall=ishelper(8026)
03:22 (vesper_AFK) triggerall=playerIDexist(parent,ID)
03:22 (vesper_AFK) triggerall=(parent,ID)=(root,ID)
03:22 (vesper_AFK) triggerall=roundstate=2
03:22 (vesper_AFK) triggerall=root,sysvar(2)>=30
03:22 (vesper_AFK) triggerall=root,var(59)=96061096
03:22 (vesper_AFK) triggerall=numexplod(214849297)!
03:22 (vesper_AFK) triggerall=var(58)
03:22 (vesper_AFK) trigger1 =command="a-X"
03:22 (vesper_AFK) trigger1 =command!="a"
03:22 (vesper_AFK) trigger2 =command="b-X"
03:22 (vesper_AFK) trigger2 =command!="b"
03:22 (vesper_AFK) trigger3 =command="c-X"
03:22 (vesper_AFK) trigger3 =command!="c"
03:22 (vesper_AFK) trigger4 =command="x-X"
03:22 (vesper_AFK) trigger4 =command!="x"
03:22 (vesper_AFK) trigger5 =command="y-X"
03:22 (vesper_AFK) trigger5 =command!="y"
03:22 (vesper_AFK) trigger6 =command="z-X"
03:22 (vesper_AFK) trigger6 =command!="z"
03:22 (vesper_AFK) trigger7 =command="s-X"
03:22 (vesper_AFK) trigger7 =command!="s"
03:22 (vesper_AFK) trigger8 =command="U-X"
03:22 (vesper_AFK) trigger8 =command!="U"
03:22 (vesper_AFK) trigger9 =command="D-X"
03:22 (vesper_AFK) trigger9 =command!="D"
03:22 (vesper_AFK) trigger10=command="F-X"
03:22 (vesper_AFK) trigger10=command!="F"
03:22 (vesper_AFK) trigger11=command="B-X"
03:22 (vesper_AFK) trigger11=command!="B"
03:22 (vesper_AFK) v=59
03:22 (vesper_AFK) value = -(random+1)
03:22 (vesper_AFK) ignorehitpause=1
03:22 (vesper_AFK) [State ];AIスイッチ
03:22 (vesper_AFK) type = varset
03:22 (vesper_AFK) triggerall=PlayerIDExist(ID)
03:22 (vesper_AFK) triggerall=ishelper(8026)
03:22 (vesper_AFK) triggerall=playerIDexist(parent,ID)
03:22 (vesper_AFK) triggerall=(parent,ID)=(root,ID)
03:22 (vesper_AFK) triggerall=roundstate=2
03:22 (vesper_AFK) triggerall=root,sysvar(2)>=30
03:22 (vesper_AFK) triggerall=root,var(59)=96061096
03:22 (vesper_AFK) triggerall=numexplod(214849297)!
03:22 (vesper_AFK) trigger1 =command="a-X"
03:22 (vesper_AFK) trigger1 =command!="a"
03:22 (vesper_AFK) trigger2 =command="b-X"
03:22 (vesper_AFK) trigger2 =command!="b"
03:22 (vesper_AFK) trigger3 =command="c-X"
03:22 (vesper_AFK) trigger3 =command!="c"
03:22 (vesper_AFK) trigger4 =command="x-X"
03:22 (vesper_AFK) trigger4 =command!="x"
03:22 (vesper_AFK) trigger5 =command="y-X"
03:22 (vesper_AFK) trigger5 =command!="y"
03:22 (vesper_AFK) trigger6 =command="z-X"
03:22 (vesper_AFK) trigger6 =command!="z"
03:22 (vesper_AFK) trigger7 =command="s-X"
03:22 (vesper_AFK) trigger7 =command!="s"
03:22 (vesper_AFK) trigger8 =command="U-X"
03:22 (vesper_AFK) trigger8 =command!="U"
03:22 (vesper_AFK) trigger9 =command="D-X"
03:22 (vesper_AFK) trigger9 =command!="D"
03:22 (vesper_AFK) trigger10=command="F-X"
03:22 (vesper_AFK) trigger10=command!="F"
03:22 (vesper_AFK) trigger11=command="B-X"
03:22 (vesper_AFK) trigger11=command!="B"
03:22 (vesper_AFK) v=58
03:22 (vesper_AFK) value = 1
03:22 (vesper_AFK) ignorehitpause=1
03:23 (vesper_AFK) というようにAIフラグを立てるステートの下にフラグのフラグを置いてみた。
03:23 (vesper_AFK) 実験的に入れてみたから、かなり不格好ではあるけど、暴発はしなくなった。
07:07 (Anoth-bl_) ねおち(
08:46 (Anoth-bl_) ほんとだ、これだけで本当に暴発抑えられてる・・・
08:46 (Anoth-bl_) そして起動ゲロHAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!!!!!!!!
08:47 (Anoth-bl_) 革命的に早い(
08:50 (Anoth-bl_) ただ変数使うの癪なんで、explodスイッチに置き換えが可能か試してみます
08:54 (Anoth-bl_) でもこの2つって書いてること殆ど同じですよね?ほぼ同じ条件のものをもう一つ加えただけでなんで暴発が止まるんだろう・・・?
09:33 (Anoth-bl_) まぁあれか、さすがに人操作でキー入力したあとctrl+1でAI化しても言う事きくわけないか(
09:33 (Anoth-bl_) ヘルパーが召喚できなかった場合も考えて、念のためコマンドとヘルパーのデュアルシステムでいきますか
09:42 (Anoth-bl_) explodスイッチへの移行完了!あとはこれをデュアルシステムに変更して・・・
10:40 (Anoth-bl_) できましたー!理屈がよくわからないままですが本当ありがとうございます!
11:29 (Anoth-bl_) あ
11:29 (Anoth-bl_) ラウンドが始まってからボタン押しっぱなしにすると暴発する不具合を発見(
11:42 (Anoth-bl_) これはイントロを飛ばしたかどうかに関係ないみたいだなぁ。。。
11:43 (Anoth-bl_) ということはあれか、
11:43 (Anoth-bl_) ヘルパーがでるより前に押しっぱなしにしてても暴発しちゃうなぁ
11:44 (Anoth-bl_) 開幕から相手からの干渉を受けることはないとするならば、
11:44 (Anoth-bl_) 本体からも人操作判定エフェクトスイッチを導入した方がいいってことかしら
11:44 (Anoth-bl_) まぁいいや、ここらへんは保留にしていったん出かけてきますか
14:05 (Anoth-blue-eyes) いや・・やったる(
14:25 (Anoth-blue-eyes) できちゃああああああああああああああああああああああああああああああああああ
20:56 (vesper_AFK) キー入力のあった1F目はvar(58)だけが、オンになって、2F目以降にvar(59)がオンになるようにしてるだけだよ >青眼さん
20:56 (vesper_AFK) だから、上下関係をひっくり返すと暴発する(
20:57 (vesper_AFK) 1F目は無視して2F目でオンにする方法が特に思いつかなかったからあんなことにw
20:58 (vesper_AFK) あと押しっぱなしで暴発するというのは解決したみたいだけど、判定するのが30F目からだから、それより前に押し始めてると暴発するってことかな

参考:内部AIとAIフラグについて[MUGENの便覧]

NEW  |  HOME  |  OLD

Comment

コメントの投稿


管理者にだけ表示を許可する

Trackback

http://kyoakumugenirc.blog61.fc2.com/tb.php/2969-2e16353b

NEW  |  HOME  |  OLD

 検索フォーム


 全記事表示リンク

 全記事表示(500件ずつ)


 プロフィール

vesper

Author:vesper

IRCチャンネルの
#凶悪MUGEN
#凶悪MUGEN_雑談
のログからMUGENに関するものを編集・公開しています。
修正した方が良い箇所があった場合は知らせてもらえると助かります。
MUGEN界隈からはリンクフリーです。
その他からのリンクはご遠慮ください。
このブログをリンクに追加

IRCへの入り方などは
IRCに関する記事
をご覧ください。

簡易凶悪MUGEN IRC情報
・ホスト名
 [irc.friend-chat.jp]
・ポート番号
 [6664]
・チャンネル名
 [#凶悪MUGEN]
 [#凶悪MUGEN_雑談]
 (以下はお好みで)
 [#凶悪MUGEN_艦これ]
 [#凶悪MUGEN_スマブラ]
 [#凶悪MUGEN_麻雀]
 [#凶悪MUGEN_緋想天]
 [#凶悪MUGEN_アカツキ]
 [#凶悪MUGEN_小説]
 [#凶悪MUGEN_絵チャ]

・推奨IRCクライアント
 LimeChat2


 カテゴリ

記述の子カテゴリは目安程度に考えてください。

 最新コメント


 最新記事


 カウンター

累計の閲覧者数:

現在の閲覧者数:

 RSSリンクの表示


他ブログ更新情報(最新70件)

仕様上、下記のリンク一覧でサイトリンクにあるサイトはこの一覧に出ません。

Twitter


基礎リンク集


リンク

サイトに断り書きがない限りリンクさせてもらっています。
リンクしてほしくない場合はお気軽におっしゃってください。