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;
}
?>