UO.からふるlife

累積ダメージを表示させる(UIモジュール)

カスタムUIの公開に伴い、UIモジュール単体での配布を終了しました。
本UIモジュールは更新を行った上でカスタムUIに含まれていますのでそちらをご利用ください
※ カスタムUI(ClifeUI)に含まれているModでは、このページの内容と一部異なります。
また、Mod導入に伴うファイルの追加等も不要です。

累積ダメージを表示するUIモジュールを作ってみた

Pinco’s UIではそういう機能があるそうなんですが、標準UIには無いですよね?

標準UIのソースにもダメージの累計を保持する為の処理があったのだけど、それを有効にする方法を追い切れなかった(面倒くさくなって途中でやめた)ので、累積ダメージ等を表示するUIモジュール(以下、Mod)を作ってみた。

ちなみにこのMod本体だけでは動かなくて、他にフォントの追加などが必要なので、ご利用の場合は後述の「必要なファイル等」も併せてご覧ください。

実際に動かすとこんな感じ

ロケ地:シェイム Lv.1
※ シェイムLv.1で累積ダメージ表示とか必要ないだろ、ってツッコミは無しでお願いします・・・。

見たまんまですが、右上がこのModの設定画面兼累積ダメージ表示画面(以下、Mod画面)、右下が普通のチャットログ画面です。
Mod画面のダメージ表示の並び順は、新しくダメージが発生した対象の順になります。

Mod画面の表示更新は0.8秒~5秒(ダメージの更新が無い場合)ごと、
チャットログへはダメージが発生するたびに随時出力されます。

初撃からの経過時間やDPSも表示していますが、時刻を秒単位でしか取得していないので、目安程度に見てください。。。(コンマ以下秒を計算しないので、特にHPが低い敵に対して経過時間やDPSに実際との差が大きくなりやすいです)

経過時間の誤差について詳しく。

時刻取得の最小単位が一桁秒なので、例えば、
・初撃: 9時 0分 1.00秒
・最終: 9時 0分 2.99秒
の場合、実際は 1.99秒間でも、Mod上では 9時0分1秒~0分2秒の 1秒間として表示・計算され、
・初撃: 9時 0分 0.99秒
・最終: 9時 0分 3.00秒
の場合、実際は 2.01秒間でも、Mod上では 9時0分0秒~0分3秒の 3秒間として表示・計算されます。

上記の様に、実際には0.02秒しか違わない物が2秒も違って計算される場合もあるので、倒しきるまでに時間が掛からない対象だと、経過時間のズレが割合的に大きくなり、結果的にDPSもズレが大きくなります。

Modの使い方

カスタムUIの公開に伴い、UIモジュール単体での配布を終了しました。
本UIモジュールは更新を行った上でカスタムUIに含まれていますのでそちらをご利用ください

Modのインストール方法については「当サイトで公開しているUIモジュールやマクロ等について」ページの「UIモジュールの使用方法」をご覧ください。

同時に、他に必要なファイルもインストールしてください。
詳しくは後述の「必要なファイル等」をご覧ください。

カスタムUIのダウンロード・導入方法についてはこちらのページをご覧ください。

インストールしてSAクライアントを起動すると下の様な画面が表示されます。

この画面が、このModの設定画面兼累積ダメージ表示画面です。
与ダメージが発生するとMod画面に最大10件までの対象の累積ダメージ等を表示します。(2未満のダメージは累積や攻撃回数に反映しません)
(ホントは設定なんかはポップアップ表示などにした方が良いんだろうけど、とりあえず使えれば良いって感じなので・・・。ご利用くださる方が増えて要望も出てくるようなら考えようかと ^^;)

ちょっとウィンドウが大きいので、普段は閉じておくか、Mod画面タイトルバーを右クリックでタイトルバーだけにしておくのが良いかもです。(どちらの状態でも下記設定の通りに動きます)

Modの設定項目

Mod画面下部にあるチェックボックスで各設定の切り替えを行います。

各機能はOFFにしておくと(当然ですが)負荷が下がる方向になりますので、動作が重く感じる時はMod画面を閉じる・不要な機能はOFFにするのをお勧めします。

Mod画面の再表示

上記設定とMod画面の状態はキャラごとに保存され、再ログイン時にも反映されます。
非表示にしてあるMod画面を再度表示するには下記のコマンドを実行してください。

または /script ClfDamageMod.toggleWindow() と発言(チャット画面で入力)でもOKです。

ダメージログについて

ログファイル出力を有効に設定した時に、SAクライアントをインストールしたフォルダ内にある “logs” フォルダの中に “damage” フォルダを作成しておくと、そのフォルダ内にdamages.{年月日}-{時分秒}.{ランダムな4文字}.txtといった名前のログファイルが作成されます。(ログイン、または、UIのリロードをするたびに新しい名前のファイルに出力します)

ファイルのエンコードは UTF-16LE ですが、半角英数(と一部記号)しか出力されないはずなので、見るだけなら大抵のテキストエディタで問題なく表示出来ると思います。

ログファイルには下記の様な情報が出力されます。

========== 15 [ 13:21:00 -> 13:21:15 ] ==========
a cave troll the wall guardian [15903426]
	
	Total Damage: 943
	Damage/sec: 62.87
	Damage/hit: 85.73
	Max Damage: 100
	Hit: 11
	Sec: 0:15
	Health: 0%
	
	Pet: Reptarou

見て分かるとおりですが一応説明すると、
通し番号[初撃時刻(JST) -> 最新与ダメ時刻(JST)]、対象の名前、累積ダメージ、DPS、平均ダメージ(ダメージ発生回数あたり)、最大ダメージ、ダメージ発生回数、初撃から最新与ダメまでの経過時間(分:秒)、残HP(パーセント)、あとペットを連れている場合はそのペットの名前(騎乗中も含む)、になっています。
※ 残HPのパーセントは4刻みなので、0%になっていても対象が死んでいない場合があります。また、対象のHP情報が取得出来なかった場合(死んでいる、遠くにいるなどの場合)は---となります。

出力されたログが即座にファイルに反映されていない様に見える場合があります。そういった場合にはファイルを一旦閉じてから開き直すと反映される事が多いです。

必要なファイル等

カスタムUIのダウンロード・導入方法についてはこちらのページをご覧ください。

追加フォント

Mod画面で使用しているフォントを追加する必要があります。
フォントの追加方法は「SAクライアントにフォントを追加する」ページをご覧ください。

フォルダの作成

SAクライアントをインストールしたフォルダ内にある “logs” フォルダの中に “damage” フォルダを作成してください。
ダメージのログファイルを書き出すために必要なフォルダになります。
(フォルダを作成しなくてもModは動作しますが、ログファイルは出力されません)

最後に

色々と説明が足りないかと思いますので、不明点などあればお気軽にコメントにてどうぞ。

全く動かない、何かのタイミングで動かなくなる、などの場合は、上記「必要なファイル等」をご確認いただいた上で、ご利用の環境(※標準UIでの使用が前提のModです)や、前後の行動など、分かる範囲でもお書き添えいただくと解決に近づきやすいかもしれません。