さて、楽しい WoW なのですが、クライアントアプリがおそろしくカスタマイズ性がよく、もともと設定が細かくできることに加え、マクロというものでいろいろやることができます。右図は WoW ブログにマクロの記事書いたときにがんばってつくった絵。
さらに Addon の仕組みが用意されていて、UI を変更したり各種イベントをフックしたりできる。このへん Firefox と似てる。入れている Addon によってぜんぜん違う画面だったりするあたりも似てる。Lua 言語で簡単に書けるようなので、ちょっくら作ってみることにしました。
まずは簡単そうな /translate Hello とかで翻訳してくれるチャットコマンドを組み込もうかと、まったくさわったことなかった Lua を勉強開始。わりと素直な syntax。おお、(オヤジギャク的な意味でも)尊敬しているエンジニア mattn さんのブログがわかりやすい。この記事のタイトルは mattn 先生にささげます。lua メモ:
do return end とか書くらしい。えぇぇぇ-> と似てる。自動で 1個目の引数が self という local 変数に入るのがやさしい。table の要素をドットでアクセスできるので foo["bar"] は foo.bar と書けるのだが、まちがって関数を foo.bar() とかやってしまうと self にオブジェクトが来ないのでハマる。正しくは foo:bar()。で、こちらが始めて書いた lua。Google 翻訳するあ。LuaSocket を使ってます。
ただ、書きながらたぶんだめだろうなーとは思ってたのだが、WoW では require や module が実装されていないし外部の URL を叩くとか NG。セキュリティ的にヤバいもんね。。つうわけで翻訳はヤメて、いろんな角度からバシバシスクリーンショット撮るいっぱい写真撮りたい人用 Addon を書いてみることに。ぼく専用ですね(キリッ
完成したのはこちら。手元では Windows/Mac ともに期待通りに動いていて、マトリックスみたく、ぐるーっとまわって写真とりまくれるようになって楽しいです。WoW Addon 書いてみた時の tips:

/run ReloadUI() を実行すると、すでに読み込んでる Addon については再起動してくれる。これをマクロに登録しすぐ呼べるようにキーバインドしておくといい。これでコードを書き換えた後いちいち WoW を再起動しなくてもいい。あとこのタイミングで SavedVariables も保存される。アプリ/WTF/Account/(ID)/SavedVariables/(Addon名).lua
アプリ/Account/(ID)/(サーバー名)/SavedVariables/(Addon名).luaAddon サイトが curse とか wowinterface とかあるのだけど、とりあえず curse にアカウント作って UP してみた。承認が通れば この辺から 落とせるようになると思う。curse は git レポジトリとかもあったぽいのでもうちょっと使い方調べたほうがよさげ。
だけどぼく早くチョコボに乗りたいんで Silvermoon City の評判値かせがないといけないのです。Silvermoon 周辺のエルフのごきげんはもう十分に取りつくしたので、今は世界にちらばった Silvermoon 出身エルフを求めて旅をしている最中です。なので今日はこの辺で!