技術情報:CCTのアンプロテクト

技術情報:改変キャストのオーバーロードにて若干触れたCCTファイルのアンプロテクトについてです。

そもそもCCTファイルというのは、Habboのクライアントだと家具やシステムの実装クラスなんかのキャストを格納したファイルになります。
これを改変することによってUIを変更したり、追加することによって新しいデザインの家具を導入したりできるわけです。

公式の正規のCCTファイルには通常プロテクトがかかっており、そのままでは編集ができません。
家具のCCTを作る場合には家具のイメージキャストを格納したCCTファイルを新規に用意するだけなので特に必要なかったりもしますが、今回は家具のCCTを作るサンプルとして正規のCCTファイルのアンプロテクトからプロテクト済みCCTの生成までの手順をご紹介します。 事前に必要なものは以下の通りです。検索するなりして自力で入手してください。

  • ベースとする正規のCCTファイル
    (ここではサンプルとしてhh_furni_xx_bunny.cctを利用します)
  • recover-cct
  • Macromedia Director 7~8、もしくはMX

家具の画像が格納されているCCTファイルにはクラスの記述されたスクリプトキャストは基本的に存在しません。
扉の開閉やアニメーション等の細かい動作を実装しているクラスは別のCCTファイルになるので、ここでは端折ります。(というか改変できません)

1.CCTのアンプロテクト

まずrecover-cct.exeを起動します。
起動すると「Where is “~\unprotected_cct to unprotect.cst”?」というファイル選択のダイアログが表示されるので、用意していた「hh_furni_xx_bunny.cct」を開きます。
するともう一度、今度は「Where is “~\cct to unprotect.cst?”」と聞かれて同じダイアログが出るので、また同じように「hh_furni_xx_bunny.cct」を開きます。

これでアンプロテクトされた「unprotected_hh_furni_xx_bunny.cst」が生成されます。
ただ、完了時に「http://www.recover-dir.com/index.php?itemid=20(※閉鎖済)」が毎回開かれて結構うっとうしいです・・・。

この時点で開かれているrecover-cct.exeのウィンドウは閉じてしまって大丈夫です。
これでアンプロテクトは完了です。割と簡単なものです。

2.CSTの編集

生成されたアンプロテクト済みの「unprotected_hh_furni_xx_bunny.cst」をDirectorで開きます。
こんなウィンドウが出るかと思います。(画面はDirectorMX)

habox_dev_ss_004

これは格納されているキャストの一覧で、上から5つは画像のキャスト、その下の2つは画像のキャスト用のカラーパレット、最後がエイリアス設定用のテキストのキャストです。

クライアントの仕様上、キャストにも命名規則があるので順に説明していきます。

まず「bunny_a_0_1_1_4_0」の「bunny」はサーバーと家具の情報をやり取りする際、またexternal_textから言語別の家具の名称や説明文を呼び出す際に利用する固有のIDです。
基本的にはCCTのファイル名上の「hh_furni_xx_bunny.cct」と一致させます。

例えば、新たに作る家具のIDを「slot」とする場合、ファイル名は「hh_furni_xx_slot.cct」として保存し、イメージキャストの名前のID部分も全て一致させます。

次に、「_a」の部分ですが、これはたしか家具のステータスコードになります。(うろ覚え)
アニメーション効果やドア開閉等のアクションの無い家具であれば「a」パターンしか格納されていません。(たしか)

その次の「0_1_1_4_0」ですが、これもうろ覚えで申し訳ないのですが2番目が家具そのものの幅(1)、3番目が高さ(1)、4番目は向きです。あとは覚えてません。思い出したら追記しておきます・・・。
(もしかしたらこっちがステータスコードだったかも・・・?)

アクションの無い家具に関しては特別気にする必要はありませんので、必要であればアニメーション効果等の実装されている他のCCTファイルをアンプロテクトして比較してみると分かると思います。

「bunny_sd_*」はシャドウイメージのキャストになります。
開くと分かりますが、家具の形に沿って真っ黒なイメージになっており、これは透過されて床に投影されるためのイメージになります。
※外人のCCT作者達は割とこのイメージ自体省いています。無くても影が付かないだけで家具としては表示されるからね。

「bunny_small」は手の上やカタログ上に表示するためのアイコン画像になります。カタログのアイコン表示範囲に収まる程度に作ってあるため、公共サイズ用のイメージキャストより一回り小さい感じです。

あとは2種類のパレットキャストがありますが、これは削除しても平気だったりします。
というのも、新たに格納するイメージキャストにこのパレットを割り当ててしまうと、そのパレット上の色(だいたいは元のイメージキャストで利用されていた色のみ)しか割り当てられないからです。

自分もCCT作り始めたころはよくこの問題に悩まされました・・・。
自作した画像で利用している色と似たような色を使っている家具のCCTを利用してパレット流用してたりしました。
カラーが制限されるとこんな事になったりします。

habox_dev_ss_005

ちょっと乱暴かもしれない自分で見出した解決策ですが、一旦パレットを削除してしまってからペイント等のレタッチソフト上でイメージをコピーして、Directorのキャスト一覧のウィンドウ上でペースト(Ctrl+P)するとカラーパレットが失われる事なくキャストとして格納することができます。

habox_dev_ss_006

あとはキャスト名が「2」となっているのを「slot_a_0_1_1_4」と変えて、既存のイメージキャスト(bunny_a_0_1_1_4)を削除してやるだけです。

ここで疑問があります。

「bunny」ことバニーぬいぐるみはHabbo上で4方向に回転できましたが、格納されているのは2方向(4,6)の本体と影のイメージキャストだけです。
この残りの2方向を補うためにあるのが、「memberalias.index」になります。

開いてみると以下のような記述がされています。

bunny_a_0_1_1_0_0=bunny_a_0_1_1_6_0*
bunny_a_0_1_1_2_0=bunny_a_0_1_1_4_0*

これはエイリアスと言って、「bunny_a_0_1_1_0_0」のイメージキャストは「bunny_a_0_1_1_6_0」を反転させたものと同等、「bunny_a_0_1_1_2_0」は「bunny_a_0_1_1_4_0」の反転と同等、という事を示しています。
「bunny_a_0_1_1_6_0」と「bunny_a_0_1_1_4_0」にはそれぞれ終端に「*」が付いていますが、これはイメージキャストの”反転”を示す記号になります。

画像上に文字が入っていたりする左右非対称な家具は反転させると当然読めないため、2方向、もしくは4方向すべての画像を用意しなければならなかったりするためエイリアス自体が存在せず、イメージキャストだけだったりしますが、通常はこのようなエイリアスを記述しておけば反対に回転させたときの状態のイメージは自動で補うことができます。

じゃあ、それらも存在しなくて「bunny_a_0_1_1_4_0」だけだったら?
これは単純に、”回転できない家具”として扱われます。
「bunny」は4方向に回転できますが、例えば後ろ向きの「bunny_a_0_1_1_6_0」とその反転に値するエイリアスを削除してやれば、前向きの2方向しか回転しなくなります。

作業中に不要となったキャストに関しては削除してしまっても基本的には問題ありません。

また、公共サイズ用のイメージキャストは別のファイル「hh_furni_xx_s_bunny.cct」に格納されており、「bunny_a_0_1_1_4_0」と同じ向き・状態にリンクするキャストの名前が「s_bunny_a_0_1_1_4_0」となっており、それぞれのキャスト名の先端に「s_」が付いています。
公共サイズ用のCCTを用意しないと、公共サイズの客室に設置した際に「PH」ボックスが表示されるか、もしくは置くこと自体できません。

CCTの中身とHabboの仕様については大体こんな感じです。

3.プロテクト済みCCTの生成

必要なキャストの格納がすべて終わったら、まずCSTを保存します。
メニューの「File(ファイル)」→「Save As(別名で保存)」から「hh_furni_xx_slot.cst」等の固有IDを付けたファイル名で保存してください。

保存できたら、メニューから「Xtras」→「Update Movies…」を選択し、「Action」を「Convert to Shockwave Movie(s)」に選択し、「Original Files」を「Back Up Into Folder」のまま「Browse…(参照)」ボタンをクリックします。
ここで先ほど保存したCSTファイルのバックアップフォルダを選択させられます。「backup」等の名前を付けたフォルダを作ってそこで「Select Folder」ボタンをクリックすれば大丈夫です。

これで出力設定が完了したので、「Update Movies Options」ダイアログの「OK」をクリックします。
CSTファイルの選択画面が出るので、先ほど保存したCSTファイルを選択し、「Proceed」をクリックします。
すでにCCTファイルが存在する場合には上書きの警告メッセージが表示されるので「OK」をクリックしてください。

警告メッセージが出たら「Continue」をクリックし、CSTファイルがCCTに変換されてプロテクトが施され、先ほど選択したバックアップフォルダに元のファイルのコピーが保存されます。

これでCCTファイルが完成です。
ご自分でサーバーを稼働させている方はクライアントに読み込ませてテストしてみて下さい。

4.最後に

なんでこんな(日本人に限っては)誰も知りたがらないような事を長ったらしくわざわざ書いたのかというと、そろそろこういった単調作業を一人で全部こなすのがしんどくなってきたので、一人でも多く開発に参加することが出来るような方が増えたらいいな、と思ったからです。
やってみるとさほど難しい作業でもないので、興味が湧いたらFlash版の家具のコンバートとか自作家具のCCT化とか挑戦してみてください。
そのうち自作家具試験用のサーバーでも立ち上げますから。

技術情報:CCTのアンプロテクト”への1件のレスポンス

  1. へび says:

    この手の事に関しては全く無知ではありますが
    どれだけの苦労をしているのか知る事が出来た気がします

    何かしら違う形で支援出来れば等とも思っていますが、今はただひたすら待つ事しかできなくて申し訳なさ半分ですが、頑張って下さい

Leave a Reply

Your email address will not be published.