convertlog recreatelog potions plantes stats_clan zn_distance stats_kill cartfidel common_function sources outils

Source du fichier plantes.php :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
 <head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
    <meta name="KEYWORDS" content="heroes,chronicles,HC,plante,plantes,alchimie">
        <title>Répartition des plantes HC</title>
        <?php require_once('common_function.php'); include('designhc.html'); ?>
 </head>
 <style type="text/css">
.couleur_cel_b {
    color: purple;
}
.couleur_cel0 {
    color: black;
}
.couleur_cel1 {
    color: green;
}
.couleur_cel2 {
    color: blue;
}
.couleur_cel3 {
    color: red;
}
</style>
<script type="text/javascript">
<!--
function affichage(liste_pla) {
    document.getElementById('aff').innerHTML = liste_pla;
}
function dectoute() {
    if(document.getElementById('toute').checked==true){
        document.getElementById('toute').checked=false;
    }
}
-->
</script>
  <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>
     Répartition des plantes v1.8 <span id="by">(par LittleBoss)</span></div>
  <div id="entete"><noscript><font color="red">Activer le javascript afin de pouvoir utiliser toutes les possibilités de cet outil</font><br /></noscript>
  Cet outil permet d'obtenir un rapide aperçu de la répartition des plantes de la détection sur <a href="http://heroeschronicles.nainwak.org/">Heroes Chronicles</a>.
  <br />Copier ci dessous toute votre détection objet (clique dans la détection objet, controle A, controle C).
  <a href="#" class="affnext" onclick="affiche(this,'findescr');return false;"><br />Afficher la suite</a>
  <span id="findescr">
  <br />Survoler une case pour afficher les plantes de la case.
  <br />Faites page précédente pour changer quelque chose sans avoir à tout rerentrer.
  <br />La recherche automatique de sa position actuelle peut se tromper dans le cas d'une détection avec très peu d'objets.
  <br />Rester sur une entrée de formulaire pour que s'affiche les détails de son utilisation.
  </span>
  <br /><span id="whatnew">NEW : affichage de la position des auberges et des magasins de magie</span>
  </div>
<?php

if(isset($_POST['log']) && strlen(trim($_POST['log'])) > 0)  // ne faire que si valider a été cliqué ET SI C'EST PAS VIDE ;)
{
  
    
// définition des variables contenant les balises, fonction secur_ent défini en bas du fichier
    
    
$fichier_log explode("\n"$_POST['log']);

    
// boucle qui étudie chaque ligne du log pour le mettre en forme
    
    
    
$verif TRUE$actuel_pla '';
    
$etape 1;    $lig 0$col 0$incer '';
    
$col_case secur_ent($_POST['col_case']);
    if (!
is_int($col_case)) $verif FALSE;
    
$lig_case secur_ent($_POST['lig_case']);
    if (!
is_int($lig_case)) $verif FALSE;
    
$nb_case secur_ent($_POST['nb_case']);
    if (!
is_int($nb_case)) $verif FALSE;
    if (
$nb_case || $nb_case 4) { $nb_case 4; }
    
    if (!isset(
$_POST['toutes'])) {
        
$toutes FALSE;  $etape 0;
        
$regex_pla ''$sep '';
        if (isset(
$_POST['alk'])) { $regex_pla .= 'Alkandyr salum'$sep '|'; }
        if (isset(
$_POST['amy'])) { $regex_pla .= $sep.'Amyris cepa'$sep '|'; }
        if (isset(
$_POST['ang'])) { $regex_pla .= $sep.'Angelica glauca'$sep '|'; }
        if (isset(
$_POST['ast'])) { $regex_pla .= $sep.'Astrae luna'$sep '|'; }
        if (isset(
$_POST['azr'])) { $regex_pla .= $sep.'Azralae oxalis'$sep '|'; }
        if (isset(
$_POST['bli'])) { $regex_pla .= $sep.'Blinium procera'$sep '|'; }
        if (isset(
$_POST['eto'])) { $regex_pla .= $sep.'Etoilum mortem'$sep '|'; }
        if (isset(
$_POST['mol'])) { $regex_pla .= $sep.'Moleculus Herba'$sep '|'; }
        if (isset(
$_POST['pyr'])) { $regex_pla .= $sep.'Pyros lavae'$sep '|'; }
        if (isset(
$_POST['tau'])) { $regex_pla .= $sep.'Taurinum nainis'$sep '|'; }
        if (isset(
$_POST['champi'])) { $regex_pla .= $sep.'Aurisse|Bromoure|Eiffeti|Feith|Foltris|FracheBlou|Gachprom|Ilphyis|Iridioum|Kantas|Konbandite|Mangniftov|Pinquetivi|Sanghi|Vespeine|Warth'; }
        
//echo $regex_pla;
    
}
    else { 
$toutes TRUE$regex_pla 'Alkandyr salum|Amyris cepa|Angelica glauca|Astrae luna|Azralae oxalis|Blinium procera|Etoilum mortem|Moleculus Herba|Pyros lavae|Taurinum nainis|Aurisse|Bromoure|Eiffeti|Feith|Foltris|FracheBlou|Gachprom|Ilphyis|Iridioum|Kantas|Konbandite|Mangniftov|Pinquetivi|Sanghi|Vespeine|Warth'; }
    if (
$verif) {
        
$position['colmin'] = $col_case $nb_case;
        
$position['colmax'] = $col_case $nb_case;
        
$position['ligmin'] = $lig_case $nb_case;
        
$position['ligmax'] = $lig_case $nb_case;
        
//remplissage du tableau
        
foreach($fichier_log as $lignei) {
            
$lignei trim($lignei); 
            if(
$lignei) { // si la ligne i est non vide    
                
if (preg_match("`($regex_pla)`"$lignei,$match)) {
                    if (
$etape == && !$toutes) { $etape 1; }
                    
$actuel_pla $match[0];
                }    
                elseif ( 
$etape == && preg_match('`Distance : \d - Position : (\d+),(\d+)`'$lignei$match)) { 
                    
$etape 2$col $match[1]; $lig $match[2];
                }
                elseif (
$etape == 2) {
                    if (
preg_match('`Type: Plante`'$lignei$match)) { 
                        
inc($nb_plante[$lig][$col]); allonge($liste_pla[$lig][$col],$actuel_pla);
                    }
                    if (
$toutes$etape 1;
                    else 
$etape 0;
                }                        
            }
        }    
    }
    else {
        
$rlig[0] = 0$rcol[0] = 0;
        
$position['ligmin'] = 200$position['ligmax'] = 0$position['colmin'] = 200$position['colmax'] = 0;
        foreach(
$fichier_log as $lignei) {
            
$lignei trim($lignei); 
            if(
$lignei) { // si la ligne i est non vide
                
if (preg_match("`($regex_pla)`"$lignei,$match)) {
                    if (
$etape == && !$toutes) { $etape 1; }
                    
$actuel_pla $match[0];
                }                
                elseif (
preg_match('`Distance : (\d) - Position : (\d+),(\d+)`'$lignei$match)) { 
                    
//recherche de position
                    
if ($col != $match[2] || $lig != $match[3]) { // pour éviter la procédure compare_pos de comparer deux positions identiques
                        
$col $match[2]; $lig $match[3]; $dist $match[1];
                        
//if ($lig == '54' && $col == '43') echo "<br />case $col,$lig";
                        
if ($rlig[0] != 1) {
                            if (
$rlig[0] == 0) { liste_pos($rlig,$lig,$dist); }
                            else 
compare_pos($rlig,$lig,$dist);
                        }
                        if (
$rcol[0] != 1) {
                            if (
$rcol[0] == 0) { liste_pos($rcol,$col,$dist); }
                            else 
compare_pos($rcol,$col,$dist);
                        }
                        
//if ($lig == '54' && $col == '43') echo "fin<br />";
                    
}
                    else { 
$col $match[2]; $lig $match[3]; }
                    if (
$etape == 1$etape 2;
                }
                elseif (
$etape == 2) {
                    if (
preg_match('`Type: Plante`'$lignei$match)) { 
                        
inc($nb_plante[$lig][$col]); allonge($liste_pla[$lig][$col],$actuel_pla);
                        if (
$col $position['colmin']) $position['colmin'] = $col;
                        if (
$col $position['colmax']) $position['colmax'] = $col;
                        if (
$lig $position['ligmin']) $position['ligmin'] = $lig;
                        if (
$lig $position['ligmax']) $position['ligmax'] = $lig;    
                    }
                    if (
$toutes$etape 1;
                    else 
$etape 0;
                }                        
            }
        }
        if (
$rcol[0] != || $rlig[0] != 1) {
            
$tab_lig $rlig[1]; $tab_col $rcol[1];
            if (isset(
$nb_plante[$tab_lig][$tab_col])) {
                
rech_case($rcol,$rlig,$nb_plante);
            }
            
$incer ' (erreur possible)';
        }
        
$col_case $rcol[1];
        
$lig_case $rlig[1];
        
        
$position['colmin'] = min($col_case,$position['colmin']);
        
$position['colmax'] = max($col_case,$position['colmax']);
        
$position['ligmin'] = min($lig_case,$position['ligmin']);
        
$position['ligmax'] = max($lig_case,$position['ligmax']);
    }

    echo 
"Votre position : $col_case,$lig_case$incer";
        
    
initPositionAuberges($posAuberges);
    
initPositionMagie($posMago);

    
$bgcolor '';
    
    
$tab_affichage '<table BORDER><td></td>';
    for(
$j $position['colmin'] ; $j <= $position['colmax'] ; $j++) {
        
$tab_affichage .= '<td ALIGN="center" WIDTH="30" HEIGHT="30" >'.$j.'</td>';
    }
    
    for(
$i $position['ligmin'] ; $i <= $position['ligmax'] ; $i++) {
        
$tab_affichage .= '</tr><tr><td ALIGN="center" WIDTH="30" HEIGHT="30" >'.$i.'</td>';
        for(
$j $position['colmin'] ; $j <= $position['colmax'] ; $j++) {
            if (!isset(
$nb_plante[$i][$j])) { $nb_plante[$i][$j] = ''$liste_pla[$i][$j] = ''; }
            
//$tab_affichage .= '<td ALIGN="center" WIDTH="30" HEIGHT="30">'.$nb_plante[$i][$j].'</td>';
            
$nb_act $nb_plante[$i][$j]; if ($nb_act >6$k=3; elseif ($nb_act>3$k=2; elseif ($nb_act>0$k=1; else $k=0;
            if (
$i == $lig_case && $j == $col_case) { $bgcolor = ($k==2)? 'bgcolor="darkblue" ':'bgcolor="blue" '; }
            elseif(isset(
$posAuberges[$j][$i])) { $bgcolor 'bgcolor="orange"'; }
            elseif(isset(
$posMago[$j][$i])) { $bgcolor 'bgcolor="yellow"'; }
            
$tab_affichage .= "<td onmouseover=\"javascript:affichage('$j,$i :<br />".$liste_pla[$i][$j]."')\" ALIGN=\"center\" $bgcolor class=\"couleur_cel$k\" >".$nb_act.'</td>';
            
$bgcolor '';
        }
    }
    
$tab_affichage .= '</table>';
    
    echo 
"<table><td valign=\"top\" >$tab_affichage";
    echo 
"</td><td id=\"aff\"></td></table>";
/*
    if (isset($_POST['logurl'])) { // calcul l'url direct avec les paramètres de couleurs choisis
        if ($coup != $dcoup) { $url .= $et . 'coup=' . $coup; $et = '\&'; }
        if (preg_match('`.{4,}`', $url)) {
            echo '________________________________'. '<br />';
            $urlg = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"];
            $urlg .= stripslashes($url);
            ?>
            Pour garder votre configuration de couleur, garder <a href="<?php echo $urlg ?>">ce lien</a> dans vos marques pages. <br /><br />
            <?php
        }
        
    }
*/
}
elseif (isset(
$_POST['log'])) {
    echo 
'Erreur : vous n\'avez pas rempli le log<br />';
}
?>
    <!-- Création de la zone de texte pour entrer le log  -->
<form action="<?php echo $_SERVER["REQUEST_URI"]; ?>" method="post">
    <p><input type="submit" value="Valider" /></p>
    <label class="labelbox" title="Visualiser toutes les plantes">Toute les plantes : <input type="checkbox" name="toutes" value="1" checked="check" id="toute" /></label>
    <label title="Tous les Champignons">Champi : <input type="checkbox" name="champi" value="1" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Alkandyr salum">Alk <input type="checkbox" name="alk" value="0" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Amyris cepa">Amy <input type="checkbox" name="amy" value="0" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Angelica glauca">Ang <input type="checkbox" name="ang" value="0" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Astrae luna">Ast <input type="checkbox" name="ast" value="0" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Azralae oxalis">Azr <input type="checkbox" name="azr" value="0" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Blinium procera">Bli <input type="checkbox" name="bli" value="0" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Etoilum mortem">Eto <input type="checkbox" name="eto" value="0" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Moleculus Herba">Mol <input type="checkbox" name="mol" value="0" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Pyros lavae">Pyr <input type="checkbox" name="pyr" value="0" onClick="javascript:dectoute()" /></label>&nbsp;&nbsp;
    <label title="Taurinum nainis">Tau <input type="checkbox" name="tau" value="0" onClick="javascript:dectoute()" /></label>
    <table>
    <tr><td><textarea id="input" name="log" rows="20" cols="60" ></textarea></td><td>
    <label class="labelbox" title="Ligne de votre case">Ligne de sa case : <input type="text" name="lig_case" value='auto' size=5></label>
    <label class="labelbox" title="Colonne de votre case">Colonne de sa case : <input type="text" name="col_case" value='auto' size=5></label>
    <label class="labelbox" title="Nombre entre 1 et 4">Nombre de cases à la ronde : <input type="text" name="nb_case" value='auto' size=5></label>
    </td></tr></table>
    <p><input type="submit" value="Valider" /></p>
</form>
 <p></p>
    <div id="changelog"><br />Changelog :
    <br />1.8 :
    <br />- Modification graphique
    <br />1.7 : 
    <br />- Affiche une couleur spéciale sur les auberges (orange) et sur les magasins de magie (jaune)
    <br />1.63 :   
    <br />- Le nombre de plantes sur sa case ne peut plus être de la même couleur que celle de fond
    <br />- Amélioration de la précision du calcul automatique de sa position
    <br />1.62 :   
    <br />- Cadre bloqué en haut afin d'éviter un décalage lors d'un trop grand nombre de plante sur une case
    <br />1.61 :   
    <br />- Correction d'un bug : Des balises étaient oubliées ce qui entrainaient un décochage de la case toute inopportun sur certains navigateurs
    <br />1.6 :  
    <br />- Affiche la liste des plantes au survol plutôt qu'au clic
    <br />- Le cas particulier où notre case n'apparait pas dans le tableau n'existe plus
    <br />1.5 :  
    <br />- La case toute se décoche toute seule si on coche une autre case
    <br />1.4 :  
    <br />- Cliquer sur une case affiche les plantes de la case
    <br />1.3 :  
    <br />- On peut maintenant sélectionner les plantes à apparaitre
    <br />1.2 :  
    <br />- Optimisation du code
    <br />- Correction d'un problème pour le cas non automatique
    <br />1.1 :
    <br />- Ajout des couleurs
 </div>
</body>
</html>
<?php
    
    
    
function inc(&$i
    {
        if (isset(
$i)) $i++;
        else 
$i 1;
    }
    
    function 
allonge(&$var,$txt
    {
        
$sdl '<br />';
        if (isset(
$txt)) $var .= "$txt$sdl";
        else 
$var $txt.$sdl;
    }    
    
    function 
compare_pos(&$coord,$pos,$dist) {
        
$fin $coord[0] + 1$min $pos-$dist$max $pos+$dist$i 1;
        while (
$i $fin) {
            
//echo '<br />if ($coord[$i] < $min || $coord[$i] > $max) {<br />';
            //echo "if ($coord[$i] < $min || $coord[$i] > $max) {<br />";
            
if ($coord[$i] < $min || $coord[$i] > $max) {
                
//echo "suppr<br>"; 
                
if ($coord[0] == $i && $i 1) { $coord[0]--; /*$coord[$i] = $coord[$coord[0]];*/ $fin--; }
                else { 
$coord[$i] = $coord[$coord[0]]; $coord[0]--; $fin--; }
            }
            else 
$i++;
        }
        
//echo '<br>';
    
}
    
    function 
liste_pos(&$coord,$pos,$dist) {
        
$deb $pos $dist;
        
$coord[0] = 2*$dist 1;
        for (
$i=$i<=$coord[0] ; $i++) {
            
$coord[$i] = $deb++;
        }
    }
    
    function 
rech_case(&$rcol,&$rlig,$nb_plante) {
        
$col_max $rcol[0]+1$lig_max $rlig[0]+1$nfin TRUE;
        for (
$i=$i<$lig_max && $nfin $i++)
            for (
$j=$j<$lig_max && $nfin $j++)
                if (!isset(
$nb_plante[$rlig[$i]][$rcol[$j]])) { $nfin FALSE$rcol[1] = $rcol[$j]; $rlig[1] = $rlig[$i]; }
    }
    
    function 
initPositionAuberges(&$position)
    {
        
// auberge en carré
        
foreach(array(34,41,49,57) as $x)
        {
            foreach(array(
27,33,39,45,51,57,64) as $y)
            {
                
$position[$x][$y] = 1;
            }
        }
        
        
// spécial ouest
        
$position[26][28] = 1;
        foreach(array(
34,40,51,59) as $y)
        {
            
$position[27][$y] = 1;
        }
        
$position[28][65] = 1;
        
        
// spécial ouest
        
$position[63][27] = 1;
        
$position[66][32] = 1;
        
$position[64][37] = 1;
        
$position[63][43] = 1;
        
$position[64][49] = 1;
        
$position[64][56] = 1;
        
$position[65][63] = 1;
    }
    
    function 
initPositionMagie(&$position)
    {
        
// mago en carré
        
$position[33][31] = 1;
        foreach(array(
30,36,42,54,61) as $y)
        {
            foreach(array(
34,41,49,57) as $x)
            {
                
$position[$x][$y] = 1;
            }
        }
        unset(
$position[34][30]); 
        
//unset($position[41][54]);
        
        // autres
        
foreach(array(34,47,57) as $x) {
            
$position[$x][48] = 1;
        }
    }
?>