爬塔結束時大家最想知道什麼,大概是以下三點吧?
- 誰撿了什麼?
- 什麼時侯撿?
- 撿了多少次?
今天教大家利用perl sub產生excel報告
巨集使用條件及注意事項:
- 隊伍成員撿取了物品有效,好像只對有貴重物或裝備才有效。
- 必須與隊員同一地圖
partyitemlog1
2
3
4
5
6
| automacro partyitemlog {
console /隊伍成員 (.*) 撿取了物品 (.*)/
call {
write2file("$.map","$.lastMatch1","$.lastMatch2") # 呼叫perl sub並連帶地圖人物物品資料
}
}
|
write2file1
2
3
4
5
6
7
8
9
10
11
12
13
| sub write2file {
my ($map, $name, $desc) = @_; # 把partyitemlog送來的資料代入$map,$name,$desc
open(FILE, ">>:utf8", "$Settings::logs_folder/partyitem.csv"); # 打開logs資料夾下的csv檔,如沒有會自動產生。
my @date = localtime time; # 讀取這一刻日期跟時間
$date[5] += 1900;
$date[4] += 1;
my $time = sprintf(
"%04d-%02d-%02d %02d:%02d:%02d", # 自訂格式,個人比較喜歡用YYYY-MM-DD HH:MM:SS
$date[5],$date[4],$date[3],$date[2],$date[1],$date[0]); # 對應格式
my $log = "$time,$map,$name,$desc\n"; # 自訂資料格式跟次序
print FILE $log; # 把資料寫入檔案
close(FILE); # 關閉檔案
}
|
以下是利用notepad打開partyitem.csv檔案的範本,符號,
是csv檔用作分隔。
2013-04-05 18:42:47,1@tower23,隊員A,變形長靴
2013-04-05 18:42:56,1@tower23,隊員B,血斧
2013-04-05 18:42:58,1@tower55,隊員A,獸人英雄卡片
用excel直接開會如圖下,如出現亂碼請用notepad打開partyitem.csv再儲存一次就解決。做一次以後就再不會出現亂碼。
只要在第一行加入標題然後選擇,再按filter。
成功後就如下圖標題尾多了一個向下三角型按鈕,然後可以根據人物地圖物品過濾資料。
假如我沒有excel怎麼辦? 改回用普通文字檔就可以,只需修write2file的第3,10行就可以。
open(FILE, ">>:utf8", "$Settings::logs_folder/partyitem.txt");
my $log = "$time\t$name\t$cate\t$desc\n";
修改後partyitem.txt內容如下,\t
在perl語言是tab分隔,\n
是換行。
2013-04-05 18:44:45 1@tower23 隊員A 變形長靴
2013-04-05 18:44:53 1@tower23 隊員B 血斧
2013-04-05 18:44:55 1@tower55 隊員A 獸人英雄卡片