Parser de log quake 3, urban terror,...

Description

Parser de fichier .log de serveur de jeux comme Quake III, Urban Terror, Open Arena, Nexuiz ! Il permet de récupérer les points totaux de chaque Joueurs qui peuvent par la suite être utiliser comme sur GameTracker pour des stats de tout les joueurs ! Voir même une possibilité par la suite de créer un espace membre sur votre serveur pour sauver les stats de ceux qui sont inscrits !!!

Source / Exemple :


<?Php
/****************************************************

  • Auteur : MEYER Thibault
  • Date : Vendredi 25 juillet 2008
  • fichier : score.php
                                                                                                        • /
?> <?Php function EstPresent($Pseudo, $Table) { for($i=0; $i < count($Table); $i++) { if($Table[$i]["Joueur"] == $Pseudo) { return true; } } return false; } function LireLog($Fichier) { $Log = ""; $hFile = fopen($Fichier, "r"); while(!feof($hFile)) { $Log .= fgets($hFile); } fclose($hFile); if(strstr($Log, "score:") == NULL) return false; $answer = array(); preg_match_all('(.*)', $Log, $answer, PREG_SET_ORDER); $Log = ""; for($i=0,$j=0; $i<count($answer); $i++) { if(strstr($answer[$i][0], "score:") != null) { $Log[$j++] = $answer[$i][0]; } } $Stats = array(); for($i=0; $i<count($Log); $i++) { if($i == 0) sscanf($Log[$i], "%d:%d score: %d ping: %d client: %d %s %s %s %s" , $NULL, $NULL, $Stats[$i]["score"], $NULL, $NULL, $Stats[$i]["Joueur"], $Stats[$i]["nom2"], $Stats[$i]["nom3"], $Stats[$i]["nom4"]); else sscanf($Log[$i], "%d:%d score: %d ping: %d client: %d %s %s %s %s" , $NULL, $NULL, $Stats[$i]["score"], $NULL, $NULL, $Stats[$i]["Joueur"], $Stats[$i]["nom2"], $Stats[$i]["nom3"], $Stats[$i]["nom4"]); } for($i=0; $i<count($Stats); $i++) { if(@$Stats[$i]["nom2"] != NULL) $Stats[$i]["Joueur"] .= " ".$Stats[$i]["nom2"]; if(@$Stats[$i]["nom3"] != NULL) $Stats[$i]["Joueur"] .= " ".$Stats[$i]["nom3"]; if(@$Stats[$i]["nom4"] != NULL) $Stats[$i]["Joueur"] .= " ".$Stats[$i]["nom4"]; } //Cration de la liste des joueurs (regroupe les noms en double) $Stats2[0]["Joueur"] = ""; for($i=0, $j=0; $i < count($Stats); $i++) { if(EstPresent($Stats[$i]["Joueur"], $Stats2) == false) { $Stats2[$j]["Joueur"] = $Stats[$i]["Joueur"]; $Stats2[$j++]["score"] = 0; } } //Rregroupement des points par Joueurs for($i=0; $i < count($Stats2); $i++) { for($j=0; $j < count($Stats); $j++) { if($Stats[$j]["Joueur"] == $Stats2[$i]["Joueur"]) $Stats2[$i]["score"] += $Stats[$j]["score"]; } } //Retourne la tableau return $Stats2; } function EffaceLog($Fichier) { if(!file_exists($Fichier)) return false; $hFile = fopen($Fichier, "w"); if(!$hFile) return false; return true; } function array_sort($array, $key) { for ($i = 0; $i < sizeof($array); $i++) { $sort_values[$i] = $array[$i][$key]; } asort ($sort_values); reset ($sort_values); while (list ($arr_key, $arr_val) = each ($sort_values)) { $sorted_arr[] = $array[$arr_key]; } return $sorted_arr; } ?> <? //EXEMPLE $mesStats = LireLog("games3.log"); $mesStats = array_sort($mesStats, "score"); if($mesStats == false) echo "AUCUNE PARTIE A TRAITER"; else{ for($i=count($mesStats)-1; $i>=0; $i--) { echo $mesStats[$i]["Joueur"]." : ".$mesStats[$i]["score"]; echo "<br>"; } } //QUAND MISE A JOUR DES JOUEURS SUR LA BASE DE DONNéES, ON VIDE LE JOURNAL echo "<br>"; //if(EffaceLog("games3.log") == true) echo "EFFACER OK"; //else echo "EFFACER ERREUR"; ?>

Conclusion :


Les éléments du tableau "nom2", "nom3"... C'est pour si jamais les gars on des pseudo du genre "Vieux Troll Des Bois" au lieu de "VieuxTrollDesBois"

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.