convertlog recreatelog potions plantes stats_clan zn_distance stats_kill cartfidel common_function sources outils

Source du fichier convertlog.php :


<?php $simplifie = isset($_GET['simpl']); ?>
<script type="text/javascript">
<!--
function afficheMask() {

    var style1 = document.getElementById('ibloc1').style.display;
    var style2 = document.getElementById('bloc1').style.display;
    
    var i,j;
    for (i=2 ; i<4 ; i++) {
        j='bloc'+i;
        document.getElementById(j).style.display=style1;
    }

    document.getElementById('ibloc1').style.display=style2;
}
-->
</script>

<!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>
    <link rel="stylesheet" href="css/designhc.css" type="text/css" />
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15" />
    <meta name="KEYWORDS" content="heroes,chronicles,HC,convertlog,convertisseur,calculateur,log,logs" />
        <title>Convertisseur de log 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>
     Convertisseur de log HC v2.001 <span id="by">(par LittleBoss)</span></div>
<div id="entete">     
  Cet outil permet de mettre en forme, ainsi que calculer automatiquement les PV gagnés/perdus des logs de <a href="http://heroeschronicles.nainwak.org/">Heroes Chronicles</a>.
  <br />Entrer votre log ci dessous, le log converti s'affichera au dessus de la zone de texte. 
  <br />Des options sont disponibles, passer la souris sur celles-ci pour plus de détail.
  <br /><a href="?config=1<?php if($simplifie) echo '&simpl=1'; ?>">Config 1</a> : balises standards, <a href="?config=2<?php if($simplifie) echo '&simpl=1'; ?>">Config 2</a> : aucune balise (pas de couleur) et <a href="?config=3<?php if($simplifie) echo '&simpl=1'; ?>">Config 3</a> : balises bbcode standards DTC
    <div id="ibloc1" style="display:<?php echo ($simplifie)? 'Inline':'none'; // simplification inverse ?>">
    <br /><a href="#" style="font-size:12" onClick="afficheMask();return false;">Afficher les options sans rechargement</a> /
    <a style="font-size:12" href="<?php if (preg_match('`&simpl=1`',$_SERVER["REQUEST_URI"])) echo preg_replace('`&simpl=1`','',$_SERVER["REQUEST_URI"]);
                    elseif (preg_match('`simpl=1&`',$_SERVER["REQUEST_URI"])) echo preg_replace('`simpl=1&`','',$_SERVER["REQUEST_URI"]);
                    elseif  (preg_match('`\?simpl=1$`',$_SERVER["REQUEST_URI"])) echo preg_replace('`\?simpl=1$`','',$_SERVER["REQUEST_URI"]); ?>">
    Passer à la page complète</a>
    </div>
    <div id="bloc1" style="display:<?php echo ($simplifie)? 'none':'Inline'; // simplification ?>" >
    <br />  <a href="<?php if (!$simplifie) echo $_SERVER["REQUEST_URI"].(preg_match('`\?`',$_SERVER["REQUEST_URI"])? '&':'?').'simpl=1'; ?>">Cliquer ici</a> pour masquer les options. 
    <br /><span id="whatnew">[NEW] Refonte graphique, suppression de la pub par défaut</span>
    </div>
</div>
<?php

// initialisation des valeurs par défaut des logs

$dsecact=600;

$pub=isset($_GET['pub'])? 'checked="check"' : ''; // activer pub
$statdet=isset($_GET['statdet'])? 'checked="check"' : ''; // activer stats+
$autostats=isset($_GET['stats'])? '' : 'checked="check"'; // désactiver stats

$dstatdet='';
if (!isset($_GET['config']) || secur_ent($_GET['config']) == 1) { 
    $dcoup='[color=red]'; $dfcoup='[/color]';
    $dsoin='[color=green]'; $dfsoin='[/color]';
    $desquive='[color=cyan]'; $dfesquive='[/color]';
    $dpavois='[color=orange]'; $dfpavois='[/color]';
    $dpavoispartiel='[color=orange]'; $dpavoispartiel='[/color]';
    $dpoison='[color=purple]'; $dfpoison='[/color]';
    $dcharge='[color=red]'; $dfcharge='[/color]';
    $dbatiment='[color=red]'; $dfbatiment='[/color]';
    $dkill='[color=red]'; $dfkill='[/color]';
    $dmort='[color=yellow]'; $dfmort='[/color]';
    $dfeu='[color=orange]'; $dffeu='[/color]';
    $dgel='[color=blue]'; $dfgel = '[/color]';
    $dstatsynt='[b]'; $dfstatsynt='[/b]';
    $dpub = '';//'checked="check"';
    $dautostats = 'checked="check"';
}
else if (secur_ent($_GET['config']) == 2) {
    $dcoup=''; $dfcoup='';
    $dsoin=''; $dfsoin='';
    $desquive=''; $dfesquive='';
    $dpavois=''; $dfpavois='';
    $dpavoispartiel=''; $dpavoispartiel='';
    $dpoison=''; $dfpoison='';
    $dcharge=''; $dfcharge='';
    $dbatiment=''; $dfbatiment='';
    $dkill=''; $dfkill='';
    $dmort=''; $dfmort='';
    $dfeu=''; $dffeu='';
    $dgel=''; $dfgel = '';
    $dstatsynt=''; $dfstatsynt='';
    $dautostats = 'checked="check"'; $dpub = '';
}
else {
    $dcoup='[coups]'; $dfcoup='[/coups]';
    $dsoin='[soins]'; $dfsoin='[/soins]';
    $desquive='[esquives]'; $dfesquive='[/esquives]';
    $dpavois='[pavois]'; $dfpavois='[/pavois]';
    $dpavoispartiel='[pavois]'; $dpavoispartiel='[/pavois]';
    $dpoison='[poisons]'; $dfpoison='[/poisons]';
    $dcharge='[coups]'; $dfcharge='[/coups]';
    $dbatiment='[coups]'; $dfbatiment='[/coups]';
    $dkill='[coups]'; $dfkill='[/coups]';
    $dmort='[color=yellow]'; $dfmort='[/color]';
    $dfeu='[color=orange]'; $dffeu='[/color]';
    $dgel='[color=turquoise]'; $dfgel = '[/color]';
    $dstatsynt='[b]'; $dfstatsynt='[/b]';
    $dautostats = 'checked="check"';
    $dpub = '';
}

if(isset($_POST['log']) && (strlen(trim($_POST['log'])) > 0 || isset($_POST['logurl'])) && is_numeric($_POST['pvrest']))  // 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']);
    $fcoup=secur_ent($_POST['fcoup']);
    $soin=secur_ent($_POST['soin']);
    $fsoin=secur_ent($_POST['fsoin']);
    $esquive=secur_ent($_POST['esquive']);
    $fesquive=secur_ent($_POST['fesquive']);
    $pavois=secur_ent($_POST['pavois']);
    $fpavois=secur_ent($_POST['fpavois']);
    $pavoispartiel=$pavois;
    $fpavoispartiel=$fpavois;
    $poison=secur_ent($_POST['poison']);
    $fpoison=secur_ent($_POST['fpoison']);
    $feu=secur_ent($_POST['feu']);
    $ffeu=secur_ent($_POST['ffeu']);
    $gel=secur_ent($_POST['gel']);
    $fgel=secur_ent($_POST['fgel']);    
    $charge=secur_ent($_POST['charge']);
    $fcharge=secur_ent($_POST['fcharge']);
    $mort=secur_ent($_POST['mort']);
    $fmort=secur_ent($_POST['fmort']);
    $pvrest=secur_ent($_POST['pvrest']);
    $statsynt=secur_ent($_POST['statsynt']);
    $fstatsynt=secur_ent($_POST['fstatsynt']);
    $pvsynt=secur_ent($_POST['pvsynt']);
    $batiment=secur_ent($_POST['batiment']);
    $fbatiment=secur_ent($_POST['fbatiment']);
    $kill=secur_ent($_POST['kill']);
    $fkill=secur_ent($_POST['fkill']);
    $secact=secur_ent($_POST['secact']);

    if ($pvrest != 0) { $pv = TRUE; } else $pv = FALSE;
    if (isset($_POST['stat'])) { $stat = TRUE; } else $stat = FALSE;
    if (isset($_POST['statdet'])) { $statdet = TRUE; } else $statdet = FALSE;
    if (isset($_POST['secret'])) { $secret = TRUE; } else $secret = FALSE;
    if (isset($_POST['lignenlog'])) { $lignenlog = TRUE; } else $lignenlog = FALSE;
    if (isset($_POST['affpseudo'])) { $affpseudo = TRUE; } else $affpseudo = FALSE;
    if (isset($_POST['affpseudostat'])) { $affpseudostat = TRUE; } else $affpseudostat = FALSE;
    if (isset($_POST['affclan'])) { $affclan = TRUE; } else $affclan = FALSE;
    if (!isset($_POST['stat'])) { $autostats = ''; } else $autostats = 'checked="check"';
    if (isset($_POST['pub'])) { $pub = 'checked="check"'; } else $pub = '';
    
    $fichier_log = explode("\n", $_POST['log']);
    echo '________________________________'. '<br />';
    echo 'Recopier le log ci dessous sur votre forum'. '<br />';
    echo '¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯'. '<br />';
    // boucle qui étudie chaque ligne du log pour le mettre en forme
    if (isset($_POST['quote'])) { $log.='[quote]'; }
    if ($stat) {
        $listeAction = Array('action','charge','soin','coup','charge','feu','gel','mort','kill','pavoispartiel','poison','esquive','pavois');
        $listeActionPv = Array('charge','coup','soin','poison','feu');
        foreach($listeAction as $uneAction) { $cpt[$uneAction] = 0; $my_cpt[$uneAction] = 0; }
        foreach($listeActionPv as $uneAction) { $cptpv[$uneAction] = 0; $my_cptpv[$uneAction] = 0; }
        $auto = false; // est-ce que c'est une action subit ou exécuté
        //$cptaction = 0; $cptcharge = 0; $cptsoin = 0; $cptcoup = 0; $cptcharge = 0; $cptfeu = 0; $cptmort = 0; $cptkill = 0; $cptpavoispartiel = 0;
        //$cptpoison = 0; $cptesquive = 0; $cptpavois = 0; $cptpvcharge = 0; $cptpvcoup = 0; $cptpvsoin = 0; $cptpvpoison = 0; $cptpvfeu = 0;
    }
    
    if ($affclan) $lienclan = 'http://heroeschronicles.nainwak.org/clans/ficheclan.php?clan=';
    if ($affpseudo || $affpseudostat) $lienpseudo = 'http://heroeschronicles.nainwak.org/index.php?option=classement&user=';
    
    $logactuel = ''; $flogactuel = ''; $i=0; $lastauto = 'init';  $lec=''; $flec=''; $auto=false;
    foreach($fichier_log as $lignei) {
        $i++;
        if(trim($lignei) != '') { // si la ligne i est non vide
            // lec => log en cours -- flec => fin log en cours -- kill et fkill => log spécial de kill
            $pvsoin = 1; $pvresult = ''; $clan = ''; $pseudo = ''; $lignei = " $lignei";
            $lignei = str_replace('  ',' ',$lignei);
            if (preg_match('`\[?([^\]]*)\]? *\[?([^ ]*?)\]? (.+) vous a attaqué`', $lignei, $match)) { $lec = $coup; $flec = $fcoup; $action = 'coup'; $auto = false;}
            elseif (preg_match('`\[?([^\]]*)\]? Vous avez succombé`', $lignei)) { $lec = $coup; $flec = $fcoup; $action = 'succombe'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? Vous avez été soignée? par ?\[?([^ ]*?)\]? (.+) qui vous`', $lignei, $match)) { $lec = $soin; $flec = $fsoin; $pvsoin = -1; $action = 'soin'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? Vous avez esquivé l.{1,4}attaque de ?\[?([^ ]*?)\]? (.+)!`', $lignei, $match)) { $lec = $esquive; $flec = $fesquive; $action = 'esquive'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? *\[?([^ ]*?)\]? .*la monture de (.+) vous a chargé`', $lignei, $match)) { $lec = $charge; $flec = $fcharge; $action = 'charge'; $auto = false; }            
            elseif (preg_match('`\[?([^\]]*)\]? Vous avez bloqué l.{1,4}attaque de ?\[?([^ ]*?)\]? (.+)!`', $lignei, $match)) { $lec = $pavois; $flec = $fpavois; $action = 'pavois'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? Vous avez partiellement bloqué l.{1,4}attaque de ?\[?([^ ]*?)\]? (.+)!`', $lignei, $match)) { $lec = $pavois; $flec = $fpavois; $action = 'pavoispartiel'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? Le poison vous fait perdre`', $lignei)) { $lec = $poison; $flec = $fpoison; $action = 'poison'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? Le feu vous fait perdre`', $lignei)) { $lec = $feu; $flec = $ffeu; $action = 'feu'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? La mort vous prend`', $lignei)) { /*$kill = $mort; $fkill = $fmort;*/ $action = 'mort'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? Vous vous êtes prise? le`', $lignei)) { $lec = $batiment; $flec = $fbatiment; $action = 'batiment'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? Brrrrrr`', $lignei, $match)) { $lec = $gel; $flec = $fgel; $action = 'gel'; $auto = false; }
            elseif (preg_match('`\[?([^\]]*)\]? Vous avez attaqué (.+) avec `', $lignei, $match)) { $lec = $coup; $flec = $fcoup; $action = 'coup'; $auto = true; }
            elseif (preg_match('`\[?([^\]]*)\]? Vous avez tué (.+) !`', $lignei, $match)) { $lec = $kill; $flec = $fkill; $action = 'kill'; $auto = true; }            
            elseif (preg_match('`\[?([^\]]*)\]? Vous avez soigné ?p?a?r? (.+) en lui rendant`', $lignei, $match)) { $lec = $soin; $flec = $fsoin; $pvsoin = -1; $action = 'soin'; $auto = true; }
            elseif (preg_match('`\[?([^\]]*)\]? (.*) vous a esquivé`', $lignei, $match)) { $lec = $esquive; $flec = $fesquive; $action = 'esquive'; $auto = true; }
            elseif (preg_match('`\[?([^\]]*)\]? (.*) a bloqué votre attaque`', $lignei, $match)) { $lec = $pavois; $flec = $fpavois; $action = 'pavois'; $auto = true; }
            elseif (preg_match('`\[?([^\]]*)\]? (.*) a partiellement bloqué votre attaque`', $lignei, $match)) { $lec = $pavois; $flec = $fpavois; $action = 'pavoispartiel'; $auto = true; }            
            elseif (preg_match('`\[?([^\]]*)\]? Vous avez chargez (.+) !`', $lignei, $match)) { $lec = $charge; $flec = $fcharge; $action = 'charge'; $auto = true; }    
            //elseif (preg_match('`\[?([^\]]*)\]? *\[?([^ ]*?)\]? ?la monture de (.+) vous a chargé`', $lignei, $match)) { $lec = $charge; $flec = $fcharge; $action = 'charge'; }
            else { $action = 'suivant'; }
            $lignei = trim($lignei);
            $varcpt = ($auto)? 'my_cpt':'cpt';
            if (isset($match[1])) { 
                $heure_pr = $match[1]; 
                if (!$auto) { if (isset($match[2])) { $clan = $match[2]; if (isset($match[3])) $pseudo = $match[3]; } }
                elseif (isset($match[2])) { $pseudo = $match[2]; }
                if ($secact != 0 && $action != 'poison' && $action != 'feu' && $action != 'gel' && traiter_heure($heure_pr,$heure_po,$secact)) $log.='<br />';
            }
            //echo "$clan ---  $pseudo <br />";
            if ($secret) { $lignei = preg_replace('/\d+ PV/', '** PV', $lignei); $cptpvsoin = '**'; $cptpvpoison = '**'; }
            if ($action == 'suivant') { // dans le cas d'une ligne qui ne correspondrait à aucun critère de mise en forme du log, la laisser telle quel
                if ($lignenlog OR $log == '' AND $lignei == '*' || $lignei == '#') { $newline = NULL; } // suppr les ligne non reconnu par les phrases de log
                else { $newline = $flec.$lignei.$lec; }
            }
            else { // sinon si c'est une ligne de texte de log normal
                if ($lastauto == 'init') $lastauto = $auto; 
                else { if ($lastauto != $auto) { $lastauto = $auto; $log .= $flogactuel.'<br />########################<br /><br />'.$logactuel; } }
                if ($statdet || $stat || $pv) {
                    $nbpv = ''; $nbpv = preg_replace("/.*(rendant|rendu|perdre) ([0-9]+) PV.*/", "$2", $lignei);
                }
                if ($stat || $pv AND $action != 'succombe') { // si un nombre de PV avant l'attaque a été initialisé -- nombre d'action total, ignore les actions non subit par un joueur
                    if ($lec != 'suivant' && $action != 'kill' && $action != 'mort' && $action != 'pavoispartiel' && $action != 'poison' && $action != 'feu' && $action != 'gel') { ${$varcpt}['action']++; }
                    if (is_numeric($nbpv)) {
                        ${$varcpt}[$action]++; ${$varcpt.'pv'}[$action] += $nbpv;
                        if ($pv) {  
                            $pvrest -= $nbpv * $pvsoin;
                            $pvresult = preg_replace('/XX/',$pvrest,$pvsynt);
                        }
                    }
                    else { ${$varcpt}[$action]++; }
                }
                //if ($statdet && $pseudo != '') {
                if ($pseudo != '') {
                    $varpscpt = ($auto)? 'my_pscpt':'pscpt';
                    if ($action != 'pavoispartiel' && $action != 'kill' && $action != 'mort') 
                        { inc(${$varpscpt}['Total']['Total']); inc(${$varpscpt}[$pseudo]['Total']); }    
                    inc(${$varpscpt}['Total'][$action]);                        
                    inc(${$varpscpt}[$pseudo][$action]);
                    if (is_numeric($nbpv)) { 
                        inc2(${$varpscpt.'pv'}['Total'][$action],$nbpv);
                        inc2(${$varpscpt.'pv'}[$pseudo][$action],$nbpv);
                    }
                }
                else if ($action != 'succombe') {
                    $varpscpt = ($auto)? 'my_pscpt':'pscpt';
                    inc(${$varpscpt}['Total'][$action]);
                    if (is_numeric($nbpv)) {
                        inc2(${$varpscpt.'pv'}['Total'][$action],$nbpv);
                    }
                }
                if ($action != 'mort') {  // si ce n'est pas le cas d'un message de mort
                    if ($lec == $logactuel && $flec == $flogactuel) // si la balise ouverte en cours est la même que celle que l'on devrait mettre à la lignei, ne rien toucher
                    { $newline = $lignei; }
                    else { // sinon ajouter au début de la ligne la fermeture de la balise en cours et l'ouverture de la nouvelle balise correspondant à la ligne
                        $newline = $flogactuel . $lec . $lignei;
                        $logactuel = $lec;
                        $flogactuel = $flec;
                    }
                }
                else { // dans le cas du message de mort
                    $newline = preg_replace('/vous prends*/', 'vous prend' . $flogactuel . $mort, $lignei);
                    $logactuel = $mort; //$kill = ''; // mettre n'importe quoi dans la variables contenant la balise ouverte en cours
                    $flogactuel = $fmort;
                }
            }
            $newline.=$pvresult;
            //$newline = addslashes($newline);
            $clan_regex = addcslashes($clan,'*?+[](){}.^$');
            //echo htmlentities($clan_regex);
            //echo "$i - $clan<br />";
            if ($affclan && $clan != '') $newline = preg_replace("`\[$clan_regex\]`","\\[[url=$lienclan$clan\]$clan\[/url\]\]",$newline);
            if ($affpseudo && $pseudo != '') $newline = preg_replace("`$pseudo`","\[url=$lienpseudo$pseudo\]$pseudo\[/url\]",$newline);
            if ($newline) { $log.=$newline . '<br />'; } // ajout de la ligne traitée dans la variable $log
        }
        elseif (isset($_POST['lignevide']) && !preg_match('`(<br />){2,}$`',$log)) { $log.='<br />'; }

    }

    $log.=$flogactuel;
    if ($stat) { // afichage des statistiques
        $log.='<br />';
        if ($cpt['action'] > 0) {
            $log.= "Vous avez subi un total de $statsynt$cpt[action]$fstatsynt actions.".'<br />';
            if ($cpt['coup'] || $cpt['charge']) {
                if (!$secret) { $pvperdu = $cptpv['coup'] + $cptpv['charge']; }
                else { $pvperdu = '**'; }
                if (!$cpt['charge']) $cpt['charge'] = 0; elseif (!$cpt['coup']) $cpt['coup'] = 0;
                $log.="Vous avez encaissé $statsynt$coup$cpt[coup]$fcoup$fstatsynt attaque(s) et $statsynt$charge$cpt[charge]$fcharge$fstatsynt charge(s) pour un total de $statsynt$coup$pvperdu$fcoup$fstatsynt PV perdus".'<br />';
            }
            if ($cpt['soin']) $log.="Vous avez reçu $statsynt$soin$cpt[soin]$fsoin$fstatsynt soin(s) pour un total de $statsynt$soin$cptpv[soin]$fsoin$fstatsynt PV soignés".'<br />';
            if ($cpt['poison']) $log.="Le poison vous a frappé $statsynt$poison$cpt[poison]$fpoison$fstatsynt fois et vous a infligé un total de $statsynt$poison$cptpv[poison]$fpoison$fstatsynt PV".'<br />';
            if ($cpt['feu']) $log.="Le feu vous a frappé $statsynt$feu$cpt[feu]$ffeu$fstatsynt fois et vous a infligé un total de $statsynt$feu$cptpv[feu]$ffeu$fstatsynt PV".'<br />';
            if ($cpt['esquive']) $log.="Vous avez esquivé $statsynt$esquive$cpt[esquive]$fesquive$fstatsynt attaque(s)".'<br />';
            if ($cpt['pavois']) $log.="Vous avez bloqué $statsynt$pavois$cpt[pavois]$fpavois$fstatsynt attaque(s)".'<br />';
            if ($cpt['pavoispartiel']) $log.="Vous avez bloqué partiellement $statsynt$pavois$cpt[pavoispartiel]$fpavois$fstatsynt attaque(s)".'<br />';
            if ($cpt['gel']) $log.="Vous avez été gelé $statsynt$gel$cpt[gel]$fgel$fstatsynt fois".'<br />';

        }
        if($my_cpt['action'] > 0 || $my_cpt['kill'] > 0) {
            if ($cpt['action'] > 0) $log .= '<br />';
            if ($my_cpt['action']) $log.= "Vous avez effectué un total de $statsynt$my_cpt[action]$fstatsynt actions.".'<br />';
            if ($my_cpt['coup'] || $my_cpt['charge']) {
                if (!$secret) { $pvperdu = $my_cptpv['coup'] + $cptpv['charge']; }
                else { $pvperdu = '**'; }
                if (!$my_cpt['charge']) $my_cpt['charge'] = 0; elseif (!$my_cpt['coup']) $my_cpt['coup'] = 0;
                $affCharge = ($my_cpt['charge'] == 0)? '':" et $statsynt$charge$my_cpt[charge]$fcharge$fstatsynt charge(s)";
                $log.="Vous avez fait $statsynt$coup$my_cpt[coup]$fcoup$fstatsynt attaque(s)$affCharge pour un total de $statsynt$coup$pvperdu$fcoup$fstatsynt PV infligés".'<br />';
            }
            if ($my_cpt['soin']) $log.="Vous avez donné $statsynt$soin$my_cpt[soin]$fsoin$fstatsynt soin(s) pour un total de $statsynt$soin$my_cptpv[soin]$fsoin$fstatsynt PV soignés".'<br />';
            if ($my_cpt['esquive']) $log.="Vous vous êtes fait esquiver $statsynt$esquive$my_cpt[esquive]$fesquive$fstatsynt attaque(s)".'<br />';
            if ($my_cpt['pavois']) $log.="Vous vous êtes fait bloquer $statsynt$pavois$my_cpt[pavois]$fpavois$fstatsynt attaque(s)".'<br />';
            if ($my_cpt['pavoispartiel']) $log.="Vous vous êtes fait bloquer partiellement $statsynt$pavois$my_cpt[pavoispartiel]$fpavois$fstatsynt attaque(s)".'<br />';        
            if ($my_cpt['kill']) $log.="Vous avez tué $statsynt$kill$my_cpt[kill]$fkill$fstatsynt héros".'<br />';    
        }
    }
    $aff_stats_hors_cadre = '<font color="blackgreen">';
    if (isset($pscpt)) {
        $aff_stats_hors_cadre .= '[Actions reçues] ';
        if (isset($pscpt['Total']['Total']))
        {
            $aff_stats_hors_cadre .= 'Total => '.$pscpt['Total']['Total'].' ';
        }
        foreach($pscpt['Total'] as $action => $detail) {
            if ($action == 'Total') continue;
            $aff_stats_hors_cadre .= "$action => $detail ";
            if (isset($pscptpv['Total'][$action])) {
                $sig =($action == 'soin')?  '+':'-';
                $aff_stats_hors_cadre .= "($sig".$pscptpv['Total'][$action].' PV) ';
            }
        }
        $aff_stats_hors_cadre .= '<br />';
    }
    if (isset($my_pscpt)) {
        $aff_stats_hors_cadre .= '[Actions données] ';
        if (isset($pscpt['Total']['Total']))
        {
            $aff_stats_hors_cadre .= 'Total => '.$pscpt['Total']['Total'].' ';
        }        
        foreach($my_pscpt['Total'] as $action => $detail) {
            if ($action == 'Total') continue;
            $aff_stats_hors_cadre .= "$action => $detail ";
            if (isset($my_pscptpv['Total'][$action])) {
                $sig =($action == 'soin')?  '+':'-';
                $aff_stats_hors_cadre .= "($sig".$my_pscptpv['Total'][$action].' PV) ';
            }
        }    
        $aff_stats_hors_cadre .= '<br />';
    }
    $aff_stats_hors_cadre .= '</font>';
    
    if ($statdet) {
        /*print_r($pscpt);
        echo '<br />____<br />';
        print_r($pscptpv);*/
        foreach(array('pscpt','my_pscpt') as $varpscpt) {
            if (isset($$varpscpt)) {
                $affichage_statdet = '';
                //echo 'pseudo - Action - Nombre [ - PV ]<br />';
                foreach($$varpscpt as $pseudo => $tabaction) {
                    if ($affpseudostat && $pseudo != 'Total') $affichage_statdet .= "\[url=$lienpseudo$pseudo\]$pseudo\[/url\] :    ";
                    else {
                        $nbAction = (isset($tabaction['Total']))? $tabaction['Total']:0;
                        $affichage_statdet .= "$pseudo ($nbAction actions) :    ";
                    }
                    $intermed = '';
                    foreach($tabaction as $action => $detail) {
                        if ($action != 'Total') {
                            $pv_act = '';
                            if (isset(${$varpscpt.'pv'}[$pseudo][$action])) { 
                                if ($action == 'soin') $sig = '+'; else $sig = '-';
                                $pv_act = "($statsynt$sig".${$varpscpt.'pv'}[$pseudo][$action]."$fstatsynt PV)"; 
                            }
                            if ($action == 'coup') $intermed = "${$action}$action${'f'.$action} => $detail$pv_act    ".$intermed;
                            else $intermed .= "${$action}$action${'f'.$action} => $detail$pv_act    ";
                        }
                    }
                    $affichage_statdet .= stripslashes($intermed);
                    $affichage_statdet .= '<br />';
                }
                //echo $affichage_statdet;
                $log.="<br />$affichage_statdet";
            }
        }
        $log.='<br />';
    }    
    if (isset($_POST['pub'])) { $log.='<br />[size=9][url=http://'.$_SERVER["SERVER_NAME"].end_url().']Généré par Log Converter v2.001[/url][/size]<br />'; }
    if (isset($_POST['quote'])) { $log.='[/quote]<br />'; }
    //$log = trim("$log");
    $log = str_replace('<br />', "\n",$log);
    
    echo $aff_stats_hors_cadre;
    ?>
    <form>
         <p><textarea id="resultat" name="result" rows="20" cols="80" readonly="readonly" onClick="this.focus(); this.select();" ><?php echo stripslashes($log) ?></textarea></p>
    </form>
    <?php
    if (isset($_POST['logurl'])) { // calcul l'url direct avec les paramètres de couleurs choisis
        $et = ''; $url = '?';
        if (preg_match('`(config=\d)`',$_SERVER["REQUEST_URI"],$match)) { $url .= $et.$match[1]; $et = '\&'; }
        if (preg_match('`simpl=1`',$_SERVER["REQUEST_URI"])) { $url .= $et.'simpl=1'; $et = '\&'; }

        if ($coup != $dcoup) { $url .= $et . 'coup=' . $coup; $et = '\&'; }
        if ($fcoup != $dfcoup) { $url .= $et . 'fcoup=' . $fcoup; $et = '\&'; }
        if ($soin != $dsoin) { $url .= $et . 'soin=' . $soin; $et = '\&'; }
        if ($fsoin != $dfsoin) { $url .= $et . 'fsoin=' . $fsoin; $et = '\&'; }
        if ($esquive != $desquive) { $url .= $et . 'esquive=' . $esquive; $et = '\&'; }
        if ($fesquive != $dfesquive) { $url .= $et . 'fesquive=' . $fesquive; $et = '\&'; }
        if ($pavois != $dpavois) { $url .= $et . 'pavois=' . $pavois; $et = '\&'; }
        if ($fpavois != $dfpavois) { $url .= $et . 'fpavois=' . $fpavois; $et = '\&'; }
        if ($poison != $dpoison) { $url .= $et . 'poison=' . $poison; $et = '\&'; }
        if ($fpoison != $dfpoison) { $url .= $et . 'fpoison=' . $fpoison; $et = '\&'; }
        if ($feu != $dfeu) { $url .= $et . 'feu=' . $feu; $et = '\&'; }
        if ($ffeu != $dffeu) { $url .= $et . 'ffeu=' . $ffeu; $et = '\&'; }
        if ($gel != $dgel) { $url .= $et . 'gel=' . $gel; $et = '\&'; }
        if ($fgel != $dfgel) { $url .= $et . 'fgel=' . $fgel; $et = '\&'; }        
        if ($charge != $dcharge) { $url .= $et . 'charge=' . $charge; $et = '\&'; }
        if ($fcharge != $dfcharge) { $url .= $et . 'fcharge=' . $fcharge; $et = '\&'; }
        if ($mort != $dmort) { $url .= $et . 'mort=' . $mort; $et = '\&'; }
        if ($fmort != $dfmort) { $url .= $et . 'fmort=' . $fmort; }
        if ($batiment != $dbatiment) { $url .= $et . 'batiment=' . $batiment; $et = '\&'; }
        if ($fbatiment != $dfbatiment) { $url .= $et . 'fbatiment=' . $fbatiment; $et = '\&'; }
        if ($kill != $dkill) { $url .= $et . 'kill=' . $kill; $et = '\&'; }
        if ($fkill != $dfkill) { $url .= $et . 'fkill=' . $fkill; $et = '\&';  }
        if ($secact != $dsecact) { $url .= $et . 'secact=' . $secact; $et = '\&';  }
        if ($statdet != $dstatdet) { $url .= $et . 'statdet=1'; $et = '\&';  }
        if ($autostats != $dautostats) { $url .= $et . 'stats=0'; $et = '\&';  }
        if ($pub != $dpub) { $url.= $et . 'pub=1'; $et = '\&';  }
        if ($fstatsynt != $dfstatsynt) { $url.= $et . 'fstatsynt=' . $fstatsynt; $et = '\&';  }
        if ($pvsynt != ' { PV restant : XX }') { $url.= $et . 'pvsynt=' . $pvsynt; $et = '\&';  }
        echo '________________________________'. '<br />';
        $urlg = query_strip();
        if (preg_match('`.{3,}`', $url)) {
            $urlg .= stripslashes($url);
            ?>
            Pour garder votre configuration, garder <a href="<?php echo $urlg ?>">ce lien</a> dans vos marques pages. <br /><br />
            <?php
        }
        else {
            ?>
            Aucune différence avec la configuration utilisée détectée : <a href="<?php echo $urlg ?>">voici le lien</a><br /><br />
            <?php
        }
    }
}
elseif (isset($_POST['log'])) {
    //if(isset($_POST['log']) && strlen(trim($_POST['log'])) > 0 && is_numeric($_POST['pvrest']))  // ne faire que si valider a été cliqué ET SI C'EST PAS VIDE ;)
    if (strlen(trim($_POST['log'])) == 0) { echo 'Erreur : vous n\'avez pas rempli le log<br />'; }
    if (!is_numeric($_POST['pvrest'])) { echo 'Erreur : vous n\'avez pas mis un nombre dans le formulaire de calcul de PV<br />'; }
}
?>
<!-- Création de la zone de texte pour entrer le log  -->
<form id="form" action="<?php echo $_SERVER["REQUEST_URI"]; ?>" method="post">
  <p><input type="submit" value="Valider" /></p>
<table>
<tr><td><textarea id="input" name="log" rows="20" cols="60" ></textarea></td><td>
<div id="bloc2" class="margeleft" style="display:<?php echo ($simplifie)? 'none':'Inline'; // simplification ?>">
  <div class="minititle">Options disponibles (ne rien toucher pour laisser la configuration par défaut) :</div>
  <label class="labelbox" title="Calcul de stats affichées à la fin du log résultat"><input type="checkbox" name="stat" value="1" <?php echo $autostats ?> /> Statistiques globales</label>
  <label class="labelbox" title="Détail les stats héros par héros"><input type="checkbox" name="statdet" value="1" <?php echo isset($statdet)? $statdet : $dstatdet; ?> /> Statistiques par héros</label>
  <label class="labelbox" title="Masque les PV du log"><input type="checkbox" name="secret" value="1" /> Masquer les PV du log</label>
  <label class="labelbox" title="Ajoute le lien du convertisseur en fin de log"><input type="checkbox" name="pub" value="1" <?php echo isset($pub)? $pub : $dpub; ?> /> Publicité en fin de log</label>  
  <label class="labelbox" title="Ajoute des balises de citations autour du log"><input type="checkbox" name="quote" value="1" /> Balise de citation</label>
  <label class="labelbox" title="Les pseudos ciblent (lien url) vers leur classement"><input type="checkbox" name="affpseudo" value="1" /> Linker les pseudos du log sur le classement</label>
  <label class="labelbox" title="Les pseudos ciblent (lien url) vers leur classement"><input type="checkbox" name="affpseudostat" value="1" /> Linker les pseudos des stats sur le classement</label>
  <label class="labelbox" title="Les clans ciblent (lien url) vers leur page IG"><input type="checkbox" name="affclan" value="1" /> Linker les clans sur leur page IG</label>
  <label class="labelbox" title="Supprime les lignes n'ayant rien à faire ici"><input type="checkbox" name="lignenlog" value="1" /> Supprimer les lignes non reconnues par le script</label>
  <label class="labelbox" title="Si des sauts de lignes sont présents, les maintiens (un maximum à suivre)"><input type="checkbox" name="lignevide" value="1" /> Maintenir les sauts de lignes</label>
  <label class="labelbox" title="Calcul l'url retrouvant vos paramétrages de balises"><input type="checkbox" name="logurl" value="1" /> Calcul de l'url pour reproduire la configuration utilisée</label>  
  <label class="labelbox" title="Entrer ici vos PV avant attaque pour calculer vos PV entre chaque action">PV possédés avant les attaque reçues : <input type="text" size="5" name="pvrest" value="0"></label>
  <label class="labelbox" title="Permet de modifier comment sont affichés les PV entre chaque action, où XX est remplacé par les PV restants">Affichage des PV restants entre chaque attaque : <input type="text" name="pvsynt" value="<?php echo isset($_GET['pvsynt']) ? secur_ent($_GET['pvsynt']) : ' { PV restant : XX }' ?>" ></label>
  <label class="labelbox" title="Choisir le nombre de secondes provoquant une séparation de deux actions (0 pour le désactiver)">Délais en seconde avant un saut de ligne entre deux logs : <input type="text" size="5" name="secact" value="<?php echo isset($_GET['secact']) ? secur_ent($_GET['secact']) : $dsecact ?>"></label>
</div>
</td></tr></table>
<div id="bloc3" style="display:<?php echo ($simplifie)? 'none':'Inline'; // simplification ?>">
<div class="minititle">Pour modifier les balises entourant chaque ligne de log :</div>
  <span class="labelbox"><label>Log de coup : <input type="text" name="coup" value="<?php echo isset($_GET['coup']) ? secur_ent($_GET['coup']) : $dcoup ?>"></label> --
  <input type="text" name="fcoup" value="<?php echo isset($_GET['fcoup']) ? secur_ent($_GET['fcoup']) : $dfcoup ?>" ></span>
  <span class="labelbox"><label>Log de soin : <input type="text" name="soin" value="<?php echo isset($_GET['soin']) ? secur_ent($_GET['soin']) : $dsoin ?>"></label> --
  <input type="text" name="fsoin" value="<?php echo isset($_GET['fsoin']) ? secur_ent($_GET['fsoin']) : $dfsoin ?>" ></span>
  <span class="labelbox"><label>Log d'esquive : <input type="text" name="esquive" value="<?php echo isset($_GET['esquive']) ? secur_ent($_GET['esquive']) : $desquive ?>" ></label> --
  <input type="text" name="fesquive" value="<?php echo isset($_GET['fesquive']) ? secur_ent($_GET['fesquive']) : $dfesquive ?>" ></span>
  <span class="labelbox"><label>Log de pavois : <input type="text" name="pavois" value="<?php echo isset($_GET['pavois']) ? secur_ent($_GET['pavois']) : $dpavois ?>" ></label> --
  <input type="text" name="fpavois" value="<?php echo isset($_GET['fpavois']) ? secur_ent($_GET['fpavois']) : $dfpavois ?>" ></span>
  <span class="labelbox"><label>Log de poison : <input type="text" name="poison" value="<?php echo isset($_GET['poison']) ? secur_ent($_GET['poison']) : $dpoison ?>" ></label> --
  <input type="text" name="fpoison" value="<?php echo isset($_GET['fpoison']) ? secur_ent($_GET['fpoison']) : $dfpoison ?>" ></span>
  <span class="labelbox"><label>Log de brulure : <input type="text" name="feu" value="<?php echo isset($_GET['feu']) ? secur_ent($_GET['feu']) : $dfeu ?>" ></label> --
  <input type="text" name="ffeu" value="<?php echo isset($_GET['ffeu']) ? secur_ent($_GET['ffeu']) : $dffeu ?>" ></span>
  <span class="labelbox"><label>Log de gel : <input type="text" name="gel" value="<?php echo isset($_GET['gel']) ? secur_ent($_GET['gel']) : $dgel ?>" ></label> --
  <input type="text" name="fgel" value="<?php echo isset($_GET['fgel']) ? secur_ent($_GET['fgel']) : $dfgel ?>" ></span>
  <span class="labelbox"><label>Log de charge : <input type="text" name="charge" value="<?php echo isset($_GET['charge']) ? secur_ent($_GET['charge']) : $dcoup ?>" ></label> --
  <input type="text" name="fcharge" value="<?php echo isset($_GET['fcharge']) ? secur_ent($_GET['fcharge']) : $dfcoup ?>" ></span>
  <span class="labelbox"><label>Log de mort : <input type="text" name="mort" value="<?php echo isset($_GET['mort']) ? secur_ent($_GET['mort']) : $dmort ?>" ></label> --
  <input type="text" name="fmort" value="<?php echo isset($_GET['fmort']) ? secur_ent($_GET['fmort']) : $dfmort ?>" ></span>
  <span class="labelbox"><label>Log de bâtiment : <input type="text" name="batiment" value="<?php echo isset($_GET['batiment']) ? secur_ent($_GET['batiment']) : $dbatiment ?>" ></label> --
  <input type="text" name="fbatiment" value="<?php echo isset($_GET['fbatiment']) ? secur_ent($_GET['fbatiment']) : $dfbatiment ?>" ></span>
  <span class="labelbox"><label>Log de mes kill  : <input type="text" name="kill" value="<?php echo isset($_GET['kill']) ? secur_ent($_GET['kill']) : $dkill ?>" ></label> --
  <input type="text" name="fkill" value="<?php echo isset($_GET['fkill']) ? secur_ent($_GET['fkill']) : $dfkill ?>" ></span>
  <span class="labelbox"><label>'Nombre' dans les stats : <input type="text" name="statsynt" value="<?php echo isset($_GET['statsynt']) ? secur_ent($_GET['statsynt']) : $dstatsynt ?>" ></label> --
  <input type="text" name="fstatsynt" value="<?php echo isset($_GET['fstatsynt']) ? secur_ent($_GET['fstatsynt']) : $dfstatsynt ?>" ></span>
</div>
  <p><input type="submit" value="Valider" /></p>
</form>

<div id="changelog"><br />Changelog :
<br />2.001 :
<br />- L'url peut maintenant sauvegarder le stats détaillés
<br />- Correction d'un bug sur la sauvegarde de la suppression des stats globales
<br />- Le calcul de l'url passe même si on ne remplit pas le log
<br />2.000 :
<br />- Refonte graphique
<br />- Correction du log de feu
<br />1.895 :
<br />- Log de gel ajouté
<br />- Stats+ : ligne de total complétée avec les logs indépendants d'action de joueurs (poison, gel, brulure)
<a href="#" id="viewchangelog" onclick="javascript:document.getElementById('changelogsuite').style.display='inline';document.getElementById('viewchangelog').style.display='none';return false;"><br />Afficher la suite</a>
<span id="changelogsuite" style="display:none">
<br />1.894 :
<br />- Correction du total qui s'affichait plus en premier dans stats+
<br />- Suppression de la couleur en cours pour les lignes non de log
<br />1.890 à 1.893 :
<br />- Ajout du nombre d'actions dans les stats détaillées
<br />- Correction, le nombre de PV n'était pas affiché dans les stats+ de nos actions
<br />- Affichage du résultat Total (sous le format du stats+) avant le cadre afin de voir rapidement nos dégâts occassionnés
<br />- PV du poison de nouveau OK.
<br />1.888 et 1.889 :
<br />- Possibilité de rentrer ses propres logs
<br />- Mise à jour de l'affichage des stats pour l'affichage de ses logs
<br />1.887 :
<br />- Le poison ne compte plus dans le nombre d'actions reçues
<br />- Détection de l'heure et du clan améliorée lors d'une charge avec un nom de monture moisi
<br />1.886 :
<br />- ajout de la possibilité d'enlever la pub (faire un calcul de l'url en décochant la case de pub)
<br />- ajout d'une possibilité de simplification de l'affichage
<br />1.884 et 1.885 :
<br />- Ajout d'un saut de ligne quand deux actions sont espacées de 10 minutes
<br />- Certains noms de monture n'étaient pas reconnus, empêchant la détection de l'heure et du clan
<br />1.883 :
<br />- Ajout de la syntaxe des attaques partiellement bloquées
<br />1.881 et 1.882 :
<br />- Correction, les soins des personnages féminin n'étaient pas détectés.
<br />- Correction, le double espace causait problème parfois pour récupérer le clan/pseudo
<br />1.87 et 1.88 :
<br />- Légère modification de la présentation du stat+ : coup ramené toujours en premier, total calculé, et tabulation séparant les actions.
<br />1.86 :
<br />- Ajout des stats détaillées héros par héros (stat+)
<br />- Ajout du changelog
<br />1.85 :
<br />- Ajout de la possibilité de mettre les pseudos et les clans en lien vers leur page IG
<br />- Ajout d'une <a href="<?php echo query_strip().'?config=2' ?>">configuration</a> avec les entrées de formulaires vides
<br />Précédents ajouts :
<br />- Ajout du cas du log de kill
<br />- Traitement du log de la brulure de feufolay
<br />- Corrections de cas particuliers non gérés
</span>
<br /><font color=white> Mots clés : HC Heroes Chonicles convertisseur de log logs convertlog calculateur calcul </font>
<br />
</div>
</body>
</html>
<?php
    
    function dateToTimestamp($heure)
    {
        //[27/01 19 h 42 : 13]  
        if (preg_match('`(\d+)/(\d+) (\d+) h (\d+) : (\d+)`',$heure,$match)) {
            return mktime($match[3], $match[4], $match[5], $match[2], $match[1], 2002); 
        }
        else return "erreur";
    }
    
    function traiter_heure(&$date1, &$date2, &$secact) {
        //echo $date1.'<br>';
        $date1 = dateToTimestamp($date1);
        if ($date1 - $date2 > $secact ) $ret = true;
        else $ret = false;
        $date2 = $date1;
        return $ret;
    }
    function inc2(&$var,$plus) {
        if (isset($var)) $var+=$plus;
        else $var = $plus;
    }
    function inc(&$var) {
        if (isset($var)) $var++;
        else $var=1;
    }
    
    function end_url() {
        $end = $_SERVER['PHP_SELF'];
        $end = preg_replace('`[^/]+$`','',$end);
        $end .= query_strip();
        return $end;
    }
?>