このページはSmash Attacksについてのページです。
基本こちらは、管理人はほとんど手をつけません。
こちらの身勝手ですが追加編集お願いしますm(_ _)m

目次


Smash Attacksとは

コチラから手に入る、各キャラの技性能や運動性能を確認、編集できるアプリケーションです。
キャラの技性能や運動性能のファイルはこちら
編集して各キャラのフォルダにセットしFile Patch Codeを等で作動させると技の変更などができます。

※PSAv2.70で開けないpacファイルは、v2.35を使うことで開いて編集できます。
しかし、v2.35でも編集できないキャラはv2.35ではなく、PSAModを使うことになります。
PSAMod.exeをSmashAttacks.exe(v2.35)と同じフォルダ内に保存、配置してこちらを使用するようにして下さい。
ただし、保存時にpacファイルのサイズが数十KBほど増加するバグが確認されています。バックアップはこまめにとりましょう。

Smash Attacksで編集・変更したキャラでプレイするには

  • WindowsOS/.exeが実行できる環境であること
  • .NET Frame workをインストールしていること
  • FilePatchCodeを使用し、DLしたキャラでハックができる環境・技術であること

基本の流れ

1.Openで編集したいファイルを開く
2.EventModiferを開きイベントや引数を変える
3.Save/SaveAs...で保存する

操作方法

~ メニューバー ~
[File]
Open … ファイルを開く
Save … ファイルを保存する
SaveAs... … ファイル新しく保存する
Exit … PSAを閉じる

[Help]
About … PSAについて

~ イベントリスト ~
[マウス]
クリック … イベント1つだけを選択する
ドラッグ … 範囲を選択する
Ctrl+クリック … クリックしたイベントの選択を反転する
Shift+クリック … これまでの選択を解除し、クリックしたイベントから選択された一番遠いイベントまでを選択する
ダブルクリック … 選択されたイベントを編集する。

[ボタン-基本]
Add … NoEventを行に加える。
Modifer … 選択された一番上のイベントを編集する。
Remove … 選択された行を消す。複数行可。
■(左) … 選択された行を1行分上げる。複数行可。
■(右) … 選択された行を1行分下げる。複数行可。
Copy … 選択された行をPSAのクリップボードに記憶させる。複数行可。
Paste … PSAのクリップボードに記憶させた行を追加で張り付ける。

[ボタン-サブアクションタブ]
Animation Flags … アニメーション特殊設定を呼び出す。

[ボタン-サブルーチンタブ]
GO … 指定したアドレスに飛ぶ。間違ったオフセットを指定した場合エラーが出る。
Create … 新規にサブルーチンを作る。アドレス欄に作った場所が表示される。

~ Attribtesタブ ~
[表の右側]
クリック … 選択する。
ダブルクリック … 編集する。

~ その他 ~
枠で囲まれている文字はダブルクリックでコピー可能。
クリップボードはPSA固有のもので通常の物とは関係ない。期限はPSAを閉じるまで。もちろんパラメーターもコピーされる。
サブルーチンタブに切り替える際に入力されているアドレスに飛ぶ。


イベントの実行順序

イベントは上から実行されます。
また、タイマーというイベントを挟まずに並べられたイベントは同時(同f)に処理されます。
ほかに、ブロックを作成するイベント等もあります。
この場合、赤(0f)>緑(20f)>(25f)青の順にイベントが実行されていき、
さらに、地上に居る場合は8行目(Allow Specific Interrupt: 0-12/空中ジャンプ許可)が無視されます。
逆に、空中に居る場合は6行目(Allow Specific Interrupt: 0-7/地上ジャンプ許可)が無視されます。

勿論、このブロック(インデントされてる部分)内にある行を増やすこともできます。
そうした場合、条件を満たした/満たしてない場合に実行/無視されるイベントの数が増えます。

因みに、振り分ける「If」が緑の部分に配置されているので、地上に居るかどうか判別するのも20f目になります。

Set Loop等も基本的な原理は一緒です。
各イベントについては後述のイベント一覧にて詳しく紹介してあります。


詳細一覧

Action Events

Action

Fighter.pacに追加する形で書かれる、必殺技やドンキー移動投げなどのキャラ固有のアクション。
技の構成が書かれているため、技を大きく変えない場合は変更非推奨。
112 Neutral B 通常必殺技
113 Side B 横必殺技
114 Up B 上必殺技
115 Down B 下必殺技
116 Final Smash 最後のきりふだ
※117以降は各キャラによって異なる。
Brawlbox v0.68bでオフセットを確認すれば、アクションオーバーライドという物が弄れ、
こちらは既存のアクションを文字通り上書きして使うという物。

Sub Action

Fighter.pac/FitXX.pacで呼び出される、イベントやアニメーションをまとめたもの。アニメーション1つにつきに1つ以上サブアクションがある。
ほぼすべての記述があるため、技の構成以外はすべてここでいじくれるといっても過言ではない。(工夫を凝らせば構成も変えられる)


サブアクションには4つのカテゴリがあり、それぞれの時間軸は独立している。
また、Actionとは時間軸とさらにフレームスピードの関係もない。

Event List

Main ダメージやキャンセル指定など
GFX 画面効果・キャラ色変更・カメラワークなど
SFX 効果音、ボイス
Other そのほかの設定(画面・コントローラー振動、キャラモデルパターンの変更)

基本どこにどうかいても記述する。
ChangeSubActionを行った場合、飛んだ先でChangeSubActionを実行したカテゴリがうまく処理されない場合がある。

Animation

アニメーション欄には使うアニメーション名を書き込むことができる。
アニメーションフラグという物が用意されており、特殊効果を掛けることができる。
In Transition 前のアニメーションから滑らかにつなぐフレーム数。
No Out Transition 終了時、次のサブアクションにIn Transitionが適用されていても滑らかに繋がない。
Loop アニメーションをループさせる、イベントのループは不明。
Moves Character キャラクターをTransNに沿って動かす。
Transition out from Start 不明
左上4番目のUnknown アニメーションを相手から呼び出すための設定?主に投げられでON。
右上2番目のUnknown 同上。

Event

イベントとは、キャラの行動の最小単位の事。
例えば「Synchronous Timer: flames=1」なら前のイベントから1f待って次のイベントを実行するということになる。

Eventリスト
※トップに書いてあったイベントに関する情報はすべてこちらに移動させました。

メインウィンドウの行をダブルクリック(もしくは選択した状態でModifyボタンをクリック)
するとModify Eventが開いて引数が色々書いてあるので
変えたいものを選択して右の数値を書き換えてDoneを押せば変更できます。

また、イベントは引数という数字を入れるハコをいくつか持っているものが多数であり、さっきの例では1fの1がそれ。
引数にはデータタイプと呼ばれるフォーマット(値の保存方法)がいくつかある。
有名なイベントはデフォルトで正しいタイプがしていされているが、そうでない場合こちらで変更する必要がある。

Value 16進数。小数を使わなくて済む場合は積極的に使われる。
Scalar フレーム数、判定のサイズ・位置など小数があったほうがよいものによく使われる。小数と負の値が使える。
Boolean 2進数。TrueとFalse、0と1しか保存できない。中間の無いもの・対になるものに使われる。
Pointer アドレスを指定するもの。+8することで次イベントからの開始になる。
File 不明。Procedure Call?(1B020100)というイベントに使われているらしい。
Variable 変数。後述。
Requiament 条件。Notを付けると条件を満たしているときにFalseが返される。

変数

数値を保存しておく棚のようなもの。主に制御イベントで保存・操作し、値の代わりに使う。
使ってはいけないもの(システムの物や既に使われている物)を弄ると、使ったとき・キャラセレ戻り時にフリーズする。


こちらにもデータタイプとそれに似た仕様が存在し、メモリタイプと呼ばれる。

メモリタイプ

略称 正式名称 特徴
IC Internal Constant 直接操作する必要のない値(キャラ性能など)が代入されている。直接弄ろうとすると確実にフリーズするので、
読み取りに使うか他の変数に一時保存したものを弄ったり、キャラの状況を他イベントで変えるとよい。
LA Runtime Longterm 長い間値が代入され続けたままになる変数。キャラクターの特殊強化などでよく使われる。
RA Random Access PC用語でもあるRAM。期間が短いため、いつでも同じ情報を入れているわけではない。汎用。

データタイプ

Basic Valueと同様…なのだがシステム変数だと普通にScalarが代入されてたりする。
その例として、IC-Basic[2](自キャラ被ダメ)等が有名。こちらはフリーズする(既に使われている)ものが多い。
Float Scalarと同様。一時強化に種類があったり、位置・角度を滑らかに変える場合に使われたりしている。バーストで元に戻る。
Bit Booleanと同様。最大溜め温存システムや1発強化などでお世話になる。バーストしても消えない。

Attributes

Attributesは、キャラの固有性能(ジャンプ回数や走る速さや吹っ飛びにくさ等)を設定するところです。
編集方法はAttributesタブの表から変えたいものを選び、新しい値を入力してください。

飛び道具などの設定

  • イベントを変える
判定の強さや、エフェクト、Articleの構成などを書き換えられます。
OpenSA2をDL。
OpenSA2(OSA)でFitXX.pacを開き、ArticleのOffsetをコピー。SAのサブルーチンタブにオフセットを貼り付け、編集。
OSAでいじくっているファイルはSAで上書き保存できなくなるので注意。OSA用のコピーを作っておくと楽。

  • その他を変える
FPEをDL。
OpenPacでファイルを開き、キャラクターを開いたファイルの物に合わせる。
TableはFPEで変更できる技の表であり、技を選ぶと弾の重力やキャラの慣性など様々な数値を変更できます。
データタイプはキリの良さと勘で選んでください。基本的にSingleでいいと思います。

編集したファイルはリアルタイムでexeと同じ階層のEditedFilesフォルダの同名ファイルに反映されていきます。
そのためセーブコマンドはありません。


テキスト編集

Data内のテキストを変えることでリストなどの表示を変えることができます。
一定のパターンで構成されているので基本さえ守っていけば日本語化も可能です。

Attributes.txt … キャラ性能のオフセット一覧。主に名前と説明。
Events.txt … イベントIDとイベント名と引数のデータタイプの指定。
Parameters.txt … イベントIDに対して引数名と説明を与える。
Requirements.txt … Ifなどで使われる条件。

Attributes.txt

1行目 … オフセット、性能名。
2行目 … 性能の説明。
3行目 … 最初から付加されている値。変えなくて良し。
4行目 … セパレータ。

0x05C Meteor Cancel Flame
Meteor Cancel Flame.
0

05Cに名前と説明を付けたもの。

Events.txt

1行目 … イベントID。(引数の数は右から3~4けた目。)
2行目 … イベント名。
3行目 … イベントの説明。イベントを選択した時、メインウィンドウの下のスペースに表示される。
4行目 … 引数のデータタイプ。
5行目 … セパレータ。

04060100
Frame Appointer
Frame Appoint.
1

04060100(アニメーションのフレーム指定)に情報を与えたもの。

Parameters.txt

1行目 … イベントID。
2行目 … 引数名。
3行目 … 引数の説明。
4行目以降 … 引数の数だけ2~3行目を繰り返す。

061B0500
Collision ID
Collision ID
Bone
New Bone
OffsetZ
New Offset
OffsetY
New Offset
OffsetX
New Offset


04060100(Change Hitbox Position)に引数名・情報を与えたもの。

Requirements.txt

1行目 … 条件名。

Subaction Exists
2C。サブアクションの記述が終了したか~のIf。


バグ報告

2.70

リムーバブルディスクに直接保存しようとすると時間がかかる。待っていれば保存は成功する。

1.90/2.35

コピーペーストするとファイルが壊れる。(未検証)

Mod

保存時に偶にバグる。ルーチン関係に弱いそう。


ユーザー支援

SmashAttacks KAI-Version

KAI式のPSA。イベントがカテゴリごとに分かれていたり、パラメーターやデータタイプがある程度正しかったりします。
イベントもいくつか追加されています。イベント・引数説明が日本語。

FlagMaker

(Spesial)OffensiveCollisionのフラグ、スペシャルフラグを条件に従って自動生成します。
フラグの構造を考えなくていいので判定作りが少し楽になるかもしれません。


まとめ・記述例

土台となる構成

PSAを始めたばっかの人は、まずここが理解できれば後は自然に色々なものがいじくれるようになっていくでしょう。
(下に行くにつれて単位が小さくなってきます)
Action
「スマッシュスタートのサブアクションが終了して、Aボタンが押されていたら溜め、そうでなければ攻撃に移行」
のような技の構成が書かれている。スマッシュはキャラ固有の技ではないのでFigter.pacのものが使われる。

Sub Action
「スマッシュスタートのアニメーションを特殊設定無しで行わせる」
のようなモーションの設定などを行う。

GFX(その他イベントテーブル)
「xフレーム目に手をキラッと光らせる」
のようなイベントの並び。

Event
「グラフィックエフェクトを表示する」
のようなエフェクトを表示するという命令。

Parameter(引数)
「・Graphic(エフェクトの種類)-Value-00000010 ・Bone(出す部位)-Value-00000039 ・Size(大きさ)-Scalar-1.7」
のような数。命令を詳細にする情報の1つ1つ。

よく使われるアクションでの技構成

よく見るアレの解説です。
ChangeAction:0 Requiament=OnGround
AdditionalRequiament=AnimationEnd
ChangeAction:E Requiament=InAir
AdditionalRequiament=AnimationEnd
SetLoop:Infinite
 If:OnGround
  SetInAir/OnGround:6
  SetOnStage/InAerial:2
  If:Not BitIsSet:RA-Bit[16]
   ChangeSubAction:行う技の地上版Sub ActionID
  Else:
   ChangeSubAction:行う技の地上版Sub ActionID PassFlame=True
  EndIf:
 Else:
  SetInAir/OnGround:10
  SetOnStage/InAerial:5
  If:Not BitIsSet:RA-Bit[16]
   ChangeSubAction:行う技の空中版Sub ActionID
  Else:
   ChangeSubAction:行う技の空中版Sub ActionID PassFlame=True
  EndIf:
 EndIf:
 BitVariableSet:RA-Bit[16]=True
 LoopRest:
ExcuteLoop:
日本語に訳せば、
地上にいるときは待機に移行します。
さらに、アニメーションが終わっていることを条件に加えます。
空中にいるときは通常落下に移行します。
さらに、アニメーションが終わっていることを条件に加えます。
「ループ終点」までを無限ループさせます。
 今現在地上にいますか?>はい
  ステートを地上向けにします。
  今はじめてこのIfを実行しますか?はい
   地上技を最初から始めてください。
  今はじめてこのIfを実行しますか?いいえ
   さっきの途中から地上アニメーションを始めてください。
  If終了
 今現在地上にいますか?>いいえ
  ステートを地上向けにします。
  今はじめてこのIfを実行しますか?はい
   空中技を最初から始めてください。
  今はじめてこのIfを実行しますか?いいえ
   さっきの途中から空中アニメーションを始めてください。
  If終了
 If終了
 2回目以降の実行の前に目印を付けます。
 処理落ちフリーズを防ぎます。
ループ終点
もっと簡単にいえば、
「地上と空中が途中で入れ替わったら途中からステートとモーションを適用させ、アニメーションが終わったら適切な所へ飛ばす」
です。


乱数生成

たとえばアイクのカウンターのボイスに「させん!」「そこ!」を加えてランダムにする場合
IfValue 2B(Roll A Die): 2
Sound Effect: 95A
ElseIfValue: 2B(Roll A Die): 1
Sound Effect: 95B
Else:
Sound Effect: 95D
End If:

最初の2Bの後の数字はSEの数から1を引いた物、次の2Bの後の数字はその数から1を引いた物。
ちなみに 「If 2B: 0」は、最後のElseがその役割を果たしているので入れなくていい…?


メモ

ここに、書いてほしいもの・どこに書けばいいのかわからないもの・どう書いていいかわからないものを書いてくださいれば、
気づいたときに適切なページ・場所に編集・書き写しをしようと思います。

どうぞお気軽に。


コメント欄

Project SAに関することについて書いてください。

  • >KAI@Marthさん

    だから泳ぎ待機モーションは、
    LA-Basic[20]記述1つだけだと
    一度だけになってるから
    そのまま待機だと慌てるモーションに移行するんですね。
    -- (Lower) 2015-08-27 21:35:20
  • そういうことです。 -- (KAI@Marth) 2015-08-28 14:09:05
  • 別件なんですが、
    SubActionの番号にミスがあるのですが...
    Dark・Spycloakが【1CA】?になっています -- (Lower) 2015-09-15 22:51:58
  • どれだけ吹っ飛んでもバーストしないようにできますか? -- (U) 2016-01-06 14:07:27
  • LA-Bit[1] 0にするとバーストラインを越えられ、 1にすると通常通りになります。ご活用あれ。 -- (KAI@Marth) 2016-01-12 07:57:52
  • マルスの変数la_floatでどの番地にセットしてもフリーズしてしまいます
    これはマルスの仕様なのか、或いはセットできる番地が限られているのでしょうか
    floatの値を代入しているだけでもフリーズします。 -- (sunao) 2016-02-17 01:17:30
  • 使える番地はキャラによってまちまちです。使える物を探すしかないですね。 -- (KAI@Marth) 2016-02-27 15:44:10
  • ガノンが下アピールした後、剣を持ちっぱなしにするにはどうすればいいですか?
    マスターガノンや、ソードガノンとかのPSAの記述を試しに移してみたりしたものの、
    何故だかフリーズしてしまいます。 -- (OSs) 2016-03-02 04:58:16
  • やはり使える番地を探すしかないようですね、、、ありがとうございました!

    -- (sunao) 2016-03-04 05:24:04
  • ありがとうございます!! -- (U) 2016-03-09 15:40:35
  • 連投申し訳ないです。
    アピール中にLA-Bit[1]を0にしても、ふつうにバーストしてしまいます・・・
    なにがダメなんでしょうか・・・ -- (U) 2016-03-09 16:07:22
  • LA-Bit[0]も似たよう感じなのが
    あるのですがどうでしょうか?
    -- (Lower) 2016-03-25 04:05:22
  • >Lowerさん
    コメントありがとうございます。
    残念ながらできませんでした・・・ -- (U) 2016-04-07 14:44:22
  • Offensive Collisionで攻撃判定をボーンに付与したのですが、なぜかダメージ判定が行われないようで、ただ敵を押しのけるだけの様な動作になってしまいます。
    原因として何が考えられるでしょうか -- (phys) 2016-04-11 02:51:42
  • あるキャラの上必殺のジャンプ数を2にしたいんですが、どうすればいいですか? -- (名無しさん) 2016-04-15 23:54:39
  • >physさん
    きちんとダメージ設定をしている場合はフラグ等を見直してください。

    >名無しさん
    上必殺技を1度使用してもしりもち落下にならず、2回目で初めてしりもち落下になる様にする、という事でしょうか。
    これには割と多くの作業が必要となってくるので少し面倒なのですが、
    1.上必殺(またはその終了)アクションにあるChangeActionの記述を以下の様にする。
    -ChangeAction:19 , OnGround
    -ChangeActionRequirement:AnimEnd
    -ChangeAction:E , InAir
    -ChangeActionRequirement:AnimEnd
    -ChangeActionRequirement:Not BitIsSet , 適当なBit変数
    -ChangeAction:10 , InAir
    -ChangeActionRequirement:AnimEnd
    -ChangeActionRequirement:BitIsSet , 適当なBit変数

    2.その下に変数をTrueにする記述をする。
    3.ジャンプサブアクション等地上で呼び出される様々な箇所に変数をFalseにする記述をする。

    大体の流れはこれで大丈夫です。後は技や記述によって色々調整して下さい。
    因みにスネークやソニックは上B可不可をアクションオーバーライドという技術を使って、もっとスマートに処理しています。
    もし空いたオーバーライドの枠があるのであれば使えます。 -- (KAI@Marth) 2016-05-05 15:59:44
  • 上記の記述は作業が多く、また欠陥ができやすい為こういうものも勧めておきます。

    上B(しりもちからの上Bでない場合に変数OFF)↓
    しりもち(変数がOFFの時のみ上Bキャン可)↓
    上B(しりもちからの上Bなので変数ON)↓
    しりもち(変数がONの場合キャン不可にしつつ変数OFF)

    今思い付いた物なのでどこか穴があるかもしれませんが先程の物に比べスマートな物だと思います。
    この記述では上B後どちらにせよしりもち落下に移るのがミソとなります。

    ・上B記述
    ChangeAction:19 , OnGround
    AddReq:AnimEnd
    ChangeAction:10 , InAir
    AddReq:AnimEnd
    If:IC-Basic[20003] = 16.0
    SetBitVar:適当な変数
    Else
    ClearBitVar:適当な変数
    EndIf
    以下略

    ・しりもちサブアクション記述
    If:BitSet , 適当な変数
    ClearBitVar:適当な変数
    Else
    ChangeAction:114 , IC-Basic[3186] <= IC-Basic[1018]
    AddReq:ButtonPress , 1
    EndIf

    実現するかは分かりませんが参考までにどうぞ。 -- (KAI@Marth) 2016-05-05 16:41:46
  • マルスの上必殺などは、技終了後の空中の横移動速度が遅くなりますが遅くならないようにすることはできますか? -- (U) 2016-08-04 22:18:20
  • アクションオーバーライドの使い方がよくわかりません -- (project GOD) 2021-03-29 23:28:04
  • AllFlagMakerが上手く表示されない(中央の罫線以外ページが真っ白)?
    おま環かも知れないけど一応報告
    -- (名無しさん) 2023-10-28 23:32:31
名前:
コメント:

すべてのコメントを見る


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2017年01月21日 00:16