ログパーサー GINA のススメ

 今時の MMORPG と違い、Project1999 は古いゲームなので、色々と不便なことが多い。

 そこで、このツールが広く使われている。

 GINA は、ログを監視して指定した条件にマッチするとアクションをおこすツールだ。

 とはいえ、一から説明していると収拾がつかないだろう。ここでは、その入り口としていくつか例示をするので、この素晴らしいツールを少しでも身近なものにしてもらえればと思う。

 

 まずは公式からダウンロード。

 GINA - Gimagukk's Incantatory Notation Apparatus

 次に EQ 側の設定。

 EQ クライアントを落として、eqclient.ini をメモ帳で開いて下記の行を追加する。

Log=TRUE

 ログインして、その辺のモブと適当に戦闘をすると EQ のインストールフォルダの Logs に eqlog_キャラ名_P1999Green.txt というファイル名のログファイルが作成される。

 ここには、戦闘のダメージなど詳細が記録されている。

 GINA を起動し、左上の Add Character ボタン > Log File の右側の [...] > ログを監視したいキャラのファイルを指定。

 前準備はこれで終わり。

 

例 1) ギルドチャットに音をつける

 ギルドチャットで何か会話がされていることを知るために音をつけてみよう。これは今時の MMORPG ではあって当たり前の機能だが、無いので GINA にやらせてみる。

 好みの音を持っている場合はここは読み飛ばしてもらって構わないが、普通は素材集のようなものなんて持っていないと思う。幸い、World of Warcraft で使われているサウンド・エフェクトが ここ からダウンロードできる。かなり豊富にこの手の音 (謎) が揃っているので、おすすめ。

 あまり派手な音だととても鬱陶しいので、ソフトなやつを選んでみる。

 ここでは、例として これ を使う。

 再生ボタンの右横に ... というボタンがあるので、そこからダウンロードする。

 ファイル名は、オリジナルがどこからとってきたかわからなくなるので

UI_VoiceChat_ChatMessageIncoming.mp3

 などにリネームして元の名前を残しておく。

 これは mp3 という形式のオーディオ・ファイルなのだが、GINA は残念ながら wav でないと扱えない。

 このサイト で変換ができる。mp3 ファイルをこのサイトにドラッグ & ドロップし、ダウンロードボタンで wav ファイルを保存する。

 次に、GINA でトリガーを設定する。

 左から二つ目のボタン Add Top Level Group で Social などというグループを作成。

 次に、そのグループを選択すると、左から三番目のボタン Add New Trigger のグレイアウトが外れる。それを押して、下記のようなものを作成する。 

f:id:perotanz:20210607181035p:plain

 Trigger Name は任意だが、わかりやすいものにしておいたほうが後々のためになる。

 Search Text は、後で説明をするが、誰かが喋っているのを拾うためのおまじない

^.+ tells the guild, '

 わかりにくいので、コレをコピペしてほしい。Use Regular Expressions にチェックを入れて、そのおまじないを使っていることを宣言する。(これ、忘れやすい)

 次に、Basic タブの Play Sound File を選択し、Sound File に先ほど作成した wav ファイルを指定する。

 これで、誰かがしゃべるたびにこの音が再生されるようになる。

 

おまじないの説明

^.+ tells the guild, '

 どうしてこれが

Nekomimi tells the guild, 'si sinu'

 のようなギルドチャットだけを拾うのか説明してみる。

 まず、先頭にはプレイヤーの名前「Nekomimi」があるが、誰が喋っていても鳴らしたいので何にでもマッチさせる必要がある。

 そこで、ドット . 

 これは全ての文字 1 文字にマッチする特別な文字で、メタ文字と言う。

 次の +

 これは、直前の文字 (ここでは . ) を修飾するもので、直前の文字が 1 文字以上繰り返す場合にマッチする。つまり .+ という組み合わせで 1 文字以上あればどんな内容でもマッチすることになる。

 + の後ろの tells the guild, '

 肝心のギルドチャットかどうかをこれで判定している。

 それと、喋っている内容は問わないため、' の後ろには何も指定しない。

 また、先頭にある ^ は、これが行の先頭から始まっていなければマッチさせないことを指定している。

 これは 正規表現 (Regular Expression, RE) と呼ばれるもので、プログラミングの世界では広く使われており、職種によっては毎日触れるほど無くてはならないツールだ。

 一見複雑に見えるが、GINA で使う範囲はかなり限られている。

 いくつか覚えればいいだろう。

 詳しく知りたい人は、こういうサイト を見て試してみてほしい。

 

例 2) tell に音をつける

 ほとんど前の例と同じ。ただし、tell の形式はやや特殊だ。

Tcpdump -> Nekomimi: guano chan mitemasu

 Search Text はこうなる。

^.+ -> .+:

 もっと厳密にも書けるが、これでうまく動いているので適当で。

 なお、私が使っている音は WoW と 同じもの にしている。

 

例 3) ゲート警告

 ワイプする可能性が非常に高くなるモブのゲートスペルは、最大限の注意が必要になる。

 Search Text はこれだ。

^(.+) begins to cast the gate spell\.$

 上で . (ドット) には特別な機能があることを説明したが、ドットそのものをマッチさせたい時もある。そういう場合は、直前に \ を置いてエスケープする。また、新しく出てきた行末の $ は、これが行末であることを指定している。行頭を示す ^ と同じ機能だ。

 ここでは、どのモブがゲートしようとしているのかも表示してみる。

 Basic タブの Display Text にチェックを入れて、

GATE: ${1}

 とする。${1} で、Search Text の ( ) 内でマッチした文字列と置き換えることができる。例えば、

froglok ilis wizard begins to cast the gate spell.

 という場合、

GATE: froglok ilis wizard

 と表示される。

 しかし、こういう即応が必要なものは、音による警告のほうがいいだろう。私は これ を使っている。ニュータイプ音、NT 音、空間認識音などと言われているアレである。ちなみに楽器は こんなもの だった!

 

それでは、ハッピー GINA ライフ!

 

--> その2