ゲームのログ ファイルを解析するスクリプトがあります (リプレイに使用)。移動、キル、死亡など、ゲーム内のほとんどのアクションが含まれています。
私はしばらくこのスクリプトを使用してきましたが、現在は Codeigniter を使用して統計サイトに取り組んでおり、多くのエラー通知が表示され、その理由がわかりません。
正確なエラーはMessage: Undefined offset: 3
それが参照している行は、$message[3] を含むチームケースの行です。
スクリプトは次のとおりです。
$f = fopen($full_path,"r");
while ($line = fgets($f))
{
$line = str_replace("ööööö", " ",trim($line)); // these characters are found in win replay files
$line = str_replace("ššššš", " ", $line); // these characters are found in mac replay files
$message = explode(" ",$line);
$lasttimestamp = $message[sizeof($message)-1];
if ($message[0]=="PLAYERSENT" || $message[0]=="TCPSENT")
{
array_shift($message);
$swapfield = $message[0];
$message[0] = $message[1];
$message[1] = $swapfield;
}
switch ($message[0])
{
case "team": // team (player id) (team)
$name = $names[$message[1]];
if ($message[2]>-1) $players[$name]['Played'] = true;
$players[$name]['Sessions'][] = array("Team"=>$players[$name]['Team'],"TimeSpent"=>($message[3]-$players[$name]['LastTimeStamp']));
if ($players[$name]['Team']>-1) $players[$name]['TotalTime'] += $message[3]-$players[$name]['LastTimeStamp'];
$players[$name]['Team'] = $message[2];
$players[$name]['LastTimeStamp'] = $message[3];
break;
default:
}
}
fclose($f);
ケースは、次のような行に一致します。
team 4 -1ööööö57167168
スクリプトに見られるように、ööööö
文字はスペースに置き換えられるため、 になるはずなteam 4 -1 57167168
ので、 $message[3] はタイムスタンプを表示するはずです57167168
なぜこれに関する通知が表示されるのかわかりません。これを修正する方法はありますか?