第7回MUGEN凶悪技術講座
最近念願のレンの姿(プロフのやつ)になれた私です。(二次元の世界は無限大だ、いいね。
超久しぶりの講座です。(本当に久しぶりです。長らく放置しすぎちゃった
ってことで「混線の原理と作り方」です。
では、続きからどうぞ。
まずは原理からです。
混線はProj型とHelper型の二つがありますがProj型はもう石化状態です。
この講座ではHelperによる混線を教えていきます。
まず混線というものは相手のヘルパーを奪う技術です。
ヘルパーに被弾判定が無く、一切攻撃をしない(もしくは当身で抜ける)ヘルパーを奪うことが出来ます。
混線を行うことで本来は干渉できないヘルパーに干渉することができます。
それでは混線の作り方を教えます。
(※この講座では親変更を前提にはしていません。普通の混線を展開していきます。)
まず用意するものは「ヘルパー2つ」のみです。
次に以下のアニメをAirに登録してください。
;混線生成
[Begin Action aaaa]
Clsn2: 1
Clsn2[0]=-15, -5, 15, 0
0, -1, 0, 0, -1
;混線
[Begin Action bbbb]
Clsn1: 1
Clsn1[0]=-15, -5, 15, 0
0, -1, 0, 0, -1
;多目的アニメ
[Begin Action cccc]
0, -1, 0, 0, -1
そして以下の記述を-2に書き込みます。
[State -2, 混線ヘルパー]
type = Helper
triggerall = !ishelper
trigger1 = !numHelper(xxxx)
helpertype = player
name = "Konsen1"
ID = xxxx
postype = p1
pos = 0, 0
supermovetime = 2147483647
pausemovetime = 2147483647
ignorehitpause = 1
[State -2, 混線生成ヘルパー]
type = Helper
triggerall = !ishelper
triggerall = numHelper(xxxx)
trigger1 = !Helper(xxxx),numtarget
trigger1 = !numHelper(yyyy)
helpertype = player
name = "Seisei1"
ID = yyyy
postype = p1
pos = 0, 0
supermovetime = 2147483647
pausemovetime = 2147483647
ignorehitpause = 1
[State -2, ヘルパー固定]
type = SelfState
trigger1 = ishelper(xxxx)
value = xxxx
ignorehitpause = 1
[State -2, ヘルパー固定]
type = SelfState
trigger1 = ishelper(yyyy)
value = yyyy
ignorehitpause = 1
さらに死亡ステ(5150)に以下の記述を追加&変更してください。
(※注意!準ステート固定を行うので永続ターゲット以外のステコンは全てtriggerall = !ishelperを追加してください。)
[Statedef 5150]
type = U
movetype = U
physics = N
[State , 永続ターゲット]
type = ReversalDef
triggerall = ishelper
trigger1 = numtarget
reversal.attr = SCA, AA, AT, AP
ignorehitpause = 1
[State , 行動状態変更]
type = StateTypeSet
trigger1 = !ishelper
statetype = L
movetype = H
physics = N
ignorehitpause = 1
では中身を見ていきましょう。まずは混線ヘルパーからです。
[Statedef xxxx]
type = U
movetype = U
physics = N
ctrl = 0
[State , 行動状態変更]
type = StateTypeSet
trigger1 = !numtarget
statetype = A
movetype = A
physics = N
ignorehitpause = 1
[State , 行動状態変更]
type = StateTypeSet
trigger1 = numtarget
statetype = A
movetype = I
physics = N
ignorehitpause = 1
[State , アニメ変更]
type = ChangeAnim
trigger1 = !numtarget
value = bbbb
ignorehitpause = 1
[State , アニメ変更]
type = ChangeAnim
trigger1 = numtarget
value = cccc
ignorehitpause = 1
[State , 位置固定]
type = PosAdd
trigger1 = 1
x = -Pos X+ifelse(TeamSide=1, -145, 105)
y = -ScreenPos Y+60
ignorehitpause = 1
[State , カメラが追わないように]
type = ScreenBound
trigger1 = ishelper
value = 0
movecamera = 0, 0
ignorehitpause = 1
[State , 押さないように]
type = PlayerPush
trigger1 = ishelper
value = 0
ignorehitpause = 1
[State , 永続ターゲット]
type = ReversalDef
trigger1 = numtarget
reversal.attr = SCA, AA, AT, AP
ignorehitpause = 1
[State , ターゲット取得]
type = HitDef
trigger1 = movetype = A
trigger1 = !numtarget
attr = ,SA
hitflag = MAFD
guardflag =
priority = 7, Hit
pausetime = 10, 0
numhits = 0
sparkno = -1
guard.sparkno = -1
hitsound = -1
guardsound = -1
affectteam = F
ignorehitpause = 1
[State ,準ステート固定]
type = SelfState
trigger1 = numtarget
value = 5150
persistent = 256
ignorehitpause = 1
そして混線生成ヘルパーです。
[Statedef yyyy]
type = U
movetype = U
physics = N
ctrl = 0
[State , 行動状態変更]
type = StateTypeSet
trigger1 = 1
statetype = A
movetype = I
physics = N
ignorehitpause = 1
[State , アニメ変更]
type = ChangeAnim
trigger1 = !numtarget
value = aaaa
ignorehitpause = 1
[State , 位置固定]
type = PosAdd
trigger1 = 1
x = -Pos X+ifelse(TeamSide=1, -145, 105)
y = -ScreenPos Y+60
ignorehitpause = 1
[State , カメラが追わないように]
type = ScreenBound
trigger1 = ishelper
value = 0
movecamera = 0, 0
ignorehitpause = 1
[State , 押さないように]
type = PlayerPush
trigger1 = ishelper
value = 0
ignorehitpause = 1
[State , 被弾]
type = HitBy
trigger1 = 1
value = A, SA
ignorehitpause = 1
[State , ヘルパー消去]
type = DestroySelf
triggeralll = ishelper(yyyy)
trigger1 = numhelper(xxxx)
trigger1 = helper(xxxx),numtarget
trigger1 = helper(xxxx),hitpausetime
ignorehitpause = 1
以上です。
まとめ的な何か
1.混線ヘルパーが混線生成ヘルパーを殴ってタゲを取得します。(ここで永続ターゲットバグを使用)
2.混線生成ヘルパーは混線ヘルパーがタゲを取得した瞬間消滅します。
3.すると混線ヘルパーはタゲを持っていますが、そのターゲットが存在していないのもかかわらずタゲを持ち続けます。(この状態を空のターゲットと言う)
どういうことかというとターゲットはヘルパーに対してではなく、「そのヘルパーがいた領域」に対してタゲを取得しているからです。
ですので、次にその領域に入ってくるヘルパーは望まず混線ヘルパーのターゲットになってしまうのです。
実際にこの記述を搭載したSSがこちらです。(左上に表示されてるTARGETが混線)

おかしいと思いませんか?
デバッグでのターゲット表示は「TARGET X Y」と表示されます。(第4回のSS参照)
しかし、このSSではXにあたる数字が表示されていません。
そう、これが混線なのです。このターゲットに指定してる領域にヘルパーが入るとXが表示されます。
この講座では一つしか展開していませんが増やせば「並列混線」ができます。
混線にはたくさん種類がありますが、それに関しては各自で調べてください。
増設をするなら-2の記述と両ヘルパーの中身の記述を量産するだけです。
ただしIDとPosAddは書き換えること。
PosAddに関してはy = -ScreenPos Y+60の60を10づつ増やすだけです。
増やすとこうなります。(このSSの混線は親変更前提での展開ですが見た目は同じ様になるなります)

すごいでしょ?殺傷力が違います。
以上で本講座は閉講となります。
次回やるなら「間者生成&みらくるさん式アニメ取得」をやろうかなと思います。
超久しぶりの講座です。(本当に久しぶりです。長らく放置しすぎちゃった
ってことで「混線の原理と作り方」です。
では、続きからどうぞ。
まずは原理からです。
混線はProj型とHelper型の二つがありますがProj型はもう石化状態です。
この講座ではHelperによる混線を教えていきます。
まず混線というものは相手のヘルパーを奪う技術です。
ヘルパーに被弾判定が無く、一切攻撃をしない(もしくは当身で抜ける)ヘルパーを奪うことが出来ます。
混線を行うことで本来は干渉できないヘルパーに干渉することができます。
それでは混線の作り方を教えます。
(※この講座では親変更を前提にはしていません。普通の混線を展開していきます。)
まず用意するものは「ヘルパー2つ」のみです。
次に以下のアニメをAirに登録してください。
;混線生成
[Begin Action aaaa]
Clsn2: 1
Clsn2[0]=-15, -5, 15, 0
0, -1, 0, 0, -1
;混線
[Begin Action bbbb]
Clsn1: 1
Clsn1[0]=-15, -5, 15, 0
0, -1, 0, 0, -1
;多目的アニメ
[Begin Action cccc]
0, -1, 0, 0, -1
そして以下の記述を-2に書き込みます。
[State -2, 混線ヘルパー]
type = Helper
triggerall = !ishelper
trigger1 = !numHelper(xxxx)
helpertype = player
name = "Konsen1"
ID = xxxx
postype = p1
pos = 0, 0
supermovetime = 2147483647
pausemovetime = 2147483647
ignorehitpause = 1
[State -2, 混線生成ヘルパー]
type = Helper
triggerall = !ishelper
triggerall = numHelper(xxxx)
trigger1 = !Helper(xxxx),numtarget
trigger1 = !numHelper(yyyy)
helpertype = player
name = "Seisei1"
ID = yyyy
postype = p1
pos = 0, 0
supermovetime = 2147483647
pausemovetime = 2147483647
ignorehitpause = 1
[State -2, ヘルパー固定]
type = SelfState
trigger1 = ishelper(xxxx)
value = xxxx
ignorehitpause = 1
[State -2, ヘルパー固定]
type = SelfState
trigger1 = ishelper(yyyy)
value = yyyy
ignorehitpause = 1
さらに死亡ステ(5150)に以下の記述を追加&変更してください。
(※注意!準ステート固定を行うので永続ターゲット以外のステコンは全てtriggerall = !ishelperを追加してください。)
[Statedef 5150]
type = U
movetype = U
physics = N
[State , 永続ターゲット]
type = ReversalDef
triggerall = ishelper
trigger1 = numtarget
reversal.attr = SCA, AA, AT, AP
ignorehitpause = 1
[State , 行動状態変更]
type = StateTypeSet
trigger1 = !ishelper
statetype = L
movetype = H
physics = N
ignorehitpause = 1
では中身を見ていきましょう。まずは混線ヘルパーからです。
[Statedef xxxx]
type = U
movetype = U
physics = N
ctrl = 0
[State , 行動状態変更]
type = StateTypeSet
trigger1 = !numtarget
statetype = A
movetype = A
physics = N
ignorehitpause = 1
[State , 行動状態変更]
type = StateTypeSet
trigger1 = numtarget
statetype = A
movetype = I
physics = N
ignorehitpause = 1
[State , アニメ変更]
type = ChangeAnim
trigger1 = !numtarget
value = bbbb
ignorehitpause = 1
[State , アニメ変更]
type = ChangeAnim
trigger1 = numtarget
value = cccc
ignorehitpause = 1
[State , 位置固定]
type = PosAdd
trigger1 = 1
x = -Pos X+ifelse(TeamSide=1, -145, 105)
y = -ScreenPos Y+60
ignorehitpause = 1
[State , カメラが追わないように]
type = ScreenBound
trigger1 = ishelper
value = 0
movecamera = 0, 0
ignorehitpause = 1
[State , 押さないように]
type = PlayerPush
trigger1 = ishelper
value = 0
ignorehitpause = 1
[State , 永続ターゲット]
type = ReversalDef
trigger1 = numtarget
reversal.attr = SCA, AA, AT, AP
ignorehitpause = 1
[State , ターゲット取得]
type = HitDef
trigger1 = movetype = A
trigger1 = !numtarget
attr = ,SA
hitflag = MAFD
guardflag =
priority = 7, Hit
pausetime = 10, 0
numhits = 0
sparkno = -1
guard.sparkno = -1
hitsound = -1
guardsound = -1
affectteam = F
ignorehitpause = 1
[State ,準ステート固定]
type = SelfState
trigger1 = numtarget
value = 5150
persistent = 256
ignorehitpause = 1
そして混線生成ヘルパーです。
[Statedef yyyy]
type = U
movetype = U
physics = N
ctrl = 0
[State , 行動状態変更]
type = StateTypeSet
trigger1 = 1
statetype = A
movetype = I
physics = N
ignorehitpause = 1
[State , アニメ変更]
type = ChangeAnim
trigger1 = !numtarget
value = aaaa
ignorehitpause = 1
[State , 位置固定]
type = PosAdd
trigger1 = 1
x = -Pos X+ifelse(TeamSide=1, -145, 105)
y = -ScreenPos Y+60
ignorehitpause = 1
[State , カメラが追わないように]
type = ScreenBound
trigger1 = ishelper
value = 0
movecamera = 0, 0
ignorehitpause = 1
[State , 押さないように]
type = PlayerPush
trigger1 = ishelper
value = 0
ignorehitpause = 1
[State , 被弾]
type = HitBy
trigger1 = 1
value = A, SA
ignorehitpause = 1
[State , ヘルパー消去]
type = DestroySelf
triggeralll = ishelper(yyyy)
trigger1 = numhelper(xxxx)
trigger1 = helper(xxxx),numtarget
trigger1 = helper(xxxx),hitpausetime
ignorehitpause = 1
以上です。
まとめ的な何か
1.混線ヘルパーが混線生成ヘルパーを殴ってタゲを取得します。(ここで永続ターゲットバグを使用)
2.混線生成ヘルパーは混線ヘルパーがタゲを取得した瞬間消滅します。
3.すると混線ヘルパーはタゲを持っていますが、そのターゲットが存在していないのもかかわらずタゲを持ち続けます。(この状態を空のターゲットと言う)
どういうことかというとターゲットはヘルパーに対してではなく、「そのヘルパーがいた領域」に対してタゲを取得しているからです。
ですので、次にその領域に入ってくるヘルパーは望まず混線ヘルパーのターゲットになってしまうのです。
実際にこの記述を搭載したSSがこちらです。(左上に表示されてるTARGETが混線)

おかしいと思いませんか?
デバッグでのターゲット表示は「TARGET X Y」と表示されます。(第4回のSS参照)
しかし、このSSではXにあたる数字が表示されていません。
そう、これが混線なのです。このターゲットに指定してる領域にヘルパーが入るとXが表示されます。
この講座では一つしか展開していませんが増やせば「並列混線」ができます。
混線にはたくさん種類がありますが、それに関しては各自で調べてください。
増設をするなら-2の記述と両ヘルパーの中身の記述を量産するだけです。
ただしIDとPosAddは書き換えること。
PosAddに関してはy = -ScreenPos Y+60の60を10づつ増やすだけです。
増やすとこうなります。(このSSの混線は親変更前提での展開ですが見た目は同じ様になるなります)

すごいでしょ?殺傷力が違います。
以上で本講座は閉講となります。
次回やるなら「間者生成&みらくるさん式アニメ取得」をやろうかなと思います。
スポンサーサイト
コメント
No title
間者やアニメ取得はどういう原理で行われるのか気になっている内容なので次回が楽しみです。
質問です
質問なのですが、この混線を10個くらい作ったんですが、そのままでは効果を実感できないんですが、なぜでしょうか?
No title
先程の質問者です、それとなのですが都古の混線13個目のような配置にするにはx値をどうすればいいのでしょうか?
質問多すぎてすみません><
質問多すぎてすみません><
No title
> 上2つ
只単に混線を展開しただけでは意味がないです。
targetstateをつかって間者出したりアニメ取得したりp1statenoつきprojを吐きまくったりして相手をビッタンビッタンさせれば実感がわくと思います。
位置に関しては都古ちゃんの記述を見れば早いですけど載せときますね。
[State 3850030, 位置固定1]
type = PosAdd
trigger1 = ishelper(3850000) || ishelper(3850010) || ishelper(3850020)
trigger2 = ishelper(3850030) || ishelper(3850040) || ishelper(3850050)
x = -Pos X+ifelse(TeamSide=1, -145, 105)
y = -ScreenPos Y+60+(ishelper(3850010)*10)+(ishelper(3850020)*20)+(ishelper(3850030)*30)+(ishelper(3850040)*40)+(ishelper(3850050)*50)
ignorehitpause = 1
[State 3850030, 位置固定2]
type = PosAdd
trigger1 = ishelper(3850060) || ishelper(3850070) || ishelper(3850080)
trigger2 = ishelper(3850090) || ishelper(3850100) || ishelper(3850110)
x = -Pos X+ifelse(TeamSide=1, -145, 105)
y = -ScreenPos Y+120+(ishelper(3850070)*10)+(ishelper(3850080)*20)+(ishelper(3850090)*30)+(ishelper(3850100)*40)+(ishelper(3850110)*50)
ignorehitpause = 1
[State 3850030, 位置固定3]
type = PosAdd
trigger1 = ishelper(3850120) || ishelper(3850130) || ishelper(3850140)
trigger2 = ishelper(3850150) || ishelper(3850160) || ishelper(3850170)
x = -Pos X+ifelse(TeamSide=1, -105, 145)
y = -ScreenPos Y+60+(ishelper(3850130)*10)+(ishelper(3850140)*20)+(ishelper(3850150)*30)+(ishelper(3850160)*40)+(ishelper(3850170)*50)
ignorehitpause = 1
[State 3850030, 位置固定4]
type = PosAdd
trigger1 = ishelper(3850180) || ishelper(3850190) || ishelper(3850200)
trigger2 = ishelper(3850210) || ishelper(3850220) || ishelper(3850230)
x = -Pos X+ifelse(TeamSide=1, -105, 145)
y = -ScreenPos Y+120+(ishelper(3850190)*10)+(ishelper(3850200)*20)+(ishelper(3850210)*30)+(ishelper(3850220)*40)+(ishelper(3850230)*50)
ignorehitpause = 1
すごく見づらいけど。こんな感じです。何をしているかは自力で理解を。
只単に混線を展開しただけでは意味がないです。
targetstateをつかって間者出したりアニメ取得したりp1statenoつきprojを吐きまくったりして相手をビッタンビッタンさせれば実感がわくと思います。
位置に関しては都古ちゃんの記述を見れば早いですけど載せときますね。
[State 3850030, 位置固定1]
type = PosAdd
trigger1 = ishelper(3850000) || ishelper(3850010) || ishelper(3850020)
trigger2 = ishelper(3850030) || ishelper(3850040) || ishelper(3850050)
x = -Pos X+ifelse(TeamSide=1, -145, 105)
y = -ScreenPos Y+60+(ishelper(3850010)*10)+(ishelper(3850020)*20)+(ishelper(3850030)*30)+(ishelper(3850040)*40)+(ishelper(3850050)*50)
ignorehitpause = 1
[State 3850030, 位置固定2]
type = PosAdd
trigger1 = ishelper(3850060) || ishelper(3850070) || ishelper(3850080)
trigger2 = ishelper(3850090) || ishelper(3850100) || ishelper(3850110)
x = -Pos X+ifelse(TeamSide=1, -145, 105)
y = -ScreenPos Y+120+(ishelper(3850070)*10)+(ishelper(3850080)*20)+(ishelper(3850090)*30)+(ishelper(3850100)*40)+(ishelper(3850110)*50)
ignorehitpause = 1
[State 3850030, 位置固定3]
type = PosAdd
trigger1 = ishelper(3850120) || ishelper(3850130) || ishelper(3850140)
trigger2 = ishelper(3850150) || ishelper(3850160) || ishelper(3850170)
x = -Pos X+ifelse(TeamSide=1, -105, 145)
y = -ScreenPos Y+60+(ishelper(3850130)*10)+(ishelper(3850140)*20)+(ishelper(3850150)*30)+(ishelper(3850160)*40)+(ishelper(3850170)*50)
ignorehitpause = 1
[State 3850030, 位置固定4]
type = PosAdd
trigger1 = ishelper(3850180) || ishelper(3850190) || ishelper(3850200)
trigger2 = ishelper(3850210) || ishelper(3850220) || ishelper(3850230)
x = -Pos X+ifelse(TeamSide=1, -105, 145)
y = -ScreenPos Y+120+(ishelper(3850190)*10)+(ishelper(3850200)*20)+(ishelper(3850210)*30)+(ishelper(3850220)*40)+(ishelper(3850230)*50)
ignorehitpause = 1
すごく見づらいけど。こんな感じです。何をしているかは自力で理解を。
No title
混線の位置については解決しました!
ありがとうございます。
それと混線の使い方なのですが、混線ヘルパーか、混線生成ヘルパーのstate(xxxxやyyyy)どちらにtargetstateを入れればいいのでしょうか?(もしかしたらほぼ全部間違っているかもしれませんが、そのときはすみません><
ありがとうございます。
それと混線の使い方なのですが、混線ヘルパーか、混線生成ヘルパーのstate(xxxxやyyyy)どちらにtargetstateを入れればいいのでしょうか?(もしかしたらほぼ全部間違っているかもしれませんが、そのときはすみません><
No title
> 上コメ
混線ヘルパー(ReversalDefを実行しているヘルパー)のほうに入れてください。
ex)
[State ,]
type = TargetState
triggerall = ishelper
triggerall = numtarget
triggerall = target,ishelper(zzzzz);間者ヘルパー
trigger1 = 1
value = aaaaa;パンドラやアマ貫など
ignorehitpause = 1
混線ヘルパー(ReversalDefを実行しているヘルパー)のほうに入れてください。
ex)
[State ,]
type = TargetState
triggerall = ishelper
triggerall = numtarget
triggerall = target,ishelper(zzzzz);間者ヘルパー
trigger1 = 1
value = aaaaa;パンドラやアマ貫など
ignorehitpause = 1
No title
ありがとうございます!
次回も楽しみしております。
私的には間者と特定の条件下でのみLifeを減らす方法などが知りたいです!!
私的には間者と特定の条件下でのみLifeを減らす方法などが知りたいです!!
No title
> 上コメ
次回は少しお待ちください。特定の条件下でのみ相手のLifeを減らす方法は第4回の永続ターゲットバグでの毒の部分を参照ください。
次回は少しお待ちください。特定の条件下でのみ相手のLifeを減らす方法は第4回の永続ターゲットバグでの毒の部分を参照ください。
>609zさん
特定の条件下でのみ、自分のライフを減らして(撃破条件みたいなやつです)、それ以外の干渉(相手の永タゲ等)を可能な限り効かないようにする方法です。(多分Life管理だと思います
特定の条件下でのみ、自分のライフを減らして(撃破条件みたいなやつです)、それ以外の干渉(相手の永タゲ等)を可能な限り効かないようにする方法です。(多分Life管理だと思います
No title
> 上コメ
ライフ管理か。そうだな、番外編としてやってみようかな。
ライフ管理か。そうだな、番外編としてやってみようかな。
No title
あれ?何か色々説明が詳細になった気がする
No title
> 上コメ
変わって無いはずです。(私の記憶が無いだけかもしれませんがw
変わって無いはずです。(私の記憶が無いだけかもしれませんがw
ちょっと聞きたいことが・・・
すみません、改変キャラを並列混線にしようとしている初心者ですが、
どうしても混線1と混線2が重なってしまうのですが、
どうすればいいですか?;-;
どうしても混線1と混線2が重なってしまうのですが、
どうすればいいですか?;-;
No title
>> (´・ω・`)さん
重なるということはPosがおなじなのでPosSetなどを使い位置をずらしてあげましょう。
重なるということはPosがおなじなのでPosSetなどを使い位置をずらしてあげましょう。
承認待ちコメント
このコメントは管理者の承認待ちです
承認待ちコメント
このコメントは管理者の承認待ちです