スキン > 実践例

実践例


このページは書きかけです。(追記歓迎)
XMLの編集実践例をいくつか書いていきます。


機能追加


「仲間を外す」解散エリアに「宿帳」を追加する


 JUDGMENTでは「仲間を外す」(パーティ編成)の中にも「宿帳を開く」が追加されています。これによってキャラを外した空き空間にすぐに別キャラを加入させることができます。便利な機能なので、他のスキンでも使いたいところです。
 今回はClassicスキンに移植してみましょう。


1.JUDGMENTのResource\Xml\Yado「-3_PartyBreakup.xml」を開く

 これは、仲間を外す(解散)特殊エリアのデータが記録されたXMLです。
30行目あたりから以下の「宿帳を開く」カードの実体をコピーします。

    <MenuCard arg="PLAYERSELECT" command="ShowDialog">
     <Property>
       <Name>宿帳を開く</Name>
   <ImagePath>Resource/Image/Card/COMMAND2.bmp</ImagePath>
   <Description>宿の待機メンバーを表示。</Description>
   <Flag />
   <Location left="121" top="75" />
   <Size scale="100%" />
   </Property>
  <Events />
  </MenuCard>

 またはClassicスキンのYado1 or 2から持ってきても良いです。中身は同じなので。
 慣れないうちはとりあえず「<MenuCard>から</MenuCard>まで全部コピーする」と覚えておくのがいいでしょう。


2.ClassicスキンのResource\Xml\Yado「-3_PartyBreakup.xml」を開く

 コピーした上記テキストを貼り付けます。
どこに貼り付けるべきかというと
メニューカードの配置を決める<MenuCards>の後ならどこでもいいのですが、
変なところに貼り付けてしまうとスキンが開けなくなるので
ひとまずは安全のために「次の<MenuCard>の直前に置く」と覚えましょう。

15行目の <MenuCards spreadtype="Custom">の次、<LargeMenuCard command="DissolveParty">より前にに貼り付けて下さい。改行はあってもなくても関係ないです。読みやすい程度に入れましょう。




3.確認してみる

 それでは、実際にCWPyを起動して確認してみます。


見事追加することができました!
今回は運良く一発で成功できましたが、現実には変なところに文字を混入させてしまい、「起動しなくなった!なんで!?」ということは非常にありがちなので、いざという時のために編集前のものを丸ごとコピーして別の場所に退避しておくといいです。

解散メニューカードと同じ台紙にしたい時は、
<MenuCard arg="PLAYERSELECT" command="ShowDialog">
↓
<LargeMenuCard arg="PLAYERSELECT" command="ShowDialog">
とします。
要するにLargeをつけるとキャストカードと同じ大きさになります。



宿に「BGM変更」機能を追加する

 色んなスキンに追加されていて、今一番需要が多いと思われる機能です。
BloodWirthでは背景に組みこまれていて自然なUIになっていますが、
エフェクトブースターでの背景くりぬき、レイヤ、scenariostartエリアについても
覚えなくてはならないので、とりあえずJUDGMENT型でやってみましょう。


1.追加したいスキンのBGMフォルダに追加で再生する音楽ファイルを入れる
 まずは指定する音楽を入れなければなりません。
JUDGMENTからBGM1~4をコピーしてきます。

JUDGMENTではBGM2~3はmidiになっていますが、Pyは拡張子が違っていても再生できるので
これらを自前で用意したMP3などにすり替えても構いません。
PyはMIDI, WAV, MP3, OGGをサポートしています。


2.JUDGMENTのResource\Xml\Yado\「02_Yado2.xml」を開く

 これは、パーティを開いた状態の宿エリアのデータが記録されたXMLです。

前回習得した「メニューカードを移植する方法」が応用できます。
50行目あたりから150行目あたりまでの「レコード」をコピーしましょう。


3.追加したいスキンのResource\Xml\Yado\「02_Yado2.xml」を開き、ペースト

 21行目、<MenuCards spreadtype="Auto">の次以降に貼り付けます。
spreadtypeはカードの並びを自動で中央に並べるか、カスタムで自由に配置するかの設定です。
レイアウトにこだわりたければ"custom"に変えてみましょう。

再生を変更するメニューカードを作るだけならこれにて完了です。
が、これだと宿に入ったタイミングではDefinnのままです。
これを任意に変更できるようにするにはシナリオと同じように「到着イベント」を作る必要があります。


4.到着イベントを移植する

 再度JUDGMENTのYado2.xmlを開いて、到着イベントがどこで設定されているのか探してみます。
「到着」でテキスト検索してみると、273行目にあるのがわかります。
※これはエディタでのデフォルト名なのですべてのスキンでそうなっているとは限りません。

実際にはメニューカードを置き終わったことを示す</MenuCards>の
次の<Events>からが到着イベントとなります。

<Events>から</Events>までを全コピーして、自前のスキンの到着イベントに貼り付けましょう。


5.細かい修正

 機能的にはこれで完成ですが、このままだとゴシップ設定を共有している状態になります。
自前の設定を持ちたければ、
たとえば<Branch gossip="JUDGMENT/BGM0" type="Gossip">となっている部分の
"JUDGMENT/BGM0"部分を自分の管理したい文字列に置き換える必要があります。


独自イベントの実装

到着イベントやカードイベントの構造がわかってくれば、
CWXEditorのWSN形式で独自のイベントを作り、スキンに持ってくることも容易になります。
その際の注意点やテクニックなど。


PCに番号クーポンを配る


 CWでキャラクターを操作するには「選択メンバ」にすることが基本です。
シナリオ内で選択メンバを選ぶには_1~6までの番号クーポンを使う事が多いですが、シナリオ開始時に配布する物なので宿内では使用することが出来ません。
これでは不便だという場合は、以下のようにして疑似的に配布してしまいましょう。

CWXスクリプト(CWXEditorでそのまま貼り付け可能です)
start "手動番号クーポン配布"
getcoupon T, ":判定用", 0, false
brcoupon R, false, ":判定用", and, false
sif true
losecoupon M, ":判定用", false
getcoupon M, ":1", 0, false
brcoupon R, false, ":判定用", and, false
sif true
losecoupon M, ":判定用", false
getcoupon M, ":2", 0, false
brcoupon R, false, ":判定用", and, false
sif true
losecoupon M, ":判定用", false
getcoupon M, ":3", 0, false
brcoupon R, false, ":判定用", and, false
sif true
losecoupon M, ":判定用", false
getcoupon M, ":4", 0, false
brcoupon R, false, ":判定用", and, false
sif true
losecoupon M, ":判定用", false
getcoupon M, ":5", 0, false
brcoupon R, false, ":判定用", and, false
sif true
losecoupon M, ":判定用", false
getcoupon M, ":6", 0, false

※基本的にイベント終了前に剥奪するのが安全です。時限称号なのでシナリオから帰ってくれば消えますが、パーティ構成が変わる可能性のある宿帳や、解散エリアに行く前に剥奪しないと順番が狂う可能性が出てきます。念のためStartScenarioでも剥奪した方が良いでしょう。



スクリーンショットに表示されているリソースは、groupAskによって作成され、CardWirth愛護協会によって配布されている「CardWirth ver1.50 Fullpack」に入っているものです。ReadMe_1st_Full.txt内の「● 著作権/免責/転載に関して」節の内容に基づいてスクリーンショット内に使用しています。