Windower 日本語Wiki

SpellCastXMLの説明編

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集
SpellCast入門 3.XMLの説明編

入門1~2で学んだことをベースに、もう少し高度なXMLの書き方の説明です。
当ページの記載を活用することで、シンプルな記述で、より高度な条件での利用が可能になります。
なお、XMLすべての日本語リファレンスではありません。

Ctrl+Fでページ内を関連キーワードで検索してみてください。



<Config> 動作状況をログで確認する

 xmlファイルがおいてあるフォルダには、「spellcast.log」というファイルが出来ていると思います。これは、Spellcastの動作状況を出力し続けているログです。ログを確認することで、<If>条件文のマッチング状況や、装備変更の状況などを確認することができます。次のように設定することでログを出力するようになります。ログ不要な場合は、"False"を設定しておいてください。
 <Config
  Debug="True"
 />

キーワード:Debug, Spellcast.log


<Sets> 装備セットの記述をシンプルにする

 <set name="aaa" Baseset="bbb">を使って装備セットの記述をシンプルにすることができます。
 <set name="STR">
   <Head>ヘカトンキャップ</Head>
   <Hands>アルキオネウス腕輪</Hands>
   <Body>ヘカトンハーネス</Body>
 </set>
 <set name="NodownDEX_STR" Baseset="STR">
   <Hands>アスカルマノポラ</Hands>
 </set>
 上の例では装備セット「NodownDEX_STR」は、装備セット「STR」をNodownDEX_STRの記述で上書きしたもの、になります。
 すなわち、NodownDEX_STRは「ヘカトンキャップ」「ヘカトンハーネス」「アスカルマノポラ」を装備するものとなります。
 数部位だけが違う装備セットを作る際に便利な設定方法です。

キーワード:Baseset


<Rules> 魔法の種別(回復/精霊/暗黒など)を条件にする。

 <If Skill="魔法種別名">で、魔法の種別でIfを記述することができます。
 <If Skill="ElementalMagic">
   <Action Type="equip" When="Precast" set="Ele" />
 </If>
 上の例では、詠唱した魔法がElementalMagic=精霊魔法の場合に装備セットEleに着替えるというものになります。
種別 魔法種別名 種別 魔法種別名
精霊魔法 ElementalMagic 神聖魔法 DivineMagic
弱体魔法 EnfeeblingMagic 暗黒魔法 DarkMagic
強化魔法 EnhancingMagic 召喚魔法 SummoningMagic
回復魔法 HealingMagic 忍術 Ninjutsu
青魔法 BlueMagic 呪歌 Singing

キーワード:Skill


<Rules> 8属性を条件にする。

 <If Element="属性名">で、魔法の属性でIfを記述することができます。
 <If Element="Fire">
   <Action Type="equip" When="Precast" set="FireSet" />
 </If>
 上の例では、詠唱した魔法が炎属性魔法の場合に装備セットFireSetに着替えるというものになります。
属性
属性名 Fire Ice Wind Earth Thunder Water Light Dark

キーワード:Element


<Rules> 魔法詠唱や装備変更のタイミングを変える/時間差をつける

 <Action Type="xx" When="タイミング" Set="xx">で任意のタイミングで装備変更等ができますが、そのタイミングに時間差を設けることができます。
 <If Element="Fire">
   <Action Type="CastDelay" Delay="2.5" />
   <Action Type="equip" When="Precast" set="FireSet" />
 </If>
 上の例は、詠唱した魔法が炎属性魔法の場合に装備セットFireSetに着替えるものですが
 着替えから、炎属性魔法の詠唱開始までに2.5秒間の待ち時間を設けます。
Type=""への設定値 説明 標準の時間
CastDelay Precast後~魔法詠唱までの時間 直後
MidCastDelay 魔法詠唱後、MidCastで指定した装備変更を実行するまでの時間 0.6秒
AfterCastDelay 魔法詠唱完了後、Aftercastで指定した装備変更を実行するまでの時間 1.5秒

キーワード:CastDelay, MidCastDelay, AfterCastDelay


<Rules> 魔法詠唱時の天候

 <If WeatherElement="天候名">で、指定の天候の時に動作するIf~Actionを作成することができます。
 <If WeatherElement="Fire">
   <Action Type="equip" When="Precast" set="WeatherFire" />
 </If>
 上の例は、魔法/アビ/WSを使用したときに、炎属性天候の場合に装備セットWeatherFireに着替えるものです。
天候
天候名 Fire Ice Wind Earth Thunder Water Light Dark

キーワード:WeatherElement


<Rules> 魔法詠唱時の曜日

 <If Day="曜日名">で、指定の曜日の時に動作するIf~Actionを作成することができます。
 <If Day="Fireday">
   <Action Type="equip" When="Precast" set="FiredaySet" />
 </If>
 上の例は、魔法/アビ/WSを使用したときに、炎曜日の場合に装備セットFiredaySetに着替えるものです。
曜日 炎曜日 氷曜日 風曜日 土曜日 雷曜日 水曜日 光曜日 闇曜日
曜日名 Firesday Iceday Windsday Earthsday Lightningday Watersday Lightsday Darksday

キーワード:Day


<Rules> 魔法/アビ/WSのターゲットのHP%

 <If SpellTargetHPP="タゲのHP%">で、タゲのHP%の値が指定の値(を超える/丁度/未満)の時に動作するIf~Actionを作成することができます。
 <If SpellTargetHPPGT="50">
   <Action Type="equip" When="Precast" set="EquipName" />
 </If>
 上の例は、魔法/アビ/WSを使用した相手のHPが51%以上の場合に装備セットEquipNameに着替えます。
定義項目 説明
SpellTargetHPP 魔法/アビ/WSを使用した相手のHP%が、ちょうど指定の値であった場合
SpellTargetHPPLT 魔法/アビ/WSを使用した相手のHP%が、指定の値未満であった場合
SpellTargetHPPGT 魔法/アビ/WSを使用した相手のHP%が、指定の値より大きい場合

キーワード:SpellTargetHPP, SpellTargetHPPLT, SpellTargetHPPGT


<Rules><If> If内での条件分岐  

<If>を利用することによって、<If>内でさらに細かい条件分岐ができます。
<If>の基本文法は次のとおりです。
<If xxx="yyy">
  <If aaa="bbb">
    <Action~① />・・・など
  </If>
  <Elseif ccc="ddd">
    <Action~② />・・・など
  </Elseif>
  <Else>
    <Action~③ />・・・など
  </Else>
</If>
  • 上記の例では、xxxがyyyである魔法/アビ等の場合に、aaa=bbbであれば①のみが実行
    〃  ~場合に、aaaはbbbではなく、ccc=dddであった場合は、②のみが実行
    〃  ~場合に、aaa=bbbでもなく、ccc=dddでもない場合は、③のみが実行されます。
  • <Elseif "条件">~</Elseif>とは、直前の<If>の条件が満たされず、<Elseif>に記述した"条件"が当てはまった場合に、~が実行されるというもので、必ず</if>の直後に記述する必要があります。
  • <Else>~</Else>とは、直前の<if>または<Elseif>が満たされなかった場合に、~が実行されるもので、</If>の直後、又は</Elseif>の直後に記述する必要があります。

<If>~</If>の中に、さらに<If>~</If>を記述することもできます。
下の例では、火属性精霊魔法を詠唱時のみ、火属性杖を装備。さらに火天候の場合のみ火輪の帯を装備するものです。3行目の<If>によって、火属性魔法のみ以外の場合は4~7行目は実行されないため、火以外の魔法の際に火天候であっても、火輪の帯に着替えることはありません。
  1. <If Skill="ElementalMagic">
  2.   <If Element="Fire">
  3.     <Action Type="Equip" When="Precast" Set="属性杖:火" />
  4.     <If WeatherElement="Fire">
  5.       <Action Type="Equip" When="Precast" Set="火輪の帯" />
  6.     </If>
  7.   </If>
  8. </If>
 *Set名は便宜上日本語を使いましたが、本来は英数字しか使えません。

<If>、<ElseIf>で使用できる条件は基本的に<If>で使用できる条件と同様です。

次の「条件のOR、AND条件」も参照してください。

キーワード:<If>, <Elseif>, <Else>


<Rules><If> 条件のOR、AND条件

<If><ElseIf>の条件は、複数の条件をOR条件、AND条件で指定することができます。
まだ、<If>について理解されていない方は、さきに[こちら]をご参照ください。

下の例は、AND条件の定義方法です。
精霊魔法を使った際に、魔法が火属性でかつ(AND)、天候が火属性である場合に火輪の帯に着替えるというものです。魔法が水属性かつ火天候の場合など、は着替えません。複数の条件が全て満たされる必要があります。
<If Skill="ElementalMagic">
  <If Element="Fire" WeatherElement="Fire">
    <Action Type="Equip" When="Precast" Set="火輪の帯" />
  </If>
</If>

次に、OR条件の定義方法です。
下の例の場合では、精霊魔法であり、火属性魔法、又は(OR)、火天候の場合に着替えが行われます。どちらか片方、又は両方の条件さえ満たせばよいのがOR条件指定です。
<If Skill="ElementalMagic">
  <If Mode="OR" Element="Fire" WeatherElement="Fire">
    <Action Type="Equip" When="Precast" Set="火輪の帯" />
  </If>
</If>
<If>に複数条件を記述した際には、通常はANDとして評価され、Mode="OR"とした場合のみ、OR条件として評価されることになります。

OR条件は、例えば次のような場合に利用します。
 ・「<if mode="OR" TimeLT="6.00" TimeGT="17.59">」・・・TimeLTはヴァナ時間が指定時間未満、TimeGTは指定時間を超えるという指定です。これをOR条件でまとめて「ヴァナ時間18:00~6:00の間の場合~」という指定になります。

キーワード:<If>, <Elseif>, Mode


<Rules> 抜刀時、ヒーリング開始時、通常時の着替え

<If Spell="AutoSet">とWhen=~を組み合わせることで、抜刀時、ヒーリング開始時、通常時の装備変更などができます。
<If Spell="AutoSet">とは、プレイヤーステータスの変更時に実行されるものであり、<If Spell="Autoset">内の<If>にて目的のプレイヤーステータスを指定して装備変更を行います。
下の例は、抜刀すると抜刀装備→納刀すると通常時装備。ヒーリングするとヒーリング時装備へ着替え、立ち上がると通常時装備へ着替えるというものです。
  1. <If Spell="AutoSet">
  2.   <If Status="Engaged">
  3.     <Action Type="Equip" When="Engaged" Set="抜刀装備" />
  4.   </If>
  5.   <ElseIf Status="Idle">
  6.     <Action Type="Equip" When="Idle" Set="通常時装備" />
  7.   </ElseIf>
  8.   <ElseIf Status="Resting">
  9.     <Action Type="Equip" When="Resting" Set="ヒーリング時装備" />
  10.   </ElseIf>
  11. </If>
<IF Status~>というのが、プレイヤーステータスをあらわすものです。Status="~"には下のステータスを設定します。
Engaged 抜刀時
Idle 通常時
Resting ヒーリング時

ここで注意したいのが、AutoSetが実行されるのは”プレイヤーステータスが変わった瞬間”のみということです。ヒーリング中だからといって、何回もAutoset Status=Restingが実行されるのではありません。
Restingが実行されるのは、通常状態(Idle)からヒーリング(Resting)した瞬間の1度のみです。

※<Action>のWhenには必ずIf Statusと同じタイミングを指定してください。PreCastなどを指定しても魔法/アビが実行されていなので、その<Action>は実行されないことになります。

キーワード:Spell="AutoSet"


<Rules> サブウェポンの変更

メインウェポンとサブウェポンを同時に変更した場合、「サブウェポンとして装備するには・・」というエラーでサブウェポンが装備できない場合があります。これは標準のFFXIマクロでも同様です。

対処方法としては、メイン装備>wait 1>サブ装備とwaitを設けることですが、SpellCastでは次のように設定します。
  1. <Variables>
  2. <Var name="SubWeapon">武器名</Var>
  3. </Variables>
  4.  
  5. <Rules>
  6. <If Spell="Autoset">
  7. <If Status="Engaged">
  8. <Action Type="Equip" When="Engaged" Set="Fight" />
  9. <Action Type="Command" When="Engaged">wait 1; input /equip sub %SubWeapon</Action>
  10. </If>
  11. </If>
  12. </Rules>

これは抜刀時にSet名:Fightに着替えて、その1秒後にサブウェポンを装備する、というものです。
<Var name="SubWeapon">サブウェポン名</Var>は、"SubWeapon"という変数に武器名を設定しているというものです。9行目の"%SubWeapon"は武器名に置き換えられることになります。
Var・・と記述する理由は、JPIDConvの変換対象に加えるためです。


<Rules> ChangeSpellの代用

ChangeSpellは、「Aという魔法/アビ等を実行した場合に、実際にはBに変更して実行する」というものですが、日本語版FFXiではChangeSpellを使うことは出来ません。
※ChangeSpellには英語名でアビ/魔法等を指定しなければならない、しかし、日本語版FFXiでは/ma cure <t>など英語名でのコマンドは受け付けない

そこで、CancelSpellを使って代用することができます。
  1. <Variables>
  2. <Var name="B">魔法B</Var>
  3. </Variables>
  4.  
  5. <If Spell="魔法A">
  6. <Action Type="CancelSpell" />
  7. <Action Type="Command" When="precast">input /ma $B %SpellTargetName</Action>
  8. </If>
魔法Aを実行した場合、AはCancelSpellによって実行されず、input /ma $B %SpellTargetNameによって魔法Bが詠唱されます。(ユーザ変数は変数の前に%ではなく、$をつけます)

キーワード:CancelSpell, ChangeSpell






1.初回導入編2.お試し動作編>3.XMLの説明編】









  • 変更履歴
  • 2009年5月14日 2.3より<Rule>を廃止、<If>に変更することによる変更


タグ:

+ タグ編集
  • タグ:

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

記事メニュー
目安箱バナー