初めての WoW Macro

はじめに
本書は World of Warcraft のマクロという便利機能について説明するものである。これを参考に読者がマクロを活用し、より WoW の世界を楽しめれば幸いである。
本ページは Wrath of the Lich King 時代に記載されたものです。サンプルの一部は古い場合があります。
第一章 マクロとは
WoW では、チャット欄にスラッシュから始まるコマンドを打ち込むことで多くのことを行なえる。有名なのは /dance で、これを打つとダンスする。他には、/p のパーティ間会話、/g のギルド間会話はすでに使っていることと思う。
スラッシュコマンドは他にもたくさんあり、例えば「バッグの水を飲む」という操作や「敵に Polymorph 呪文を使う」といった動作も、実はスラッシュコマンドで表現可能である。
マクロは、こうしたスラッシュコマンドを数行まとめて書いておいて、ボタン1個で一度に実行できる仕組みである。もしあなたが WoW の操作中に、「いつもこの順番で同じ操作を行なう」といったものがあるなら、それをひとつのマクロにまとめて楽をできる可能性がある。
ただしマクロの使いすぎは禁物である。あくまで自分が理解できる範囲で、自分がよく行なう動作パターンをまとめる程度にとどめるのがよいだろう。また、ひとつのマクロには255文字までしか登録できないので、あまりにも複雑なものは登録しにくくなっている。ただし抜け道はある(後述)。
第二章 マクロの作り方
マクロは以下の方法で作成する。
- よく行なう動作パターンを思い浮かべる
- スラッシュコマンドに置き換える
- マクロ登録する
- キーに登録し使う
Mage はかなり頻繁に水を飲まないとやっていけない。ただ、水もパンも召喚可能なので飲み放題、食べ放題である。今回は、「バッグを開く→水をクリック→パンもクリック」という一連の動作をまとめた「お水gkgk ごはんmgmg」というマクロを作ることを例に、マクロの作り方を説明してみよう。(注釈:これは水とパンが別々のアイテムだった時代の例です)
各種スラッシュコマンドについて詳しくは次章で触れるが、アイテムを使うというのは /use というコマンドである。チャットから以下のように打ち込むと飲んだり食べたりするはずだ。もちろん、対応する水なりパンがバッグに入っていることが前提である。
/use Conjured Purified Water /use Conjured Bread
これをマクロ登録するには、まず ESC を押して開くゲームメニューの Macro を選ぶ。New のところを押し、マクロ名を適当に決める。アイコンは「?」のままで良いので Okey で確定する。
その後 Enter Macro Commands という部分にマクロを記載する。アイテムや呪文の入力がめんどくさい場合は、マクロ入力中にそれらのアイコンをバッグ上で Shift+クリックするとそのアイコンの名前が挿入される。実際は別のテキストエディタアプリを立ち上げて、そこで書いてコピーしペーストするのが楽である。
そのアイコンをアクションバーにドラッグして登録完了である。Macro の画面は Exit で抜け、アクションバーのやつを実際に押してみて、水とパンを食べるか確認してみよう。
アイコンについて
アイコンが「?」であるのが気になると思うが、マクロの最初の行に #showtooltip と書くことで、アイコンや、アイコンをマウスオーバーした時に出てくる説明を、「そのマクロ内で最初に出てくるアイテムか呪文」にしてくれる。
#showtooltip /use Conjured Purified Water /use Conjured Bread
BindPad
BindPad という Addon は、マクロ専用というわけではないがマクロと非常に相性がいいおすすめの Addon である。これを使うと、任意のキーに任意の呪文やアイテム、そしてマクロを登録することができる。
インストール後 /bindpad とチャットに打ち込むと設定画面が開く。もしくは、ESC を押して開くメニューの keybind の設定の一番下に BindPad 画面を出すキーを設定できるようになっているのでキーを割り当てて開く。出てきた画面にマクロからアイコンをドラッグする。
置かれたアイコンをクリックした下記画面の状態で、対応させたいキーを押す。その後 Exit を押して戻る。なお対応させたいキーがすでに何かに登録済みの場合は変更して良いか確認画面が出てくるから安心だ。gkgk mgmgボタンはアクションバーに置くほどのものではないので、筆者はこれを「ろ」のキー(\)に登録している。
また、BindPadに登録した Macro(やスペル、アイテム)を右クリックすると、それを「BindPadマクロ」にすることができる。これは、255文字制限がないため、長いマクロも書くことができる。もし Macro に慣れてきて255文字制限にひっかかり始めた場合にもおすすめである。
ただし、BindPad (に限らずユーザーが入れた Addon)の設定はローカルに保存されるため、マシンを変える場合などはバックアップをお忘れなく。インストールディレクトリ/WTF/Account/(アカウントID)/SavedVariables/BindPad.lua に保存されている。WoW オフィシャルの Macro 画面で登録したものはサーバーサイドに保存される。
日本語を含むマクロ
マクロ入力画面に、そのままでは日本語は入力できない。Macroの枠で使われているフォント FRIZQT__.TTF には日本語がないためだ。WoW をインストールしたディレクトリに Fonts ディレクトリを作成し、その中に日本語を含むフォントを FRIZQT__.TTF という名前で置けばマクロ画面で日本語も使えるようになる。
ただし、FRIZQT__.TTF は WoW のゲーム画面の各所で使われるため、デザインをそのままにしたい場合はできるなら TTEdit などをを使い、元の FRIZQT__.TTF の英数字をそのままに、日本語のみ足したオリジナルフォントを個人的に作成し FRIZQT__.TTF という名前で保存し利用するのが良いと思う。
これを済ませていれば、先ほどのマクロに、パーティへ今マナ回復中ですと日本語でチャットするコマンドも追加できる。
#showtooltip /use Conjured Purified Water /use Conjured Bread /p お水gkgk お弁当mgmg
第三章 スラッシュコマンド
/use は /use アイテム名 という形式でアイテムを使うコマンドだが、他にも使えるコマンドがたくさんあり、ここに一覧がある。よく使いそうなものを列挙してみる。
/use /cast /castsequence /target /assist /cleartarget /targetenemy /targetfriend /targetlasttarget /targetparty /focus /clearfocus /petattack /petdefensive /petagressive /petautocaston /petautocastoff /petfollow /petpassive /petstay /click /startattack /stopattack /stopcasting /cancelaura /cancelform /changeactionbar /swapactionbar /stopmacro /script
だいたい英語そのままである。例えば /cast は /use の Spell 版で、指定した Spell をとなえるものである。たとえば Polymorph をスラッシュコマンドで唱える場合は、以下のように入力する。
/cast Polymorph
ランクについて
同じ名前で Rank が上がっていく Spell の場合、Fireball(Rank 1) と正式名で指定するとそれになるが、以下のようにかっこを省略すると自動で一番ランクの高い Fireball になる。
/cast Fireball
コマンドの対象を指定する
プレイヤーや敵を指定するコマンドの場合は、そのままプレイヤー名や敵の名前を書いても良いのだが、それでは汎用性がないため、UnitID というものを利用できる。UnitID の一覧はここにある。
例えば、自分が攻撃している敵が別な仲間のプレイヤー(おそらくタンク役)を攻撃しているとして、その人がやばいので Heal をかけてあげる、といったものをマクロにするには、以下のように書ける。
/target targettarget /cast Heal
targetが続いてややこしいが、targettarget は自分のターゲットのターゲットという意味の UnitID であり、つまり同じ敵を叩いている仲間をターゲットにセットして、Heal をキャストする、という意味である。
ただし、実はコマンドには「対象を指定する構文」があり、これを利用すると以下のように1行で書ける。これがいいのは、自分のターゲットを変えずに任意のスペルを任意のターゲットにキャストできるという点である。
/cast [@targettarget] Heal
構文は、コマンドとその目的語(/cast の場合は呪文名)の間に [ と ] で囲んで指定する。@の後に書いた UnitID がその /cast などの対象とみなされる。
この [@キャスト先] 構文で便利なのは、マウスオーバーが使える点である。
/cast [@mouseover] Flash Heal
これは、マウスオーバーしている対象に Flash Heal をキャストする。マウスオーバーは、実際のキャラクターをマウスオーバーでもよいのだが、通常画面の左側に出ている Raid パネルやパーティの Unit Frame 上をマウスオーバーした状態で使えるため、特にヒーラーにとって重要である。
第四章 ひとつのボタンに複数の機能を持たせる
ひとつのボタン(マクロ)に複数の機能を持たせるという上級テクニックについて、3種類の方法を紹介しよう。
その1./castsequence
Prist の場合、Inner Fire や Power Word: Fortitude、あと Shadow Protection という強化呪文(バフ)が使えるので、たいていこれを全部使ってから戦闘に望む。これを一度に行なうマクロを組みたいところだが、以下のマクロは失敗する。
/cast Inner Fire /cast Power Word: Fortitude /cast Shadow Protection
なぜなら、最初の Inner Fire をつかった後、次の呪文が使えるようになるまで若干のクールダウン(グローバルクールダウン)があるからである。こういう用途として、/castsequence というコマンドが用意されている。
#showtooltip /castsequence Inner Fire, Power Word: Fortitude, Shadow Protection;
これを実行すると、1回目押したときは Inner Fire、2回目押したときは Power Word: Fortitudeと、同じボタンの意味が順番に変わる。#showtooltip を書いているので、アイコンも押したたびに変わる。
上の例だと Inner Fire を実行した後、次に押すと必ず Power Word: Fortitude なのだが、/castsequence は最初に reset= で始まるリセットの指定を書くことができる。以下のように reset= を指定すると、1回目押された後10秒たつか、shift+クリックだと戻ってまた Inner Fire となる。
#showtooltip /castsequence reset=10/shift Inner Fire, Power Word: Fortitude, Shadow Protection;
reset=の後には、数字、shift、ctrl、alt の他に target(ターゲットが変わるとリセット)や combat(戦闘終わるとリセット)をスラッシュ区切りで指定できる。
その2.[] 構文の条件指示子
前の章で [@targettarget] のようにそのコマンドの対象を指定する構文があることを紹介したが、そこにさらに「そのターゲットの状態についての条件」を入れることができる。条件の一覧についてはここにある。
例えば以下のようにすると、水を飲んでパンを食べた後、nomod:ctrl つまり ctrl キーが押されていない場合はチャットで通知せず処理を終える(静かに食べたり飲んだりする)。
/use Conjured Purified Water /use Conjured Bread /stopmacro [nomod:ctrl] /p お水gkgk お弁当mgmg
条件は半角カンマでつなげることができる。例えば以下のようにすると、ターゲットが敵であって死んでいない場合のみ Polymorph をかける、という条件となる。仮にターゲットが敵でなかったり死んでいる場合、このマクロは何も行なわない。
/cast [@target,harm,nodead] Polymorph
[] 条件は複数並べることができる。以下は模式的に書いたものである。
/command [@aaa,bbb,ccc][@xxx,yyy,zzz] 引数
[] 条件は、ひとつでもその条件を満たせばそのコマンドは実行される。一般的なプログラム言語風に記述すると以下のように解釈される。
if ( (@aaa == bbb AND @aaa == ccc) OR (@xxx == yyy AND @xxx == zzz) ) { command(引数); }
これを使い、「フォーカスが敵であればその敵に、フォーカスが空の場合はターゲットの敵に、ターゲットもいない場合、マウスオーバーした対象を Polymorph する」という内容は次のように書くことができる。
/cast [@focus,harm][harm][@mouseover,harm]Polymorph
「フォーカス」は第二ターゲットの仕組みである。羊にするものをここにいれ、場合によっては再度羊化するなどに使われる。デフォルトではフォーカスをするキーバインドは設定されていないので、ESC→Keybind→Focus targetを何らかのキーに登録して使うとよいだろう。
その3.; による分岐
ひとつのコマンドをセミコロンで区切ることで分岐させることもできる。
/command [@aaa,bbb,ccc][@xxx,yyy,zzz] その1; [@foo,bar] その2; その3
これはプログラム言語風にいうと以下のようなイメージである。つまり、最初にマッチした [ ] 条件のコマンドのみが実行される。
if ( (@aaa == bbb AND @aaa == ccc) OR (@xxx == yyy AND @xxx == zzz) ) { command(その1); } elseif ( @foo == bar ) { command(その2); } else { command(その3); }
これを利用し、モディファイアキー(CtrlやShiftなど)を使うことで別のスペルになるにようにした Macro を作ることができる。
#showtooltip /castsequence [mod,@mouseover,help][mod,help][mod,@player]Flash Heal; [@mouseover,help][help][@player]Renew
これは、何らかのモディファイアキーを押しながら呼ばれると Flash Heal を、ふつうに押した場合は Renew をキャストするマクロである。それぞれ、対象はマウスオーバー→ターゲット→プレイヤーの順に存在しているものに対してキャストされる。
付録
以下に、筆者が使っているマクロのサンプルを紹介しつつ複雑な例の解説をする。
緊急事態ボタン
#showtooltip /stopcasting /use Lesser Healing Potion
呪文となえ中でも、とにかくそれはキャンセルしてポーションを飲むという意味である。
/stopcasting のように、マクロの最初に入れておくと便利なものに /dismount がある。これを入れておくと、マウントから降りてキャストする。
羊にしてフォーカスで管理
#showtooltip /focus [@focus,noharm][@focus,noexists][@focus,dead] /clearfocus [@focus,noharm][@focus,dead] /stopmacro [@focus,noexists] /cast [@focus]Polymorph /stopmacro [nomodifier:ctrl] /p %fを羊にするなり
これは前述の Polymorph マクロの発展型で、フォーカスがいない場合ターゲットをフォーカスに入れた上で、羊にするという部分が加えてある。
さらに、もしCtrlクリックだったら羊にしたメッセージを流す。/p コマンドのメッセージで %t はターゲット名に、%f はフォーカス名に置き換えられる。
下の拡張アクションバーの表示非表示
/script if(MultiBarBottomLeft:IsShown()) then MultiBarBottomLeft:Hide(); MultiBarBottomRight:Hide() else MultiBarBottomLeft:Show(); MultiBarBottomRight:Show() end
/script は WoW のアプリの API に Lua コードアクセスできる最終手段であり、これを利用して小さな Addon を書くことができる。この例は拡張のアクションバーの表示非表示を切り替えるマクロである。
後ろを見る
/script FlipCameraYaw(180);
これは視点を前方(通常)、後方を切り替えるマクロである。2回押すと通常に戻る。後ろから追われている時にふりかえらずに確認するときに便利である。
他のマクロサンプルが載っているサイト
カバーの説明
表紙の動物は羊です。羊は主に毛を刈り衣料に利用する目的で世界中で飼われており、従順で温和な動物として知られています。World of Warcraft では、Polymorph という敵を一定時間何もできない羊に変える魔法があるため、羊は頻繁に登場します。
表紙に使った羊の画像はM/Y/D/S 動物のイラスト集を加工利用させていただきました。ありがとうございます。
—
(注)この項目はオライリー社の技術書をパロって書いてみたものです。Wrath of the Lich King 時代に記載されたものです。内容はできるだけ正しいものになるように気をつけていますが、間違いなどを見つけた場合は @tomita までご連絡ください。
コメントを残す