やりたいこと。†
いわゆる「フラグ」的な行為を実施したら /savechat して、その「最後に実施した時刻」を記録。
それ以降、現在時刻と「最後に実施した時刻」とを比較して、十分な時間がたったら「プレイ可能」的な表示を出す。
そんなかたちにしておきたい。
ぶっちゃけ、これも先日からの「討伐回数記録」と同じ『簡単にやりたい』というのが背景。
頭使わずに「Excel的なものを使ってそっちでボタン押す/テキスト編集する」というやり方は十分可能なんですが、それって存外面倒なんですよ。
課題その1:「どのキャラで?」†
これを指定しないと、当然わからない。
実現はそこそこ容易:クライアント上で発言→savechatすれば、ログ上先頭にキャラ名が入る。
これに基づいて「どのキャラがログインしているのか」をアプリで拾える。
これを忘れるとうまく動かないといえば動かないので・・・
アプリ側でも、キャラ名を表示して「今だれの状況を表示しているのか」を示す必要はあると思う。
また、これは1回設定すればキャラ変更するまでは切り替える必要もないので、savechatでなくてアプリ側でやってもいいような気はする。
課題その2:「何を・いつを」実施可能の判断材料にするのか。†
「デイリー」的なモノには何種類かあり、いくつかは対処できそうだけど、ダメそうなものもある、というような状況。
課題その2-1:MD系統†
そのMDは「デイリー/3日ごと/1週間ごと・・・」といった、特定の条件でのみ利用できる、という系統。
これについては、おおよそ解決している:MDに入った際にクエストログに次のような感じのものがでるので、これをトリガーにすればよい。
メモリアルダンジョン[xxxxx] に入場しました : PT名称 (キャラ名)
MDは実は「作ったけど入らなかった」ならカウントが進まないという仕様になっています。
例えばデイリーMDを作って入らないまま時間が経って「不在時間でMD消滅」となった場合、同じ日に改めてMD作成をやりなおせます。
逆に言えば、一度入ってしまうと次の作成には条件を満たさないとMD作成ができなくなる。
これを踏まえても「入った」タイミングで実施日を確定できる。
1点だけ難点というか追加の課題がある:「変なPT名」問題。
前提として、前述の「xxxに入場しました」というログは、実は「自分以外の、まったく別のPT」が同じMDに入ったときにも出力されている。
そのためこの入場ログは無条件には受け入れず、このログにあるキャラ名も踏まえて判断しなければならない。
で。ROの仕様上、このPT名に # だったかな?なんか特殊文字をいれておくと、次のような感じでログにPT名・キャラ名がはいらない。
メモリアルダンジョン[Cursed Knight] に入場しました :
他の人のPTなら「該当しないから」と捨てればいいですが。自分のPTがこの状態だと、当然「自分が入った」というログが拾えないのでカウントできないということ。
課題その2-2:討伐を伴うミッション†
NPCから討伐ミッション受注→討伐実施→NPCに報告・・・とするタイプ。
いくつかのミッションでは最初の「受注」がなく、一度報告すると自動的に次を受注できるものもある。
キーとなるのは「最後に報告をしたのがいつか」:その報告を行ったことをトリガーに、次の受注可能タイミングが変わる。
そのためその最後の「報告」を拾いたい。
で、このタイプは次の課題2-3と干渉するのがネック。
この2-2単体なら問題ないんです:討伐を伴うクエストでは、その討伐に対応した「クエスト名」が作られており、それがログ上に残る。
具体的には、該当敵を倒すたびに
[深淵の孤独]クエストの [ドローリアン]モンスターを倒しました。(10/10)
・・・というように「どのクエストで」「どの敵を」倒したかのログがあり。
報告すると
深淵の孤独 クエストが削除されました。
・・・というように、「どのクエストが終わったのか」を拾える。
問題は、このログだけだと次の2-3と区別がつかない、ってことなんだよね・・・
課題その2-3:討伐を伴わないミッション†
NPCから受注→討伐以外での作業→NPCに報告、とするタイプ。
結論から言うと、これが対応できなさそう。
具体的な事例でいうと、データバックアップ :ウェルス発掘地4Fのマップ内にいるNPCに話しかけてこい、というクエスト。
前述の「討伐を伴うミッション」と同様、NPC報告時のタイミングを拾いたいのだが、これがログから読み取れない。
討伐タイプと同じように、報告時には次のようなログが出力はされてはいる。
データバックアップ クエストが削除されました。
問題は、これとまったく同じログが「マップ内のNPCと会話」した際にも出力されている、ということ。
論理的に言えば、討伐型と対比するように書くならば『[データバックアップ]クエストの [NPC]会話を実施しました(1/1)』的な意味合いの出力があるのですが、これが「完了時の出力」と区別できないかたちになっている。
さて、どうしたものか・・・
先の「討伐回数記録」と同様に、例えば『済:データバックアップ』とか発言→savechat、とかすれば拾えないこともないけど。
この文字列入力がハードル高すぎるんですよね:文字数の問題に加えて、MVPなどの敵名称と違って「クエスト名」となると直感的ではないためいきなりハードル上がるので。
MDだけでも管理できると楽っちゃ言えば楽なんで、とりあえずそれだけでも対応するかなぁ・・・
ご意見などがあれば。
話の背景†
出発点は『MVPボスxxxxを何万体倒してるけどカード引けてない』みたいな話から。
『よくその数カウントしてるよね』とか『その手間かけて出ないと折れそうだし』とか、まあいろんな話があったわけです。
で、友瀬的には、ですね。
自分はROではそういうカウントは現状していないんですが、友人たちと遊んでいる某ブラウザゲームではガチャの統計とか取ってまして。
自分の運についてはある程度あきらめがついているんで(笑)、どっちかというとその『記録の手間』のほうが気になったんです。
試しに記録してもいいけど、Excelとかだと絶対面倒でやめちゃうだろうな~、と。
で、ふと思いついたんですが。
ChatAnalyzerの既存機能で『討伐クエストの実施状況』は、/savechat 1発で確認できるようにしているわけです。
で、例えば最近回している『魔神殿』では、MDボス自体の討伐がクエストとしてカウントされている。
ということは、/savechatで「モロク討伐(1/1」のチャットログを検出できたら。
それをトリガーに別ファイルで「モロク討伐1回実施」とカウントする。
そういう仕組みを作っておけば、討伐ごとに /savechatするだけで履歴とれるな、と思いついたわけです。
ただ、難点。†
この方法、最大の問題はあくまで『討伐クエストカウント』を利用している、ということ。
つまり、討伐クエストがないタイプのボスとかには、素直には適用できないわけです。
当たり前ではあるんですが、これは結構重要な問題でして・・・
そのあたりを踏まえた実装仕様†
以下のような形で、すでに実装済み。
今はこれで試行を進めているような状況です。
討伐クエストがある敵については、基本前述通りです。
記録を望まない人もいると思うので、記録する・しないのスイッチ付き。
記録する場合、なにを==どの敵の討伐を記録対象にするのかは、選択可能。
記録したい敵の名前を登録できるようにしてある。
登録は「文字列で入力」と、討伐カウントしたリストを「右クリック→登録選択」でもできるように。
登録が面倒くさい人向けに、「討伐クエ全部」を記録するスイッチも準備してある。
記録はそれ用にディレクトリに「<敵名称>.txt」のかたちで保存。
内容は「/savechatした日時」を1行だけ追加する。
テキストエディタとかでそれを開いて、行数をみれば「何回討伐した」かがわかる。
日時情報なので、Excel使えばグラフとかも作れるんじゃないかと。
討伐クエストがない敵については、もうワンクッション手順を踏む必要あり。
討伐したら、自分でチャット欄に『討伐:<敵名称>』のフォーマットで発言したあと /savechat、とする。
これによって、その敵名称を対象としたクエストと同じような感じで処理する。
自分以外の発言からカウントしちゃうとアレなんで、発言キャラの名前登録は別途必須。
これは他の機能でも求めてるので、まあ。
他にも細かい動作はちょこちょこある:1回の討伐で複数回登録しないようにちょこちょこ手をうつとか。
ともあれ、これでうまくいくかはしばらく試してみてから、ですね。
そんな感じ。
ご意見などがあれば。