0

ゲームのログ ファイルを解析するスクリプトがあります (リプレイに使用)。移動、キル、死亡など、ゲーム内のほとんどのアクションが含まれています。

私はしばらくこのスクリプトを使用してきましたが、現在は 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

なぜこれに関する通知が表示されるのかわかりません。これを修正する方法はありますか?

4

0 に答える 0