「Smash Attacks まとめページ」の編集履歴(バックアップ)一覧に戻る
Smash Attacks まとめページ」を以下のとおり復元します。
このページはSmash Attacksについてのページです。
基本こちらは、管理人はほとんど手をつけません。
こちらの身勝手ですが追加編集お願いしますm(_ _)m

*目次
#contents_line(sep=/)

*Smash Attacksとは
[[コチラ>http://forums.kc-mm.com/Gallery/BrawlView.php?Number=17599]]から手に入る、各キャラの技性能や運動性能を確認、編集できるアプリケーションです。
キャラの技性能や運動性能のファイルは[[こちら>http://www.mediafire.com/file/ttdzjrlj1rz]]
編集して各キャラのフォルダにセットしFile Patch Codeを等で作動させると技の変更などができます。

※PSAv2.70で開けないpacファイルは、v2.35を使うことで開いて編集できます。
しかし、v2.35でも編集できないきゃらはv2.35ではなく、[[PSAMod>http://opensa.dantarion.com/psamod/PSAMod.exe]]を使うことになります。
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を閉じるまで。もちろんパラメーターもコピーされる。
サブルーチンタブに切り替える際に入力されているアドレスに飛ぶ。


*基本リスト一覧
***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つ以上サブアクションがある。
ほぼすべての記述があるため、技の構成以外はすべてここでいじくれるといっても過言ではない。(工夫を凝らせば構成も変えられる)

[[SubActionまとめ>http://www15.atwiki.jp/timesplus/pages/29.html]]

サブアクションには4つのカテゴリがあり、それぞれの時間軸は関わりが無い。また、Actionとは時間軸とさらにフレームスピードの関係もない。
***Event List
|Main|ダメージやキャンセル指定など|
|GFX|画面効果・キャラ色変更・カメラワークなど|
|SFX|効果音、ボイス|
|Other|そのほかの設定(画面・コントローラー振動、キャラモデルパターンの変更)|

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

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

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

[[Eventリスト>http://www15.atwiki.jp/timesplus/pages/31.html]]

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

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

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

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

[[変数まとめ>http://opensa.dantarion.com/wiki/Variables_(Brawl)]]

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

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

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

**飛び道具などの設定
-イベントを変える
判定の強さや、エフェクト、Articleの構成などを書き換えられます。
[[OpenSA2>http://opensa.dantarion.com/opensa2/gui/setup.exe]]をDL。
OpenSA2(OSA)でFitXX.pacを開き、ArticleのOffsetをコピー。SAのサブルーチンタブにオフセットを貼り付け、編集。
OSAでいじくっているファイルはSAで上書き保存できなくなるので注意。OSA用のコピーを作っておくと楽。

-その他を変える
[[FPE>http://www.mediafire.com/download/i2856b0wfvsl1t6/FPE2.zip]]をDL。
OpenPacでファイルを開き、キャラクターを開いたファイルの物に合わせる。
TableはFPEで変更できる技の表であり、技を選ぶと弾の重力やキャラの慣性など様々な数値を変更できます。
データタイプはキリの良さと勘で選んでください。

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


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

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

**Attribtes.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>https://www.dropbox.com/s/jj11fptxykrcve8/SmashAttacks%20KAI-Version.zip]]
KAI式のPSA。イベントがカテゴリごとに分かれていたり、パラメーターやデータタイプがある程度正しかったりします。
イベントもいくつか追加されています。
**[[FlagMaker>http://blog-imgs-61.fc2.com/b/r/a/brawlkai/AllFlagMakerV1.html]]
(Spesial)OffensiveCollisionのフラグ、スペシャルフラグを条件に従って自動生成します。
フラグの構造を考えなくていいので判定作りが少し楽になるかもしれません。


*まとめ・記述例
**土台となる構成
PSAを始めたばっかの人は、まずここが理解できれば後は自然に色々なものがいじくれるようになっていくでしょう。
(下に行くにつれて単位が小さくなってきます)
Action
 「スマッシュスタートのサブアクションが終了して、Aボタンが押されていたら溜め、そうでなければ攻撃に移行」
のような技の構成が書かれている。スマッシュはキャラ固有の技ではないのでFigter.pacのものが使われる。
↓
Sub Action
 「スマッシュスタートのアニメーションをマリオに行わせて、手にキラリと光を出し、声を出す」
のような性能と装飾を行う。
↓
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: 2 
Sound Effect: 95A 
ElseIfValue: 2B: 1 
Sound Effect: 95B 
Else: 
Sound Effect: 95D 
End If: 

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


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

どうぞお気軽に。


*コメント欄
Projrct SAに関することについて書いてください。

#comment_num2(vsize=5,size=50,nsize=50,num=20)

----

復元してよろしいですか?