このページの目的は?†
RO を「ちょっと便利に遊ぶ」ことができるようにするアプリケーション ChatAnalyzer を提供するものです。
Ragnarok Online では、さまざまな『有志のウェブサイト』があり、それによって便利に遊ぶことができています。
例えば、D-liste という情報サイトでは、無数にあるROのアイテムについて情報が検索できます。
例えば、しばしば行われる『Wizardry的』なイベント:ヒントの文字から罠の名前を推察するようなサイトがあります。
これらのサイトは便利なのですが、1つの難点があります。
ROのクライアント上に表示された様々な文字情報をプレイヤーが読み取り、その結果の文字列をブラウザ経由で当該サイトにキーボード入力する、という『手間』です。
ChatAnalyzerは、その『手間』を面倒くさいと思った友瀬が考えた、Windows上で動作するサポートアプリケーションです。
プレイヤーが ROクライアント上で『/savechat』とタイプすることで、それによって作られたチャットテキストから『アプリが必要な情報を読みだして調べる』ことを実現できます。
(そして、RO上で /savechat をショートカット登録しておけば、例えばRO上で「CTRL+0」とするだけでいろんな情報が取り出せるようになるわけです)
なにができるのか†
ROクライアント上で /savechat することで生成されるチャットファイルを解析して、以下のようなことを行えます。
- ゲーム内で獲得したアイテムの名称を取り出し、売却価格・重量などの情報をまとめてリスト的に表示できます。
- さらにそこから、外部サイト(Unitrix)の当該アイテムのページを開くことができます。
- しばしば実施されるWizardry的イベントで、ヒント文字列から罠の名前を導出できます。
- /where によって獲得した地図名を元に、そのマップ上にあるオブジェクトを登録・表示することができます。
- 討伐クエストのキルカウントを確認できます。
またその結果に基づいて討伐達成日を記録。これによって当該Enemyを倒した履歴を残すことができます。
- クエスト/MDの実施状況を記録・表示します。
また登録しておいた再挑戦可能ルールに従って「当該クエストを今日実施可能か否か(クールタイム中か否か)を判断・表示することができます。
▼アプリの扱いについての主張
▲アプリの扱いについての主張
ChatAnalyzer は、Windowsアプリケーションです。
ROクライアントからユーザ操作(/savechat)で作成されるテキストファイルの内容を解析することで、機能を実現しています。
つまり「ROクライアント標準機能で作成できる、人間が普通に読めるチャット保存テキストデータ」の内容を確認しているだけであり、下記のような「いわゆる不正」は行っていません。
- ROのプログラムそのものや通信データの解析・改ざんは行っていません。
- キャラクターの自動操作は行っていません。
- キャラを強くしたりZennyやアイテムを増やすような「データの不正改ざん」はしていません。
- チャットテキストを解析しているだけです。通常ユーザがクライアントから取得できない情報は、取得していません。
上記から、ガンホーが問題視している不正ツールには当たらないと主張しますが、最終的に判断するのはガンホーです。
ご利用にあたっては、上記をご理解の上、自己責任で。
参考:ガンホー公式「考え方」
http://ragnarokonline.gungho.jp/support/policy.html
「ラグナロクオンライン」は、お客様ご自身でマウス、キーボードを使ってキャラクターを操作しプレイするように作られていますが、キャラクターを自動で動かし、経験値を稼いだりアイテムやZenyを取得することができる「ツール」が出回っていることを確認しています。これらの不正ツールに対する取り組みについてご案内いたします。
▼セキュリティについての主張
▲セキュリティについての主張
このアプリケーションは基本的に、インストールされた環境単体で動作します。
本アプリ上では「利用者のキャラクター名」や「savechatで得られたログテキスト」という、個人情報を含みうる情報も扱いますが、これらは「アプリケーションがインストールされているPC」に保存しており、またこれらを外部に通信するメカニズムは持っていません。
インターネットへの通信を行うのは利用者が本アプリに実装されている特定の機能を使用したときで、次のケースだけです。
- 『アイテム価格』機能の画面において、外部サイト連携機能(右クリックから選択できるUnitrixや公式露店取引情報の参照)を使うと、ブラウザを起動して以下のサイトへアクセスします。
- RO公式が提供する「アイテム検索」Webツール。この際、「選択したアイテムの識別情報」を公式サイトに提供します。
- Unitrix でのアイテム検索。この際、アプリ上で指定している「利用者のサーバ名」および「選択したアイテムの識別情報」をUnitrixに提供します。
- 本アプリの『設定画面』のAboutタブにあるURLリンクをクリックすることによって、ブラウザを起動して本アプリの提供元( https://tomose.net/RO )に接続します。
- 本アプリの『設定画面』のAboutタブにある「バージョン確認」ボタンを押すことで、本アプリの提供元から次のようなデータを取得します。
- 本アプリ用のアイテム情報リストの最新バージョンの値
- (必要に応じて)最新のアイテムリスト
Special Thanks.†
- Roween http://roween.lies.jp
- アイテムの価格・重量情報はこちらから収集していました。
Roween様がクローズされてしまった以降では、公式ツールのアイテム検索から取得できる情報を利用していますが、こちらでは価格情報がないため重量を原則、友瀬が気づいた部分だけ価格を設定する、というような進め方とさせていただいています。
▼アイテム取得情報取得に関する補足
▲アイテム取得情報取得に関する補足
上述の通り、アイテム名と重量については公式ツールのアイテム検索機能を利用させていただいていますが、「一般利用者の環境から、このツール利用者の操作なしで公式ツールのAPIを直接使用することはありません。」
APIを使うのは、利用者が手動で呼び出したときのみです。
よって公式からコメントされているこちらのコメント・見解に対して反していないと主張します:このツールを使うことで、公式サーバに極端に負荷をかける可能性があるとすれば、利用者がリンク操作を連打したときくらいです。
アイテム情報は、友瀬が適時公式サイトを巡回して情報を追加、更新しています。
友瀬1名&秒間2回程度の速度x新規追加されているアイテム数のアクセスだけなので、その意味でも負荷は極小レベルと考えます。
# しかもその更新すら忘れて実施していなかったりするので (^^;
ダウンロード†
- ChatAnalyzer v0.183
- Ver0.183での変更点
- 初期画面>機能設定タブに「チャットログ退避」ボタンを新設。チャットフォルダの整理用の仕様です。
詳しくはWebページの説明を確認してください。
- いくつかの表において、複数セルの選択・コピーに対応しました。
単純なUndoのメカニズムはないので、他のセルに被るような貼り付けには注意してください。
- いくつかの表において、CTRL+↓/↑での空白セル検出を追加しました。
- バグ修正:クエスト待機状態画面で、新規のクエストを登録した際に優先度欄に「nochange」という値が勝手に入ってしまうバグを修正
- バグ修正:アイテムの価格情報を編集した際に適切な保存が行えていなかったバグを修正
- Ver0.182での変更点
- クエスト状況表示において、「お気に入り」的優先表示機能を追加
- 討伐カウント機能に対して、MVP討伐時にそのマップ名から「倒したMVP名を特定し、討伐カウントする」仕組みを追加しました。これにより、既存の「討伐の実施日時を記録する」機能と併用することでフィールドMVPの討伐も記録できるようになります。
- 討伐カウント機能に対して、ROチャットにて「討伐リセット」と発言・savechatすることでカウント内容をリセットする機能を追加しました。
討伐カウント機能画面にある[リセット]ボタンに類似ですが、内部ログ面でもこの発言以前のログを無視するため、リセット後にsavechatした際の討伐数カウントに悪影響を及ぼさないメリットがあります。
- 設定画面Aboutタブでの「バージョン確認」の対象範囲を拡張しました。アプリ自体のバージョン確認も追加しています。
- バグ修正:クエスト状況表示の自動リフレッシュ(朝5時&メンテ日正午)が動作していなかったバグを修正
- バグ修正:クエスト状況表示において、チャットログの発言からキャラ名を特定できた場合に、適切にキャラクター切り替えができていなかったバグを修正
- Ver0.181での変更点
- 「討伐確認の記録機能」において、次のような機能を追加しました。
- 登録済の討伐リストに対する、検索機能
- 登録済の討伐リストから、選択して討伐カウントを進める機能
(savechatを忘れたことに後から気づいたときなどを想定)
- 新機能:クエストの状態管理機能の追加。
詳細な使用方法については、Webサイトをご確認ください。
- Ver0.18での変更点
- <仕様追加>「討伐確認」機能において、新たに「完了した討伐の実施日時を記録する」機能を追加しました。
▼それ以前の変更
▲それ以前の変更
- Ver0.176 での変更点
- 「アイテム価格」ウィンドウの右クリックからアクセスする公式ツールのアイテム情報URLの仕様変更に対応しました。
- Ver0.175 での変更点
- 動作環境の変更。.net4.8 に移行しました。
- Roween の閉鎖に伴い、アイテム確認画面から Roweenへのリンクを削除しました
- 友瀬の配布サイトのドメイン変更への対応
- 動作中に基本画面がWindow外に移動してしまった場合に備えて、位置の自動調整をするようにしました。
- いくつかの操作にツールチップ形式のヘルプを追加しました。
- 地図情報表示Window の自動位置調整機能が正しく動いていなかった点を修正しました。
- 地図情報Windowを閉じた際に、罠判定Windowも連動して閉じてしまっていた点を修正しました。
- Ver0.174 での変更点
- アイテムIDが35000を越えるものも対象にしました。
- 地図情報をメモリアルダンジョンでも利用できるようにしました。
- Ver 0.173 での変更点
- 0.172で「死者の福音」を検出できていなかった問題の修正。
今回罠種類が増えたことによる検索ミスです。
- それ以前の修正
- 新規:討伐カウントの確認機能
- タスクトレイアイコン右クリック時の仕様追加:設定画面表示をサポート。従来のタスクトレイアイコンダブルクリックと同じふるまいです。
- 「僕のドキドキ冒険記IV」の新罠:『宇宙的恐怖』に対応。
- 「討伐カウント」ウィンドウを開いていない状態で/savechatするとエラーになっていた問題を修正。
導入手順†
▼導入手順(クリックして開く)
▲導入手順(クリックして開く)
準備1:ROクライアントの設定
ROクライアント上に、CAnalyzer との連携用のチャットウィンドウを作成する必要があります。
ROクライアントのチャット領域の右上のほうに小さな+アイコンがあります。これを押すと、新しいメッセージウィンドウが生成されます。

新しい窓には好きに名前をつけてかまいません(初期状態では Chat_NewTabxxx.txt のような感じのはず。以下実施例の画像では「CA連携」という名前に変更しています)
さらに、このウィンドウの右上の◎をクリックしてウィンドウ表示情報を開き次のメッセージをOn状態にしてください
- アイテム獲得メッセージ
- 一般メッセージ
- 会話メッセージ
- 装備の装着/解除のメッセージ
- クエストメッセージ

補足
正確には、この「専用ウィンドウ」を作る必要はなく、既存ウィンドウでも構いません。
ただし、友瀬の提供しているホムAI「Glenelg」を使用している場合は、そちらで指定しているチャットウィンドウは使用しないでください。 Glenelgは動作上、このチャットファイルを監視しているため、ChatAnalyzerと互いに干渉してしまいます。
準備2:連携する chatファイルの確認
RO クライアント画面で、/savechat を実施してください。 ファイルエクスプローラーを開いて、チャットファイルのあるフォルダ (人によりますが、Gravity\RO\chat というような場所)を見てください。 そこに、準備1で作成したウィンドウの名前がついたテキストファイルが できていることを確認してください。
例:NewTab_2 というウィンドウを作っていたら、Chat_NewTab_2.txt というファイルがあるはずです。
準備3:CAnalyzeの起動と設定
ダウンロードした zip を解凍し、任意のフォルダにおいてください。
解凍フォルダにある CAnalyze.exe を実行してください(現代のWindowsでは安全でないアプリというような警告がでるかもしれませんが、許可してください。これが不安なら本アプリを利用しないほうが賢明です)
以下のような画面が表示されます。

準備4:ChatAnalyzerの監視対象を指定する
「機能設定」タブを開くと、そこに「パス指定」という欄があります。
[設定]ボタンを押して、準備2で確認したファイルをフルパスで指定してしてください。

以上で準備は完了です。右上の×を押して起動画面を閉じてください。
ChatAnalyzer はこれでは終了しません:タスクトレイに常駐します。

『タスクトレイのアイコンをダブルクリック』、または『タスクトレイのアイコンを右クリックして出るメニューで、設定を選択』すると、再度「初期画面」を表示することができます。
タスクトレイのアイコンを右クリックして出るメニューで、監視対象の選択および ChatAnalyzer自体の終了を行えます。

▼導入設定(Want項目)
▲導入設定(Want項目)
ここにある内容は実施しなくてもかまいませんが、その場合CAの一部機能が有効に使用できません。
できれば設定することをお勧めします。
個人設定画面
『タスクトレイのアイコンをダブルクリック』、または『タスクトレイのアイコンを右クリックして出るメニューで、設定を選択』し、「初期画面」を表示してください。
そして初期画面上にある「個人設定」タブから、設定を行えます。

- サーバ
- あなたが利用しているサーバを選択・設定してください。
これを行わないと、Unitrix連携がうまく行えません。
- キャラクター名
- あなたが使用しているキャラクター名を設定してください。
これを行わないと、キャラクターの発言を元に動作する以下列挙する機能が使用できません。
- 切り取り線関連:「同じ文字4文字以上」での切り取り線に必要な設定です。
- 地図関連:チャット画面からの「座標登録」および「座標一時登録」に必要な設定です。
- 討伐確認での「発言経由での討伐カウント」
- クエスト期限管理
- 登録用のテキストボックスにキャラクター名を入れ、[入力]ボタンを押すことで登録できます。
- リストにあるキャラを選択して[削除]ボタンで、選んだ枠の名前を削除できます。
- [chat]ボタンは、クライアント上での /savechat で取得するテキストからキャラ名を検索・登録する機能です。
次のような手順を踏むことで、直接入力しなくて名前を登録することができます。
- 前提:「アイテム確認」や「罠確認」画面を開いていることが必要条件です。
- 手順1:まずROクライアント上で「CA」(半角小文字で2文字)を発言した後、/savechat してください。
- 手順2:上記発言がROクライアント上で表示された後、ChatAnalyzerの[chat]ボタンを押すことで、その内容から解析・登録を試みます。
- 仕組み上、同じ画面内で「CA」と発言したキャラが他にもいた場合、それも登録されてしまいます。
必要に応じて [削除] を利用してください。
地図情報設定
運用のサポート機能†
▼チャットログ退避
▲チャットログ退避
- 前提:Windowsの仕様上、1つのフォルダに大量のファイルがあると、そのフォルダ内のファイルへのアクセス時間が遅くなってしまいます。
本アプリは「ROの /savechat機能」で作られるログファイルを参照するため、そのチャットが置かれるフォルダ内のファイル数が増えるとこのWindowsの仕様による影響で動作が遅くなってしまいます。
- この「ファイル数による動作の重さ」への対処方法として、本アプリでは「チャットログ退避」を提供しています。
- 本アプリでは、ROクライアントで/savechatすると、生成されたファイルを読み込んで解析処理を行います。
この際、その処理のためROクライアント上の動作が一瞬止まります・・・が、チャットフォルダのファイル数が増えてくると、その「一瞬」がだんだん長くなっていきます。
その動作が長くなったと感じたならば、設定画面の機能設定タブにある「チャットログ退避」ボタンを押してください。
これによって、チャットフォルダ内に「backupyyyymmdd」形式のフォルダを作成&既存のログファイルをそのフォルダに移動します。これによって、チャットフォルダ内のファイル数が減り、動作が軽くなります。
機能説明:アイテム価格†
タスクトレイアイコンを右クリックして「アイテム価格」を選ぶことで、この機能の有効・無効を変更できます。
機能を有効にすると、アイテム価格の管理ウィンドウが開きます。
RO クライアントで /savechat とすると、それによって生成されたチャットテキストファイルに含まれる
『xxxxx 1個 獲得』
というようなメッセージを解析し、アイテムのリストを表示します。

- 「集計」には、表示されている全アイテムをNPC売却したときの価格が表示されます。
- 「選択」には、選択されている「小計」列の合計が表示されます。
- 全ての行の小計列を選択すれば、「集計」と同じ値になります。
- 表示後、「折り畳み」で価格のない行の表示を取りやめます。
- アイテム名をクリックすると、ブラウザを起動して対応する Roween サイトを表示します。
- アイテム「OC10価格」欄をクリックすると、ブラウザを起動して対応する Unitrix サイトを表示します。
- 任意にセルを選択したうえで右クリックで「履歴保存」が行えます。
- 選択された行のチャット履歴を保存する機能です。
exeファイルを入れたフォルダの下に history フォルダを作って保存します。
▼切り取り線設定
▲切り取り線設定
アイテム一覧には「/savechat時点でROクライアントが持っている==出力されるログ中のすべてのアイテム」がリスト化されます。そのため、何度か /savechat をすると「すでに一度見た」アイテムが表示されてしまいます。
これを避ける手段として、CAでは「切り取り線」という機能をもっています。これは保存されるチャット出力にある「特定の内容」を元に、それよりも古い部分を捨て・表示しない機能です。
この「特定の内容」の条件は、初期画面上の「切取線」タブで設定できます:ユーザのROクライアント上でのなんらかの操作に対応しています。

以下の通り、いくつかの方法をサポートしています。
- 「衣装の装備」
- チャットウィンドウに出力される
『[衣装]xxxを装備しました』という文字列をトリガーに、それよりも古い行を無視します。
つまり、ユーザがRO上で「衣装を装備(変更)する」ことで、切り取り線を作ることができます。
- これを利用するためには、ROクライアント側で「装備の装着/解除メッセージ」を対象にする必要があります。
- 「チャットで同文字4つ」
- チャットウィンドウに表示される、キャラクターの発言テキストを対象にします。
具体的には、ROクライアント上で
Vice.Chaos : aaaa
というように、「同じ文字を4文字以上連続発言」することで、そこを切り取り線にすることができます。
- これを利用するためには、ROクライアント側で「会話メッセージ」を対象にする必要があります。
- さらに、事前設定として「キャラクター名」登録が必要です。
- 「対象アイテムの獲得」
- 指定した特定アイテムの獲得をトリガーにします。
例えば「ゼロピー」を指定しておけば、それを「(落として)拾う」「カートや倉庫(に入れて)から出す」といった操作を切り取り線とできるのです。
- そのメカニズム上、「よく入手する」アイテムを設定するのはお勧めできません。
「大した価値はないが比較的珍しい」モノを使うのがいいでしょう。
例えば「タヌキの葉」は落とす敵が限定的かつあまり狩られないので、それを1つだけ持っておくのはいい手だと思います。
また「初心者用赤ポーション」なども、ベテランキャラにとっては便利かもしれません。
- 対象アイテムは、そのまま文字列で指定すること。
- 「以前の savechat」
- savechat したときに発生する「C:\Gravity\Ragnarok\Chat\Chat_一般.txt is Saved.」というような行を切り取り線として利用します。
- この設定だけは、他の(上述の)3種類と並列設定することができます。
- これを利用するためには、ROクライアント側で「一般メッセージ」を対象にする必要があります。
機能説明:罠判定†
タスクトレイアイコンを右クリックして「罠判定」を選ぶことで、この機能の有効・無効を変更できます。
機能を有効にすると、罠判定のウィンドウが開きます。

RO クライアントで /savechat とすると、その時点でROクライアントのテキスト欄に出力されている以下のような「ヒント文字列」を探し・解析して、その状態から予想される罠の名前を右側に表示します(特定できない場合は複数の候補が表示されます)。
モンスターを全滅させた。宝箱が出現した
……[ん]……?
……[のゆ]……?
機能説明:討伐数確認†
タスクトレイアイコンを右クリックして「討伐確認」を選ぶことで、この機能の有効・無効を変更できます。
機能を有効にすると、討伐数確認のウィンドウが開きます。
この機能を使うためには、連携用チャットで「クエストメッセージ」をOnにしてください。
- RO クライアントで /savechat とすると、ROクライアントのテキスト欄に出力されている討伐数カウントを検索し、対象ごとに個別の値を表示します。討伐未完了の場合は「背景赤」に、討伐完了していると「済」表示となります。

- ROクライアント上で『討伐リセット』と発言後に/savechat すると、討伐状況に表示されている内容をすべて消去し、またこの発言以前の討伐をカウントから除外します。
討伐状況画面の項目数が多すぎて見づらい場合に利用することを推奨します。
- 現在使っているキャラを切り替えたとき、[リセット]ボタンを押してください(キャラごとにクエストの実施状態が異なるので、それをCAに伝える手段です)
▼討伐結果記録機能
▲討伐結果記録機能
討伐数確認ウィンドウ上で「済」となった討伐が発生したら、その討伐の対象モンスターの名称を討伐した時刻を専用のテキストファイルにします。
後日そのテキストファイルを見ることで、当該の敵を通算何体倒したのかなどの情報収集に使うことを意図しています。
この機能は初期状態ではOffになっています。必要に応じて設定タブで設定してください。

- ■討伐数を記録
- これをチェックすることで、記録機能が動作します。ただしこの設定だけでは理想的な動作はしないと思います:『■記録対象』および『■リスト機能』を併用設定してください。
- ■記録対象
- これの選択状況に応じて、何を記録に残すかを選択します。
- 「全ての討伐」を選んだ場合、討伐数確認ウィンドウで「済」となった討伐がすべて記録対象となります。
- 「単体討伐」を選んだ場合、討伐数確認ウィンドウの「目標列の値が 1」の討伐が対象になります。
1体討伐するだけで完了するクエスト」だけが記録対象となるので、実質的にMDボスなどの討伐回数の記録用です。
- 「登録済対象」を選んだ場合、右側の「■リスト登録」に記載した敵だけが記録対象となります。
- ■リスト登録
- 前述の通り「登録済対象」を選択したとき用の設定で、カウントしたい敵の名前を登録できます。
- 上段にあるテキストボックスに敵の名称を入力してから[追加]ボタンを押すと、その下のリストボックスに名前が追加されます。
- リストボックスにある名前をクリック選択した後[削除]ボタンを押すと、それをリストから外すことができます。
以上の設定をした状態では、討伐状況ウィンドウでなんらかのクエストが「済」となったとき(かつそれが設定している条件にマッチすれば)、ログとして残されます。
ログは、ChatAnalyzerアプリのあるディレクトリの下にある「questcount」ディレクトリ内に、その保存されます。
ログファイルの名称は『<討伐対象の敵の名前>.txt』です。
ログはテキスト形式で、討伐が「済」になったタイミングで「その時点での日時情報」を1行追加します。つまり、ファイルをエディタなどで開いて「その総行数」を数えれば、通算での討伐回数がわかることになります。
討伐クエストに対応していないMVPのカウント方法(/where を用いた討伐宣言)
討伐数確認機能では、クエストに対応した討伐しかカウントできません。
ただし、MVPモンスターを倒したメッセージ:『おめでとうございます、MVPです!!』が表示されたとき、ROクライアント上で『/where』→『/savechat』とすることで、そのマップ名から「倒したMVP名を特定し討伐カウントとして扱う」ことができます。その結果、結果記録機能でログを残すことができます。
- ただし、マップ名からMVPを特定できない場合にはこの機能は動作しません。例えば時計塔地下2Fには「オークロード」と「オークジェネラル」という2種類のMVPがいるため、この機能では特定できません。このようなケースでは、次の「手動での討伐宣言」をご利用ください
- また、本ツールに登録されていないMVPも存在します。必要に応じて「MVP情報」タブに情報を追加してください。

討伐クエストに対応していない敵のカウント方法(手動での討伐宣言)
討伐数確認機能では、クエストに対応した討伐しかカウントできません。
ただし、次のフォーマットで発言する(そしてそのあと savechat する)ことで、それを「単体の敵討伐クエスト」として判断、結果記録機能でログを残すことができます。
討伐:<敵名称>
これを実施するには別途『個人設定画面>キャラクター名』で、その発言をするキャラクターの名前を登録しておく必要があります。
これによって指定したものは「手動登録」というクエストがあるかのように解釈されます。
実際に友瀬が『討伐:CUTIE』と発言した場合、このようになっています。

機能説明:地図情報†
こちらを参照してください。→地図情報詳細
機能説明:クエスト期限管理†
こちらを参照してください。→クエスト期限管理詳細