Soyez le premier à donner votre avis sur cette source.
Snippet vu 6 004 fois - Téléchargée 29 fois
<?php /* ======================================================= Q3 MINI LOG PARSER - by mOut mouton_85@hotmail.com ======================================================= */ $filename="games2.log"; //fichier contenant $log=file($filename); $n=count($log); for($i=0;$i<$n;$i++){ if(ereg("InitGame:",$log[$i])){ $test[$i]=explode("\\", $log[$i]); } while(ereg("score:",$log[$i])){ $test2[$i]=ereg_replace("(.*)score: (.*) ping: (.*) client: (.*) (.*)","\\5 : <b>\\2</b> ",$log[$i]); $i++; } } echo "Affichage de la partie la plus récente à la plus ancienne : <br><hr>"; $n=count($test); $str=current($test); //pointeurs $str2=current($test2); $z=0; for($i=0;$i<$n;$i++){ $cle=key($test); $final[$z] = $str[36]." : "; //case n°36 : nom de la map $str=next($test); $cle_suiv=key($test); $cle2=key($test2); $winner=true; //gagnant en rouge while(($cle2<$cle_suiv || !$cle_suiv) && $cle2>$cle){ if($winner){ $final[$z] .= "<span style=\"color: red\">".$str2."</span>"; }else{ $final[$z] .= $str2; } $winner=false; $str2=next($test2); $cle2=key($test2); } $z++; } for($i=count($final)-1;$i>=0;$i--){ //affichage a l'envers if(substr_count($final[$i], "<b>")>0){ //si pas de score pour la map (jeu pa fini), on n'affiche pas. echo $final[$i]."<hr>"; } } ?>
23 nov. 2004 à 13:29
THX !!
je viens de le faire, il est là :
http://www.phpcs.com/code.aspx?ID=27762
22 nov. 2004 à 13:30
je te conseille de poster un code à part entière pour plus de lisibiité des mises à jour ;)
22 nov. 2004 à 08:37
le nombre de matches enregistrés, le nom du type de jeu & du mod, et surtout virer les caractères de coloration du nom du joueur
au début du fichier :
$suppr = array("^1","^2","^3","^4","^5","^6","^7","^8","^9","^0","^b","^B"); //couleurs pour le pseudo du joueur
$gametype = array("DM","Tourney","Single player","TDM","CTF");
//rien a faire, c'est juste pour chercher le numero du mod
for($nom_mod=0;$str[$nom_mod]!="gamename";$nom_mod++){
}
$nom_mod += 1; //pour passer à la ligne d'apres (le nom du mod)
//rien a faire, c'est juste pour chercher le numero du type de jeu (0=DM, 1=Tourney, 2=single, 3=TDM, 4=CTF)
for($type_jeu=0;$str[$type_jeu]!="g_gametype";$type_jeu++){
}
$type_jeu += 1; //pour passer à la ligne d'apres (le nom du type de jeu)
echo "
SCORES de Quake 3 (scores individuels)
mod : ".$str[$nom_mod]."
";
plus loin, dans le for
// pour supprimer les caracteres de coloration du nom du joueur
$str2=str_replace($suppr,"",$str2);
après le for :
echo "".$n." matches loggés.
Affichage de la partie la plus récente à la plus ancienne :
<hr>";
19 nov. 2004 à 12:24
la principale modif est pour chercher réellement le nom de la map (passke la ligne correspondant dans le tableau $str[] diffère en fonction des mods)
for($nom_map=0;$str[$nom_map]!="mapname";$nom_map++){
//rien a faire, c'est juste pour chercher le numero de la map
//car le numero de la ligne dans le tableau $str[] change en fonction des mods :
//36 -> OSP 1.03 , 34 -> defrag 1.9 , 38 -> defrag 1.7[mais le script ne fonctionne pas] et Quake3 1.32 [sans mod]
}
$nom_map += 1; //pour passer à la ligne d'apres (le nom de la map)
et pour afficher le nom de la map :
$final[$z] = "serveur : ".$str[18]." -- map : ".$str[$nom_map]."
"; //case n°$nom_map : nom de la map
19 nov. 2004 à 12:21
voici mes modif :
<?php
/* = ======================================================
Q3 MINI log PARSER - by mOut
mouton_85@hotmail.com
======================================================= */
$filename="D:\Program Files\Quake III Arena\osp\games.log"; //fichier contenant
$log=file($filename);
$n=count($log);
for($i=0;$i<$n;$i++){
if(ereg("InitGame:",$log[$i])){
$test[$i]=explode("\", $log[$i]);
}
while(ereg("score:",$log[$i])){
$test2[$i]=ereg_replace("(.*)score: (.*) ping: (.*) client: (.*) (.*)","\\5 : \\2 ",$log[$i]);
$i++;
}
}
echo "
SCORES de Quake 3 (scores individuels)
Affichage de la partie la plus récente à la plus ancienne :
<hr>";
$n =count($test);
$str= current($test); //pointeurs
$str2=current($test2);
$z=0;
/* permet de connaitre les valeurs recuperees avec leur indice
for($i=0;$i<60;$i++){
echo $str[$i]." i=".$i." <hr>";
}
*/
for($nom_map =0;$str[$nom_map]!= "mapname";$nom_map++){
//rien a faire, c'est juste pour chercher le numero de la map
//car le numero de la ligne dans le tableau $str[] change en fonction des mods :
//36 -> OSP 1.03 , 34 -> defrag 1.9 , 38 -> defrag 1.7[mais le script ne fonctionne pas] et Quake3 1.32 [sans mod]
}
$nom_map += 1; //pour passer à la ligne d'apres (le nom de la map)
for($i=0;$i<$n;$i++){
$cle=key($test);
$final[$z] = " serveur : ".$str[18]." -- map : ".$str[$nom_map]."
"; //case n°$nom_map : nom de la map
$str =next($test);
$cle_suiv=key($test);
$cle2=key($test2);
$winner=TRUE; //gagnant en rouge
while(($cle2<$cle_suiv || !$cle_suiv) && $cle2>$cle){
if($winner){
$final[$z] .= "".$str2."";
}else{
$final[$z] .= $str2;
}
$winner=FALSE;
$str2=next($test2);
$cle2=key($test2);
}
$z++;
}
for($i=count($final)-1;$i>=0;$i--){ //affichage a l'envers
if(substr_count($final[$i], "")>0){ //si pas de score pour la map (jeu pas fini), on n'affiche pas.
echo $final[$i]."<hr>";
}
}
?>
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.