サイトロゴ

フリーのRTSRPG「Millennium Legend」をメインとしたブログ、その他すぴブレの改造講座など。
 
この前、講座のネタが尽きたと言ったが・・あれはジョークだ。

すぴブレにて改造・製作を行っている方にとって、一度は作りたい!と思ったはずのシステム。
3paty_1.jpg

是非これの3パーティ以上の物を作りたい!と思った方は多いはず・・・私もその一人でした。
それで一度私のブログの方に問い合わせに来た方もいらっしゃいました・・

あの時の私はXSLT変換について詳しくなく?
その質問に答えになる回答が出来ませんでした。

私自身はどうにか3パーティ制を実装しようと試みましたが・・
余りにも非効率かつ再利用性のない物と化してしまいました・・

3paty_2.jpg

この結果を得るだけでXMLで150行ものイベントを書き連ねることになりました。
すぴブレの2パーティ選択では35行と・・何故一つ増やすために5倍も増えたのか・・

さて、ここからが本題の講座です。






2014/5/9 19:00
現在、この記事を書きつつスリムな3パーティ選択のシステムを作っていきます。
この時点では作ってすらいないので、作りつつやったことをここに書き残しておきます。

なお、このシステムを作る際の注意ですが、無改造のすぴブレを基盤として作っています。
下記のファイル等は全てすぴブレに入っている物です。

とりあえず・・Event/Commonの中のSelectPaty.xmlを見てみましょうか・・
(この時点で眩暈がしたのですが・・・)
LeaderNode.xml?ToCallTrans.xsl?LeaderName.xml?なんだこれ・・・
_temp_list/_temp_id/_temp_paty/_temp_paty1/_temp_paty2・・・
・・・パラメータ多すぎだろ!!   ・・・私もまだ解読していません・・今回は長くなるな・・

この先に色々と長ったらしい解説を書いていこうとは思ったのですが・・・
書いている途中でものすっごく簡単に実装できてしまったのです・・

とりあえず3パーティシステムの作り方を書いておきます。
詳しい処理の解説はややこしくなるので書いてません、悩まなくてもいいのです。

1、次のファイルをコピーします。
Event/Common/SelectPaty.xml
Event/Common/LeaderNode.xml
コピーして出た二つのファイルの名前に2を付け足します ex.SelectPaty2.xml

2、SelectPaty2.xmlを開き編集します
<Param name="_temp_paty1" val="-1"/>
<Param name="_temp_paty2" val="-1"/>
の下に
<Param name="_temp_paty3" val="-1"/>
を追加します。

SelectPaty2.xmlの中のすべての
<LoadEvent path="Event/Common/LeaderNode.xml"/>

<LoadEvent path="Event/Common/LeaderNode2.xml"/>
と変更します(現時点では2か所変える必要があります)

<Command com="param/leader/_temp_name/1">
<Param name="_temp_list" val=""/>
<Param name="_temp_id" val="0"/>
<LoadEvent path="Event/Common/LeaderNode2.xml"/>
<CallTrans params="_temp_list/_temp_path" path="Event/Common/ToCallTrans.xsl"/>
<Param name="_temp_paty2" val="=_temp_paty"/>
</List></Command>

という大きなひと塊があると思うので、上に書いてある大きなひと塊のすぐ下にコピーして一つ増やします。
以降、上の塊はもう触りません。

コピーした下の塊を編集します。
コピーしたての物を以下の赤字になっているように変えます。

<Command com="param/leader/_temp_name/2">
<Param name="_temp_list" val=""/>
<Param name="_temp_id" val="0"/>
<LoadEvent path="Event/Common/LeaderNode2.xml"/>
<CallTrans params="_temp_list/_temp_path" path="Event/Common/ToCallTrans.xsl"/>
<Param name="_temp_paty2" val="=_temp_paty"/>
</List></Command>


続いて下の方に
<Command com="param/leader/_temp_name/1">
<Param name="_temp_id" val="=_temp_paty2"/>
<LoadEvent path="Event/Common/LeaderName.xml"/>
<Param name="_temp_msg" com="+" val="=_temp_name"/>
<Param name="_temp_msg" com="+" val="部隊"/>
</Command>
があるはずので、下の様に追加します(赤字の部分が変化したところです)
<Command com="param/leader/_temp_name/1">
<Param name="_temp_id" val="=_temp_paty2"/>
<LoadEvent path="Event/Common/LeaderName.xml"/>
<Param name="_temp_msg" com="+" val="=_temp_name"/>
<Param name="_temp_msg" com="+" val="部隊& #xa;"/>
</Command>

<Command com="param/leader/_temp_name/2">
<Param name="_temp_id" val="=_temp_paty3"/>
<LoadEvent path="Event/Common/LeaderName.xml"/>
<Param name="_temp_msg" com="+" val="=_temp_name"/>
<Param name="_temp_msg" com="+" val="部隊"/>
</Command>


& #xa;はブログでそのまま書くと見えなくなるので& #を&#としてください。

これにてSelectPaty2.xmlの編集を終わります、まだ完成ではありません。

ここで気づいたのですが・・ものすっごく簡単に実装できますね・・これ・・
コメントの方で実装するのは難しい・・といってたのはウソです、すいませんでした。

続いてLeaderNode2.xmlを変えていきましょう。

まずは、以下の行を見つけます。
<Param name="_temp_id" com="=" val="=_temp_paty"/>

赤字の部分を追加します。
<Param name="_temp_id" com="=" val="=_temp_paty"/>
<Param name="_temp_id" com="=" val="=_temp_paty2"/>

最後に、
<LoadEvent path="Event/Common/LeaderNode.xml"/>

<LoadEvent path="Event/Common/LeaderNode2.xml"/>
に変えるのをお忘れなく。


これで終わりです。
導入はEvent\DungeonのSlaInner.xmlやらNail1.xmlの中の
SelectPaty.xmlをSelectPaty2.xmlにするだけです。
注意としてこれだけではダンジョンに登場しないので登場させるように各自追記してください。
例・座標は適当です
<Paty no="=_temp_paty1" brave="50" x="505" y="1878" dir="0.25"/>
<Paty no="=_temp_paty2" brave="50" x="294" y="1730" dir="0.25"/>
<Paty no="=_temp_paty3" brave="50" x="294" y="1730" dir="0.25"/>

はい、とっても簡単に実装できました。
私が無理やりトーナメントで150行かけて書いたイベントは何だったのでしょうか・・
私が作った方は部隊を選ばないことが出来ますが上記の物ではそれは出来ませんが・・

さて・・私もトーナメントの方のパーティ選択を最適化しますか・・・


自力で頑張ってしまった方には申し訳ないのですが
一応サンプルをアップしておきます。

3パーティサンプル.zip

4パーティ以上にしたいと思う方は同じ風に追加するだけで恐らく大丈夫でしょう・・

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://stnsllethouse.blog.fc2.com/tb.php/117-34090917
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック