convertlog recreatelog potions plantes stats_clan zn_distance stats_kill cartfidel common_function sources outils

Source du fichier stats_kill.php :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
 <head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
    <meta name="KEYWORDS" content="heroes,chronicles,HC,potion,potions,PV,calculateur">
        <title>Calculateur des stats de kills HC</title>
        <?php require_once('common_function.php'); include('designhc.html'); ?>
 </head>
  <body><?php include 'outils.php' ?>
  <div id="title">
     <a href="<?php echo query_strip(); ?>"><img src="fp.gif" alt="Lien original" id="accueil" title="Retour au lien original" /></a>
     Calculateur des stats de kill v1.2 <span id="by">(par LittleBoss)</span></div>
  <div id="entete">Cet outil permet d'avoir des stats détaillées des derniers kill sur <a href="http://heroeschronicles.nainwak.org/">Heroes Chronicles</a>.
  <br />Copier les logs de la page '<a href="http://heroeschronicles.nainwak.org/stats_g.php">ici</a>', de la page '<a href="http://heroeschronicles.nainwak.org/stats_g.php?o=kill">Meurtres</a>' ou la page des <a href="http://heroeschronicles.nainwak.org/clans/stats.php">stats de clan</a>.
  <br />Ce script ne tient pas compte du fait que les sans clans n'apportent ni ne font perdre de points, ni les kills sur charges
  <br /><font color=red><u>/!\</u> Attention <u>/!\</u></font> Cet outil ne fonctionne que sur les navigateurs qui copient lors de la sélection aussi les titres des images (en l'occurrence firefox).<br /></div>
<?php
if(isset($_POST['log']) && strlen(trim($_POST['log'])) > 0)  // ne faire que si valider a été cliqué ET SI C'EST PAS VIDE ;)
{
  
    // définition des variables contenant les balises, fonction secur_ent défini en bas du fichier
    $log = ''; // variable qui contiendra le log final
    
    //___ $coup=secur_ent($_POST['coup']);    

    $fichier_log = explode("\n", $_POST['log']);
    echo '________________________________'. '<br />';
    echo 'Résultat ci dessous'. '<br />';
    echo '¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯'. '<br />';
    // boucle qui étudie chaque ligne du log pour le mettre en forme
    //# le 07/06 à  18:30 [troll (52)]  [DTC] hargh a tué [undead (21)]   Esbrouf
    //    # le 27/05 à  19:28 [undead (39)]  Exar a tué [gnome (38)]  [DTC] MaximusFr
    //# le 04/06 à  15:30 [elfe (39)]  [DTC] LuneRousse a tué [troll (29)]  [ELITE] Cratorius
    //      [DTC] Gimiiiiiik a tué  [SZU] ROARN
    $nfin = true; $clan = ''; $clan2 = '';
    $first_line = TRUE; $time_deb = array();
    if (isset($_POST['clan'])) $clan = secur_ent($_POST['clan']);
    else $clan = '';
    //$stats_nous = array ('nb_kill'=>0,'lvl_killer'=>0,'lvl_mort'=>0, 'lvl_killer_sc'=>0);
    $stats_heros = array();
    $liste_race = 'elfe|humain|gnome|nain|grunt|orc|undead|tauren|troll';
    $NON = true;
    foreach($fichier_log as $lignei) {
        //$lignei = addcslashes(trim($lignei),'-*?+[](){}.^$');
        if($lignei) { // si la ligne i est non vide
            if (preg_match('`#? ?(il y a [^\[]+|le \d+/\d+ à\s+\d+:\d+\s+)\[(\w+) \((\d+)\)\]\s+(\[.*\])?\s?(.*) a ([\wé]+) \[(\w+) \((\d+)\)\]\s+(\[.*\])?\s*(.*?)\s?$`', $lignei ,$match)) { 
                if ($NON) $NON = false;
                //echo "$match[0] <br /> $match[1] -- $match[2] -- $match[3] -- $match[4] -- $match[5] -- $match[6] -- $match[7] -- $match[8] -- $match[9] -- $match[10] -- $match[11]<br />";
                //list($tout,$moment,$date,$heure,$racek,$lvlk,$clank,$nickk,$action,$racem,$lvlm,$clanm,$nickm)=$match;
                list($tout,$moment,$tueur['race'],$tueur['lvl'],$tueur['clan'],$tueur['nick'],
                $action,$mort['race'],$mort['lvl'],$mort['clan'],$mort['nick'])=$match;
                if ($action != 'soigné' && preg_match("`$liste_race`",$tueur['race']) && preg_match("`$liste_race`",$mort['race'])) {
                    $tueur['nick'] = ucfirst($tueur['nick']);
                    //print_r($time); echo '<br />'; print_r($tueur); echo '<br />'; print_r($action); echo '<br />'; print_r($mort); echo '<br />';
                    if ( $tueur['clan'] == '') $tueur['clan'] = 'Sans_Clan';
                    if ( $mort['clan'] == '') $mort['clan'] = 'Sans_Clan';
                    inc($nb_total_kill);
                    inc2($nb_tot_att_lvl,$tueur['lvl']);
                    inc2($nb_tot_def_lvl,$mort['lvl']);
                    ajout_clan($tueur['clan'],$mort['lvl'],$stats_clan);
                    ajout_clan($mort['clan'],-1*$mort['lvl'],$stats_clan);
                    
                    ajout_clan($tueur['race'],$mort['lvl'],$stats_race);
                    ajout_clan($mort['race'],-1*$mort['lvl'],$stats_race);
                    
                    ajout_sh($tueur['nick'],$tueur['lvl'],$mort['lvl'],$stats_heros);
                    ajout_sh($mort['nick'],$mort['lvl'],(-1*$mort['lvl']),$stats_heros);
                    //echo $lignei.'<br />';
                }
                
            }
        }
    }
    
    if (!$NON) {
        //$stats_race = '<br />';
        //print_r($stats_clan);
        //echo '<br /><br />';
        //print_r($stats_race);
        echo '<br />';        
        
        if ($_POST['tri'] == 'a') ksort($stats_clan);
        //elseif ($_POST['tri'] == 'r') uasort($stats_clan, 'cmp_r');
        else arsort($stats_clan);
        $sortie_c = 'Stats par clan :<br /><br />';
        
        $nb_c = 0; $plus = '+';
        foreach($stats_clan as $clan => $statsn) {
            if ($statsn['pts'] < 0 && $plus == '+') $plus = '';
            $sortie_c .= "$clan : $plus$statsn[pts] points, nb kill : $statsn[nbkill], nb mort : $statsn[nbmort]<br />";
            $nb_c++;
        }
        $nb_c+=2;

        if ($_POST['tri'] == 'a') ksort($stats_race);
        //elseif ($_POST['tri'] == 'r') uasort($stats_race, 'cmp_r');
        else arsort($stats_race);
        $sortie_r = 'Stats par race :<br /><br />';
        
        $nb_r = 0; $plus = '+';
        foreach($stats_race as $race => $statsn) {
            if ($statsn['pts'] < 0 && $plus == '+') $plus = '';
            $sortie_r .= "$race : $plus$statsn[pts] points, nb kill : $statsn[nbkill], nb mort : $statsn[nbmort]<br />";
            $nb_r++;
        }
        $nb_r+=2;

        if ($_POST['tri'] == 'a') ksort($stats_heros);
        elseif ($_POST['tri'] == 'r') uasort($stats_heros, 'cmp_r');
        else arsort($stats_heros);
        
        $sortie_h = 'Stats par héros :<br /><br />'; 
        $nb_h = 0; $plus = '+';
        foreach($stats_heros as $nick => $statsn) {
            if ($statsn['pts'] < 0 && $plus == '+') $plus = '';
            $ratio = round($statsn['pts']/$statsn['lvl'],2);
            $sortie_h .= "$nick (lvl$statsn[lvl]) : $plus$statsn[pts] points (ratio : $ratio), nb kill : $statsn[nbkill], nb mort : $statsn[nbmort]<br />";
            $nb_h++;
        }
        $nb_h+=2;
    /*
        if (isset($_POST['logurl'])) { // calcul l'url direct avec les paramètres de couleurs choisis
            if ($coup != $dcoup) { $url .= $et . 'coup=' . $coup; $et = '\&'; }
            if (preg_match('`.{4,}`', $url)) {
                echo '________________________________'. '<br />';
                $urlg = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"];
                $urlg .= stripslashes($url);
                ?>
                Pour garder votre configuration de couleur, garder <a href="<?php echo $urlg ?>">ce lien</a> dans vos marques pages. <br /><br />
                <?php
            }
            
        }
    */
        $sortie_c = str_replace('<br />', "\n",$sortie_c);
        $sortie_h = str_replace('<br />', "\n",$sortie_h);
        $sortie_r = str_replace('<br />', "\n",$sortie_r);
        echo "Le nombre total de meurtre est $nb_total_kill";
        echo "<br />Somme des levels des tueurs : $nb_tot_att_lvl, et des tués : $nb_tot_def_lvl";

        ?>
        <form>
             <p><textarea name="result3" rows="<?php echo $nb_r ?>" cols="125" readonly="readonly" ><?php echo stripslashes($sortie_r) ?></textarea></p>
             <p><textarea name="result" rows="<?php echo $nb_c ?>" cols="125" readonly="readonly" ><?php echo stripslashes($sortie_c) ?></textarea></p>
             <p><textarea name="result2" rows="<?php echo $nb_h ?>" cols="125" readonly="readonly" ><?php echo stripslashes($sortie_h) ?></textarea></p>
        </form>
        <?php
    }
    else echo 'Entrée incorrect';
}
elseif (isset($_POST['log'])) {
    echo 'Erreur : vous n\'avez pas rempli le log<br />';
}
?>
<!-- Création de la zone de texte pour entrer le log  -->
<form action="<?php echo $_SERVER["REQUEST_URI"]; ?>" method="post">
    <p><input type="submit" value="Valider" />&nbsp;&nbsp;&nbsp;&nbsp;
    Ordre de tri : <label title="tri selon le total de points du joueur"><INPUT type=radio name="tri" value="p" CHECKED>Points</label>
    <label title="tri selon le ratio points/level du joueur"><INPUT type=radio name="tri" value="r">Ratio</label>
    <label title="tri par ordre alphabétique du nick du joueur"><INPUT type=radio name="tri" value="a">Pseudo</label>
</p>
    <p><textarea name="log" rows="20" cols="80" ></textarea></p>
    <p><input type="submit" value="Valider" /></p>
</form>
 <p></p>
 <div id="changelog"><br />Changelog :
 <br />1.2 :
 <br />- Modification graphique
 <br />1.1 :
 <br />- Possibilité de copié les stats de clan dans ce script
 <br />1.0 :
 <br />- Adaptation du script stats_clan
 </h5>
</body>
</html>
<?php
    
    
    function format_nb($match)    {
        //echo $match;
        if (is_numeric($match)) return number_format($match,3,',',' ');
        else return $match;
    }
    
    function dateToTimestamp($heure)
    { // # le 30/06 à  13:50 [elfe (55)]  [DTC] littleboss a tué [troll (64)]  [RTT] Orgrim
        if (preg_match('`le (\d+)/(\d+) à (\d+):(\d+)`',$heure,$match)) {
            return mktime($match[3], $match[4], 0, $match[2], $match[1], 2002); 
        }
        else return "erreur";
    }
    
    function convertSecondesEnHeures($time) {
        $tabTemps = array("jours" => 86400,
        "heures" => 3600,
        "minutes" => 60,
        "secondes" => 1);

        $result = "";
        $result['jours'] = 0;
        $result['heures'] = 0;
        
        foreach($tabTemps as $uniteTemps => $nombreSecondesDansUnite) {
            $$uniteTemps = floor($time/$nombreSecondesDansUnite);

            $time = $time%$nombreSecondesDansUnite;

            if($$uniteTemps > 0 || !empty($result))
            $result["$uniteTemps"] = $$uniteTemps;
        }
        return $result;
    }
    
    function ajout_clan($clan,$lvlmort,&$sh) {        
        if (!isset($sh[$clan])) {
            $sh[$clan] = array('pts' => 0, 'nbkill' => 0, 'nbmort' => 0);
        }
        $sh[$clan]['pts'] += $lvlmort;
        if ($lvlmort >= 0) $sh[$clan]['nbkill']++;
        else $sh[$clan]['nbmort']++;    
    }
    
    function ajout_sh($nick,$level,$lvlmort,&$sh) {
        if (!isset($sh[$nick])) {
            $sh[$nick] = array('pts' => 0, 'nbkill' => 0, 'nbmort' => 0, 'lvl' => $level);
        }
        if ($lvlmort >= 0) {
            $sh[$nick]['pts'] += $lvlmort;
            $sh[$nick]['nbkill']++;
            
        }
        else {
            $sh[$nick]['pts'] -= $level;
            $sh[$nick]['nbmort']++;
        }
    }
    
    function inc(&$i) 
    {
        if (isset($i)) $i++;
        else $i = 1;
    }
    function inc2(&$i,$val=1) 
    {
        if (isset($i)) $i+=$val;
        else $i = $val;
    }    
    function cmp_p($a,$b) {
        if ($a['pts'] == $b['pts']) return 0;
        return $a['pts'] < $b['pts'] ? 1 : -1;
    }
    function cmp_r($a,$b) {
        if ($a['pts']/$a['lvl'] == $b['pts']/$b['lvl']) return 0;
        return $a['pts']/$a['lvl'] < $b['pts']/$b['lvl'] ? 1 : -1;
    }
    function cmp_a($a,$b) {
        if ($a == $b) return 0;
        return $a < $b ? 1 : -1;
    }
?>