Source du fichier recreatelog.php :
<?php $simplifie = isset($_GET['simpl']); ?>
<!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,convertlog,convertisseur,calculateur,log,logs" />
<title>Recréateur 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>
Recréateur de log HC v1.1 <span id="by">(par LittleBoss)</span></div>
<div id="entete">Cet outil permet de permet de recréer le log reçu par un joueur en regroupant le log de ses attaquants.
<br />Entrer les logs ci dessous en préfixant chaque log avec une ligne contenant uniquement le pseudo de l'attaquant, le log s'affichera au dessus de la zone de texte.
<br />Il y a ensuite la possibilité de valider aussitôt le log résultat pour le faire passer par le convertisseur de log.
</div>
<?php
if (isset($_POST['log']) && strlen(trim($_POST['log'])) > 2) {
// initialisation des valeurs par défaut des logs
$dsecact=600;
$pub=isset($_GET['pub'])? 'checked="check"' : '';
$autostats=isset($_GET['stats'])? '' : 'checked="check"';
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 = ''; $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 = '';
}
$fichier_log = explode("\n", $_POST['log']);
$log = array();
$coup = 'coup';
$soin = 'soin';
$esquive = 'esquive';
$pavois = 'pavois';
$pavoispartiel = 'pavoispartiel';
$kill = 'kill';
$charge = 'charge';
$mort = 'mort';
$templatelog[$coup] = '{heure}{clan}{attaquant} vous a attaqué avec {arme} et vous a fait perdre {pv} PV !';
$templatelog[$soin] = '{heure}Vous avez été soigné par {clan}{attaquant} qui vous a rendu {pv} PV!';
$templatelog[$esquive] = '{heure}Vous avez esquivé l\'attaque de {clan}{attaquant}!';
$templatelog[$pavois] = '{heure}Vous avez bloqué l\'attaque de {clan}{attaquant}!';
$templatelog[$pavoispartiel] = '{heure}Vous avez partiellement bloqué l\'attaque de {clan}{attaquant}!';
$templatelog[$charge] = '{heure}{clan}{monture} la monture de {attaquant} vous a chargé et vous a fait perdre {pv} PV !';
$templatelog[$kill] = '{heure}Vous avez succombé aux attaques de {clan}{attaquant} !!';
$templatelog[$mort] = '{heure}La mort vous prend 10% de votre or et XX points d\'expérience !';
$attaquant = 'Inconnu'; $clan = ''; $cible = 'the over mega cible';
foreach($fichier_log as $lignei) {
if($lignei) { // si la ligne i est non vide
$lignei = ' '.trim(preg_replace('`:\s*$`','',$lignei));
$lignei = str_replace(' ',' ',$lignei);
// définition du clan et de l'attaquant
if (preg_match('`^\s*(\[[^]]+\])\s*(\S+)\s*$`',$lignei,$match)) {
$clan = "$match[1] "; $attaquant = $match[2];
continue;
}
elseif (preg_match('`^\s*(\S+)\s*(\[[^]]+\])\s*$`',$lignei,$match)) {
$clan = "$match[2] "; $attaquant = $match[1];
continue;
}
elseif (preg_match('`^\s*(\S+)\s*$`',$lignei,$match)) {
$attaquant = $match[1];
continue;
}
if (preg_match('`\[?([^\]]*)\]? Vous avez attaqué (.+) avec (.*) en lui faisant perdre`', $lignei, $match)) { $action = $coup; }
elseif (preg_match('`\[?([^\]]*)\]? Vous avez tué (.+) !`', $lignei, $match)) { $action = $kill; }
elseif (preg_match('`\[?([^\]]*)\]? Vous avez soigné ?p?a?r? (.+) en lui rendant`', $lignei, $match)) { $action = $soin; }
elseif (preg_match('`\[?([^\]]*)\]? (.*) vous a esquivé`', $lignei, $match)) { $action = $esquive; }
elseif (preg_match('`\[?([^\]]*)\]? (.*) a bloqué votre attaque`', $lignei, $match)) { $action = $pavois; }
elseif (preg_match('`\[?([^\]]*)\]? (.*) a partiellement bloqué votre attaque`', $lignei, $match)) { $action = $pavoispartiel; }
elseif (preg_match('`\[?([^\]]*)\]? Vous avez chargez (.+) !`', $lignei, $match)) { $action = $charge; }
else { $action = 'suivant'; }
if ($action != 'suivant') {
$i=($action == 'kill')? 90:0;
$match[2] = trim($match[2]);
if ($cible != $match[2]) { $cible = $match[2]; }
if ($action == $coup) {
//echo $lignei;
$arme = $match[3];
}
$timestamp = dateToTimestamp($match[1]).twodigits($i);
while(isset($log[$cible][$timestamp.twodigits($i)])) { if ($action == 'kill') $i--; else $i++; }
$pv = ''; $pv = preg_replace("/.*(rendant|rendu|perdre) ([0-9]+) PV.*/", "$2", $lignei);
$heure = preg_match('`\d+/\d+ \d+ h \d+ : \d+`',$match[1],$res)? '['.$res[0].'] ':'';
$addlog = $templatelog[$action];
//echo $addlog;
while(preg_match('`({(\w+)})`',$addlog,$match)) {
$addlog = preg_replace("`$match[1]`",${$match[2]},$addlog);
}
//echo $addlog;
$log[$cible][$timestamp.twodigits($i)] = $addlog;
if ($action == $kill) {
$addlog = $templatelog[$mort];
while(preg_match('`({(\w+)})`',$addlog,$match)) {
$addlog = preg_replace("`$match[1]`",${$match[2]},$addlog);
}
$i++;
$log[$cible][$timestamp.twodigits($i)] = $addlog;
}
}
}
}
$resultat = '';
foreach($log as $cible => $arraylog) {
$resultat .= "<br />$cible :<br />";
ksort($arraylog);
foreach($arraylog as $line) $resultat .= $line.'<br />';
//print_r($arraylog);echo '<br /><br />';
}
//$log = trim("$log");
$resultat = str_replace('<br />', "\n",$resultat);
?>
<br />[RESULTAT]<br /><br />
<form id="form" action="convertlog.php" method="post">
<input type="submit" value="Lancer le convertisseur de log sur le résultat" />
<table>
<tr><td><p><textarea name="log" rows="20" cols="60" readonly="readonly"><?php echo stripslashes($resultat) ?></textarea></p></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" /> 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 reconnu 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 restant 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="Lancer le convertisseur de log sur le résultat" /></p>
</form>
[OU ENTRER UN NOUVEAU LOG]
<?php
if (isset($_POST['logurl'])) { // calcul l'url direct avec les paramètres de couleurs choisis
$et = ''; $url = '?';
if (preg_match('`normal=1`',$_SERVER["REQUEST_URI"])) { $url .= $et.'normal=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 . 'poison=' . $feu; $et = '\&'; }
if ($ffeu != $dffeu) { $url .= $et . 'fpoison=' . $ffeu; $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 ($autostats != $dautostats) { $url .= $et . 'autostats=0'; $et = '\&'; }
if ($pub != $dpub) { $url.= $et . 'pub=0'; $et = '\&'; }
if ($fstatsynt != $dfstatsynt) { $url.= $et . 'fstatsynt=' . $fstatsynt; $et = '\&'; }
if ($pvsynt != ' { PV restant : XX }') { $url.= $et . 'pvsynt=' . $pvsynt; $et = '\&'; }
if (preg_match('`.{3,}`', $url)) {
echo '________________________________'. '<br />';
$urlg = query_strip();
$urlg .= stripslashes($url);
?>
Pour garder votre configuration, garder <a href="<?php echo $urlg ?>">ce lien</a> dans vos marques pages. <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 ;)
echo 'Log incorrect<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" /></p>
<p><textarea name="log" rows="20" cols="80" ></textarea></p>
<p><input type="submit" value="Valider" /></p>
</form>
<div id="changelog"><br />Changelog :
<br />1.1
<br />- Modification graphique
<br />1.0
<br />- Reprise du code de convertlog
<br /><font color=white> Mots clés : HC Heroes Chonicles convertisseur de log logs convertlog calculateur calcul recreateur recreatelog</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 twodigits($i) {
if ($i < 10) return "0$i";
else return $i;
}
?>