begin process at 2012 05 27 19:20:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > MINI PARSER DE LOG QUAKE 3 (BASEQ3/GAMES.LOG) : MAP ET SCORES À CHAQUE LIGNE.

MINI PARSER DE LOG QUAKE 3 (BASEQ3/GAMES.LOG) : MAP ET SCORES À CHAQUE LIGNE.


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Initié Date de création :12/06/2004 Date de mise à jour :16/11/2004 16:08:25 Vu :4 643

Auteur : antoine129

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Pour afficher les parties de quake3 avec le nom de la map et les scores sur chaque ligne. Faites-moi part de vos commentaires car je l'ai fait très vite fait et je ne l'ai testé que sur un petit et seul log.

Source

  • <?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> &nbsp; ",$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>";
  • }
  • }
  • ?>
<?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> &nbsp; ",$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>";
	}
}
?>

 Conclusion

script a tester...


 Historique

16 novembre 2004 16:08:25 :
inc.header suprimé

 Sources du même auteur

CLASSE MYSQL SIMPLE (ABSTRACTION DES REQUÊTES SQL)
Source avec Zip MINI LISTE GÉNÉRIQUE AFFICHANT UNE TABLE MYSQL ET PERMETTANT...
Source avec Zip MINI LISTE DE COURSES SIMPLE MAIS EFICACE EN UN SEUL SCRIPT ...
LISTE DES ANNIVERSAIRES POUR LES N PROCHAINS JOURS, DANS L'O...
Source avec Zip Source avec une capture BASE DE DONNÉES DE FICHIERS : LISTAGE ET AJOUT MYSQL, ET REC...

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

Commentaires et avis

Commentaire de oXid_FoX le 16/11/2004 13:30:08

euh...
c'est quoi inc.header.php ???

Commentaire de antoine129 le 16/11/2004 16:07:13

lol laisse tomber :D
enlève la ligne correspondante :)
c'était au départ inclus dans une page web...


edit: je l'ai enlevé de la source

Commentaire de oXid_FoX le 17/11/2004 18:09:42

merki !!!
;-)

Commentaire de oXid_FoX le 19/11/2004 12:21:28

j'ai travaillé un peu sur le code... je m'y remet ce week-end
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 : <b>\\2</b> &nbsp; ",$log[$i]);
        $i++;
    }
}
echo "<div align=\"center\"><p>SCORES de Quake 3 (scores individuels)</p><p>Affichage de la partie la plus r&eacute;cente &agrave; la plus ancienne : </p></div><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=".$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] = "<i>serveur</i> : <b>".$str[18]."</b> -- <i>map</i> : <b>".$str[$nom_map]."</b><br>"; //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] .= "<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 pas fini), on n'affiche pas.
        echo $final[$i]."<hr>";
    }
}
?>

Commentaire de oXid_FoX le 19/11/2004 12:24:25

oups, on peut pas éditer....
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] = "<i>serveur</i> : <b>".$str[18]."</b> -- <i>map</i> : <b>".$str[$nom_map]."</b><br>"; //case n°$nom_map : nom de la map

Commentaire de oXid_FoX le 22/11/2004 08:37:27

j'ai fait qq modif, surtout des ajouts ;-)
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 "<div align=\"center\"><p>SCORES de Quake 3 (scores individuels)</p><p>mod : ".$str[$nom_mod]."</p>";

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 "<p>".$n." matches loggés.</p><p>Affichage de la partie la plus r&eacute;cente &agrave; la plus ancienne : </p></div><hr>";

Commentaire de antoine129 le 22/11/2004 13:30:51

ok j'ai pas tout lu mais ça m'a l'air sympathique ton code :)
je te conseille de poster un code à part entière pour plus de lisibiité des mises à jour ;)

Commentaire de oXid_FoX le 23/11/2004 13:29:14

oki ;-)
THX !!

je viens de le faire, il est là :
http://www.phpcs.com/code.aspx?ID=27762

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales