2007年08月01日

レーサー集計 ver1.14のばぐ。

・timetable.cgiの実行エラー
・Rocha!!形式ログ処理バグ
・fort.txt仕様

今回のコメントレスは個人的メモも兼ねて日記の方にさせていただきます。

■フッターのこちら↓

こちらで実際に出力させた時はちゃんと表示されていました。

■ギルド名に#が複数ある場合

A: 「レーサーギルド##」→『レーサーギルド\n\n』
B: 「#レーサー#ギルド#」→『\nレーサー\nギルド\n』

これをRoCha!!などで正確に記録したログファイルの中身を見ると…
以下の通りに記録されるようです。

A:
砦 [Valkyrie Realms 3]を [レーサーギルド(改行その1)
(改行その2)
] ギルドが占領しました

B:
砦 [Valkyrie Realms 3]を [(改行その1)
レーサー(改行その2)
ギルド(改行その3)
] ギルドが占領しました

”砦 []〜[]ギルドが占領しました”からなる複数行を
1つの行に再構成してから処理しないといけないようです。
(今までは改行1回でアナウンス1回と考えて設計したため。)

ここの処理はgvglib/log.rb log_read_rocha(path)関数で
全て行われています。
この関数の中身を変更するだけで多分okです。
実際の修正はもう少しおまちください。
複数行にわたって処理を記憶させる方法がちょっと思いつかないので…。

・まとめ
ろ++だとログには改行1個までしか記録できないみたい。
ログの正確性ではrochaの方が優れているようです。

■fort.txt
・フォーマット
攻城速報@ろらじおのfort.txtと、レーサー集計の
fortlist_YYYYMMDD.txtは、完全互換です。
したがって、レーサー集計を実行させて作成させることが出来ます。
実はこれがなくても動くようになっています。
その場合は前回の結果が反映されなくなりますが…。

・作成方法
前回のログをracer.rbに読み込ませて実行
→WORLD/log/fortlist_YYYYMMDD.txtとして作成される
WORLD: フォルダ名(ワールド名)
YYYYMMDD: 年月日。前回(スクリプトを走らせた日から見て1週間前)
が自動指定される。

・自動実行
パスを指定していれば、毎回の攻城戦終了or開始前に
設定済みのracer.rbをバッチファイルで起動するだけで
準備完了します。Windows系OSならタスクスケジューラに
そのバッチファイルを入れて自動実行させると楽ですね。
posted by silica at 19:05| Comment(9) | TrackBack(0) | 攻城戦 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
フッターの件はver1.14と新timetable.cgiの組み合わせで依然表示されないのですが、まぁ表示されなくても機能的には問題ないので・・・。尚、総占領回数と各砦平均保持時間までは表示されています。
Posted by at 2007年08月01日 20:41
ソース確認した結果、一番最後のhtml_footer()でエラーが出てるっぽいですね。
…html.rbの変数名を間違ってたというオチでした。

http://winter.sgv417.jp/script/download/html.rb
これを元のファイルと入れ替えれば多分なおります。
Posted by 冬物語の人 at 2007年08月01日 21:29
fortを出力するためのracer.rbバッチファイルの見本を書いて貰えますでしょうか。わからなかったのでまぁいいかと思ってましたが、攻城速報@ろらじおは改行2個のログを手直し無しでは読み込めないようで面倒だなと。

この前「ろ++だとログには改行1個までしか記録できないみたい。」と言ってしまいましたがろ++の過去ログを読み返してみるとそれは間違いだと判明しました。
改行1個のギルド名だとログには以下のように記入され、
GM 20:06:01 砦 [Valkyrie Realms 3]を [レーサーギルド#] ギルドが占領しました

改行2個だと以下のよう。
GM 20:06:01 砦 [Valkyrie Realms 3]を [レーサーギルド
] ギルドが占領しました

ろ++でも改行2個に対応出来るようです。誤情報すみませんでした。
Posted by at 2007年08月04日 01:37
よろしければ、ワールド名とろ++またはRocha!!でのログファイル名を教えてください。

ファイルの年月日記述が各ツールでバラバラでそれを知らないことにはファイル名を自動設定できないからです。

たとえばレーサー集計は以下の形で統一しています。
ログフォーマット名_年(4桁)月(2桁)日(2桁).txt

それと、作成されるログの場所は以下の場所でよろしいのでしょうか?これならろ++っぽいですね。
D:/RagnarokOnline/ropp_beta2/log/

以上の情報がわかれば、ログを自動でコピーしてそれを集計するスクリプト&バッチを作ります。
ワールド名は書きたくなければlydiaのまま設定するので、それを希望ワールドに全て置き換えておいてください。
Posted by 冬物語の人 at 2007年08月04日 11:40
それと、ろ++のその形式ですと
改行1個は元の#のまま記録され、改行2個は改行1個になって改行されて記録されるように読み取れますが、あってますでしょうか?
(もしこれなら「#」3個のギルド名で改行3個発行の場合どう記録されるか知りたいですね。)
Posted by at 2007年08月04日 11:44
ろ++
2007_07_29.txt
D:/RagnarokOnline/ropp_beta2/log/
です。お手数おかけします。

キャラクエ見てて改行コードについて自分の認識が間違っていたと気づきました。ドタバタしてしまって本当に申し訳ありません。
改行コードに2種類あるとは知りませんでした。ギルド名に#を入れるのと制御文字を使う方法があったのですね。両方とも内部的には同じものだと思っていたので「<<#0x0d>><<#0x0a>>」は#が2個付いていると重過失ものの勘違いをしてしまいました。またキャラクエで全鯖を対象に改行コード2連続が存在するのか調べましたら、saraに1つheimdalにも1つとほぼ存在しないと言っても過言ではないような状況でした。ちなみにheimdalは2007/01/21の結果より改行コードを手動でレーサーギルド[\n][\n][\n]としているようです。

で結局バグはどうだったのかというと、以前お伝えしましたrochaの件はたしかに存在するバグだと思います。制御文字の「改行1つ」でログが下記のように2段階も下がるのは謎ですが。

2007 07/29 20:44:13 砦 [Valkyrie Realms 3]を [レーサーギルド

] ギルドが占領しました

ちなみにこのギルドはキャラクエで
レーサーギルド<<#0x0d>><<#0x0a>>のように登録されています。

ろ++の件は、↓これは改行コードが#だからそのままログとして書かれ、
GM 20:06:01 砦 [Valkyrie Realms 3]を [レーサーギルド#] ギルドが占領しました

↓こちらは制御文字<<#0x0d>><<#0x0a>>の場合にこう書かれるということになるようです。
GM 20:06:01 砦 [Valkyrie Realms 3]を [レーサーギルド
] ギルドが占領しました

重ね重ねのミスで申し訳ありませんでした。
Posted by at 2007年08月04日 14:41
全ワールド調査お疲れさまです;
改行複数は、今では本当に数例しかない例外なのですね・・・。

もし、ろ++とRocha!!両方で記録したファイルがありましたら、頂けないでしょうか。
ログ変換の時、どのように入力されてるかデバッグするのにあれば助かる程度ですけれど。

http://future.sgv417.jp/upload/
アップローダーが必要でしたらここを一時的に使ってください。
落とし終わったら消していいです。

肝心の改行対策はまだですがそれ以外(fort.txtなど)はできたのでアップします。
http://winter.sgv417.jp/script/download/racer_patch.zip

砦取得現況表と、それに必要なファイルを自動作成・実行可能にしました。
必要なファイル作成例はsample/world.rb and world.batにあります。
今回の修正は主にパス設定などをわかりやすく直しました。
(自分自身、わかりづらかったので_| ̄|○)

以後は1.15予定:

・砦取得現況表(timetable.cgi)を正式サポート
・world.rb/world.bat追加(sample/)
・ドキュメントの攻城戦ログに特殊文字解説を追加(作業中)
・ろ++やRoCha!!のログ中に含まれる特殊文字に対応(現時点では未対応)

文字コード「<<#0x0d>><<#0x0a>>」に関しては以下に書いてありました。
http://www.st.rim.or.jp/~phinloda/cqa/cqa9.html
http://www.wdic.org/w/WDIC/CRLF

結論から言えば「<<#0x0d>><<#0x0a>>」=「\r\n」と言うことのようです。
Posted by 冬物語の人 at 2007年08月04日 23:41
rochaの改行コード#のログが無いので両方のサンプルがある<<#0x0d>><<#0x0a>>のログを挙げます。
ropp
http://future.sgv417.jp/upload/log/024.txt

rocha
http://future.sgv417.jp/upload/log/025.txt
Posted by at 2007年08月05日 01:43
ありがとうございます。
中身を確認した結果、Happyで始まるのが該当ギルドのようですね。
スクリプトからはどのように見えるか後で検証します。
何時削除していただいてもかまいません。
Posted by 冬物語の人 at 2007年08月05日 11:16
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。