Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- include(__DIR__ . "/../evoluhall/fixe.php");
- //KILL le script si la maintenance est en cours
- $dbh = Database::connect();
- $qmaintenance = $dbh->query("SELECT `nbr` FROM `stats` WHERE `cat` = 'maintenance'") ;
- $rmaintenance = $qmaintenance->fetchColumn(); //je compte les lignes de la réponse
- {
- if ($rmaintenance==1) {
- addLogEventCreatureHungry("KILL SCRIPT CAUSE MAINTENANCE");
- die();
- //exit ('<div id="fixe"><center>Le site est en maintenance. Cela ne devrait prendre que quelques minutes...</center></div>');
- }
- else {
- }}
- //Kill le script si le même est déjà en cours
- $qmaintenance = $dbh->query("SELECT `nbr` FROM `stats` WHERE `cat` = 'scriptcreaturehungry'") ;
- $rmaintenance = $qmaintenance->fetchColumn(); //je compte les lignes de la réponse
- {
- if ($rmaintenance==1) {
- addLogEventCreatureHungry("KILL SCRIPT CAUSE DEJA EN COURS");
- echo "<div id='content'>KILL SCRIPT CAUSE DEJA EN COURS</div>";
- die();
- }
- else {
- $dbh->exec("UPDATE stats SET nbr=1 WHERE cat='scriptcreaturehungry'");// active le fonctionnement du script
- echo "<div id='content'>J ai activé le fonctionnement du script en db <br></div>";
- }}
- ?>
- <body>
- <div id='content'>
- <?php
- //CONNEXION A LA BASE
- $dbh = Database::connect();
- //TIMER pour compter la durée du scriot
- $debut = microtime(true);
- //ECRITURE DU LOG
- addLogEventCreatureHungry("DEBUT DU SCRIPT HUNGRY");
- //je demande toutes les creatures avec des PA et qui ont besoin de manger
- $dbh = Database::connect(); //connexion à la bdd
- $repact = $dbh->query('SELECT id FROM creatures WHERE _pa !=0 AND _famine<10');
- $resact = $repact->fetchAll();//je tri le résultat
- //si le résultat est 0 on s'arrète
- if (count($resact) == 0) {echo 'Toutes les creatures affamées ont jouées<br>';
- addLogEventCreatureHungry("toutes les creatures affamées ont jouées");}
- //sinon on fais jouer les creatures
- else { foreach ($resact as $resact2) {//tant qu'il y a des creatures à faire jouer
- echo '<br><br>';
- echo '<b>les creatures affamées doivent jouer ('. (count($resact)) .')</b><br><br>';
- $id=$resact2['id'];//on donne l'id du premier creature à $id
- echo 'le premier creature à jouer sera le '. $id .'<br>';
- addLogEventCreatureHungry("la créature ". $id ." va jouée");
- echo "<br><b>Je suis la créature n° $id et je veux agir !</b> <br>"; //Description Front End
- addLogEventCreatureHungry("Je suis la créature ". $id ." et je veux agir");
- $reponse1 = $dbh->query('SELECT * FROM `creatures` where id='. $id .''); //recupère les informations concernant le creature qui va jouer
- while ($donnees = $reponse1->fetch()) {//tri les données récupérées
- echo 'Ma famine est à ('. $donnees['_famine'] .'), je dois donc manger.<br>';
- addLogEventCreatureHungry("Ma famine est à (". $donnees['_famine'] ."), je dois donc manger.");
- //je regarde s'il y a des plantes sur la case
- $reponse2 = $dbh->query('SELECT COUNT(*) FROM `plantes` WHERE _x='. $donnees['_x'] .' AND _y='. $donnees['_y'] .'') ;
- $resultat2 = $reponse2->fetchColumn();
- echo 'Il y a ('. $resultat2 .') plantes sur ma case.<br><br>';
- addLogEventCreatureHungry("Il y a (". $resultat2 .") plantes sur ma case.");
- //si il y a des plantes sur la case
- if ($resultat2>0) {
- echo "Il y a des plantes sur ma case, je peux donc manger.<br>";
- addLogEventCreatureHungry("Il y a des plantes sur ma case, je peux donc manger.");
- //je mange une plante
- //je selectionne une plante à ces coordonnées
- $selectplante = $dbh->query('SELECT * FROM `plantes` WHERE `_x`='. $donnees['_x'] .' AND `_y`='. $donnees['_y'] .' LIMIT 1');// !!! Ici on règle la quantité de nourriture par plante.
- $resplante = $selectplante->fetch(); //je compte les lignes de la réponse
- echo 'Je vais manger la plante ('. $resplante['id'] .') en '. $donnees['_x'] .' '. $donnees['_y'] .'<br><br>';
- addLogEventCreatureHungry("Je vais manger la plante (". $resplante['id'] .") en ". $donnees['_x'] ." ". $donnees['_y'] ."");
- //je détruit cette plante
- $idp=$resplante['id'];
- Plante::detruirePlante($idp);// ici on détruit la plante
- print 'Plante détruite en x='. $donnees['_x'] .' et y='. $donnees['_y'] .'.<br>';
- addLogEventCreatureHungry("Plante ". $idp ." détruite en x=". $donnees['_x'] ." et y=". $donnees['_y'] .".");
- //OPTI FAIRE UNE SEULE COMMANDE
- $dbh->exec('UPDATE creatures SET _famine= LEAST(10,_famine+1) WHERE id = '. $id .'');// !!! Ici on règle la quantité de nourriture (satiété+1) par plante.
- echo 'Ma famine est remontée de 1 points.<br>';
- addLogEventCreatureHungry("Ma famine est remontée de 1 points.");
- $dbh->exec('UPDATE `creatures` SET _pa=_pa-1 WHERE id = '. $id .''); //ici on enlève un PA à la créature
- echo 'Manger m a couté un pa, il me reste ('. $donnees['_pa'] .') Points d actions.<br>';
- addLogEventCreatureHungry("Manger m a couté un pa, il me reste (". $donnees['_pa'] .") Points d actions.");
- //FIN OPTI
- $planteX=$donnees['_x'];
- $planteY=$donnees['_y'];
- echo 'J ai manger une plante en '. $planteX .' et '. $planteY .'<br>';
- addLogEventCreatureHungry("j'ai mangé une plante en ". $planteX ." et ". $planteY ."");
- //ajout d'un évènement manger
- Evenement::eventmanger($id,$planteX,$planteY,$idp);
- echo 'J ai ajouté un évènement manger<br><br>';
- addLogEventCreatureHungry("J ai ajouté un évènement manger");
- $reponse2->closeCursor(); //ferme le curseur qui compte les plantes
- }//ferme le if il y a des plantes sur la cases
- //sinon il n'y a pas de plantes sur la case
- else {echo "Il n'y a pas de plantes sur ma case, je vais devoir me déplacer.<br>"; //si il n'y a pas de plantes, je me déplace
- addLogEventCreatureHungry("Il n'y a pas de plantes sur ma case, je vais devoir me déplacer.");
- //je récupère la vue du creature $id
- $vue=$donnees['_vue'];
- echo 'Ma vue est de '. $vue .' cases.<br>';
- addLogEventCreatureHungry("Ma vue est de ". $vue ." cases.");
- $x=$donnees['_x'];
- $y=$donnees['_y'];
- echo 'Je suis en X='. $x .' et Y='. $y .'<br>';
- addLogEventCreatureHungry("Je suis en X=". $x ." et Y=". $y ."");
- $xvuemax=$x+$vue;
- $xvuemin=$x-$vue;
- $yvuemin=$y-$vue;
- $yvuemax=$y+$vue;
- echo 'Je vois donc jusqu en Xmax='. $xvuemax .', Xmini='. $xvuemin .', Ymax='. $yvuemax .', Ymini=' . $yvuemin .'<br><br>';
- addLogEventCreatureHungry("Je vois donc jusqu en Xmax=". $xvuemax .", Xmini=". $xvuemin .", Ymax=". $yvuemax .", Ymini=" . $yvuemin ."");
- //Je cherche la plante la plus proche en nombre de déplacement : formule améliorable à priori avec un truc comme MAX(ABS(_x), ABS(_y)))
- //Cette ligne prend la plante la plus proche dans la liste (garder cette ligne pour éviter de tourner en rond)
- $reponsevue = $dbh->query('SELECT * FROM plantes WHERE _x>='. $xvuemin .' AND _x<='. $xvuemax .' AND _y>=' . $yvuemin .' AND _y<='. $yvuemax .' ORDER BY SQRT(((_x-' .$x. ')*(_x-' .$x. '))+((_y-' .$y. ')*(_y-' .$y. '))) LIMIT 1');//changement de coordonnées XY
- $resultatvue = $reponsevue->fetchAll();
- //Est ce qu'il y a des plantes dans ma vue ?
- //SI il y a PAS de plantes dans ma vue
- if (count($resultatvue) == 0) {echo 'Il n y a pas de plantes dans ma vue<br>';
- addLogEventCreatureHungry("Il n y a pas de plantes dans ma vue");
- echo 'Je dois me déplacer vers le centre du monde<br><br>';
- addLogEventCreatureHungry("Je dois me déplacer vers le centre du monde");
- echo 'Je suis en X='. $x .' et Y='. $y .'<br>';
- addLogEventCreatureHungry("Je suis en X=". $x ." et Y=". $y ."");
- //je dois me déplacer vers le centre du monde
- //dans quel sens je dois me déplacer en X ?
- //si je suis déjà à la bonne coordonnées X
- if (((0)-($x))==0) { echo 'Je ne dois pas me déplacer en X<br>';
- $depx=0;}
- //sinon je dois me déplacer en X
- else { echo 'Je dois me déplacer en X<br>';
- //si je dois me déplacer en -X
- if (((0)-($x))<0) {echo 'Je dois me déplacer -X<br>';
- $depx=(-1);}
- //sinon je dois me déplacer en +X
- else {echo 'Je dois me déplacer en +X<br>';
- $depx=(+1);}
- }//ferme le else déplacement X
- // dans quel sens je dois me déplacer en Y ?
- //Si je suis déjà à la bonne coordonnées Y
- if (((0)-($y))==0) { echo 'Je ne dois pas me déplacer en Y<br>';
- $depy=0;}
- //sinon je dois me déplacer en Y
- else { echo 'Je dois me déplacer en Y<br>';
- //si je dois me déplacer en -Y
- if (((0)-($y))<0) {echo 'Je dois me déplacer -Y<br>';
- $depy=(-1);}
- //sinon je dois me déplacer en +Y
- else {echo 'Je dois me déplacer en +Y<br>';
- $depy=(+1);}
- }//ferme le else déplacement Y
- // si je ne dois pas me déplacer ni en X ni en Y
- if ($depy==0 && $depx==0){ echo 'je ne dois pas me déplacer, je suis LE CENTRE DU MONDE !';
- addLogEventCreatureHungry("je ne dois pas me déplacer, je suis LE CENTRE DU MONDE !");
- Evenement::eventgenome($id);
- echo 'j ai ajouté un evenement genome<br>';
- addLogEventCreaturenotHungry("j ai ajouté un evenement genome<br>");
- echo 'je perd quand même un PA';
- addLogEventCreatureHungry("je perd quand même un PA");
- $dbh->exec('UPDATE `creatures` SET _pa=_pa-1 WHERE id = '. $id .'');// je perd un pa
- }//ferme le if centre du monde
- // sinon je me déplace
- else {
- echo 'Je dois me déplacer selon X='. $depx .' et Y='. $depy .'<br>';
- addLogEventCreatureHungry("Je dois me déplacer selon X=". $depx ." et Y=". $depy ."");
- //je me déplace vers le centre
- $dbh->exec('UPDATE `creatures` SET _x=_x+'. $depx .', _y=_y+'. $depy .' WHERE id = '. $id .'');//changement de coordonnées XY
- // je perd un pa
- $dbh->exec('UPDATE `creatures` SET _pa=_pa-1 WHERE id = '. $id .'');// je perd un pa
- // je verifie ma nouvelle position
- $reponse3 = $dbh->query('SELECT * FROM `creatures` where id='. $id .''); //recupère les nouvelles informations concernant le creature
- while ($donnees3 = $reponse3->fetch()){
- echo 'Je me suis déplacé vers le centre, je suis maintenant en X=('. $donnees3['_x'] .') et Y=('. $donnees3['_y'] .')<br><br>';
- addLogEventCreatureHungry("je me suis déplacé vers le centre, je suis maintenant en X=(". $donnees3['_x'] .") et Y=(". $donnees3['_y'] .")");
- //j'ajoute un evenement deplacement
- Evenement::eventdepF($id);
- echo 'J ai ajouté un évènement déplacement<br><br>';
- addLogEventCreatureHungry("J ai ajouté un évènement déplacement");
- echo 'Mon déplacement m a couté un pa, il me reste ('. $donnees3['_pa'] .') Points d actions.<br>';
- addLogEventCreatureHungry("Mon déplacement m a couté un pa, il me reste (". $donnees3['_pa'] .") Points d actions.");
- //Est ce que je suis Hancloc?
- $hancloc='Hancloc';
- $template=$donnees3['_template'];
- echo "template = ". $template ." <br>";
- if ($template==$hancloc) { echo "je suis hancloc je ne me reproduis pas<br>";
- addLogEventCreatureHungry("Je suis Hancloc je ne me reproduis pas");}
- else { echo "je ne suis pas hancloc je vais voir si je me reproduit<br>";
- addLogEventCreatureHungry("Je ne suis pas Hanloc je vais voir si je me reproduit");
- //je regarde si il y a des créatures de même race sur ma case
- // nouvelles donnees x;y
- $x=$donnees3['_x'];
- $y=$donnees3['_y'];
- $owner=$donnees['_owner'];
- //MAJ NEWBORN #1
- include('newborn.php');
- }//ferme le while informations de la créature
- }//ferme le est ce que je suis hancloc
- }//ferme le else je dois me déplacer
- }//ferme le si il n'y a pas de plantes dans ma vue
- else { //il y a des plantes dans ma vue
- foreach ($resultatvue as $resvue) {
- //je cherche la plante la plus proche
- echo 'la plante la plus proche de moi est la plante numéro '. $resvue['id'] .'<br>';
- addLogEventCreatureHungry("la plante la plus proche de moi est la plante numéro ". $resvue['id'] ."");
- // je liste les informations de la plante
- echo 'la plante numéro '. $resvue['id'].' est en X='. $resvue['_x'] .' et Y='. $resvue['_y'] .'<br>';
- addLogEventCreatureHungry("la plante numéro ". $resvue['id']." est en X=". $resvue['_x'] ." et Y=". $resvue['_y'] ."");
- //dans quel sens je dois me déplacer en X ?
- //si je ne dois pas me déplacer en X
- if ((($resvue['_x'])-($x))==0) { echo 'Je ne dois pas me déplacer en X<br>';
- $depx=0;}
- //sinon je dois me déplacer en X
- else { echo 'Je dois me déplacer en X<br>';
- //si je dois me déplacer en -X
- if ((($resvue['_x'])-($x))<0) {echo 'Je dois me déplacer -X<br>';
- $depx=(-1);}
- //sinon je dois me déplacer en +X
- else {echo 'Je dois me déplacer en +X<br>';
- $depx=(+1);}
- }
- // dans quel sens je dois me déplacer en Y ?
- //si je ne dois pas me déplacer en Y
- if ((($resvue['_y'])-($y))==0) { echo 'Je ne dois pas me déplacer en Y<br>';
- $depy=0;}
- //sinon je dois me déplacer en Y
- else { echo 'Je dois me déplacer en Y<br>';
- //Si je dois me déplacer en -Y
- if ((($resvue['_y'])-($y))<0) {echo 'Je dois me déplacer -Y<br>';
- $depy=(-1);}
- //sinon je dois me déplacer en +Y
- else {echo 'Je dois me déplacer en +Y<br>';
- $depy=(+1);}
- }
- echo 'Je dois me déplacer selon X='. $depx .' et Y='. $depy .'<br>';
- addLogEventCreatureHungry("Je dois me déplacer selon X=". $depx ." et Y=". $depy ."");
- // je me déplace vers la plante
- $dbh->exec('UPDATE `creatures` SET _x=_x+'. $depx .', _y=_y+'. $depy .' WHERE id = '. $id .'');//changement de coordonnées XY
- // je perd un pa
- $dbh->exec('UPDATE `creatures` SET _pa=_pa-1 WHERE id = '. $id .'');// je perd un pa
- // je verifie ma nouvelle position
- $reponse3 = $dbh->query('SELECT * FROM `creatures` where id='. $id .''); //recupère les nouvelles informations concernant le creature
- while ($donnees3 = $reponse3->fetch()){
- echo 'Je me suis déplacé, je suis maintenant en X=('. $donnees3['_x'] .') et Y=('. $donnees3['_y'] .'), je mangerais plus tard.<br><br>';
- addLogEventCreatureHungry("Je me suis déplacé, je suis maintenant en X=(". $donnees3['_x'] .") et Y=(". $donnees3['_y'] ."), je mangerais plus tard.");
- //j'ajoute un evenement deplacement
- Evenement::eventdepF($id);
- echo 'J ai ajouté un évènement déplacement<br><br>';
- addLogEventCreatureHungry("J ai ajouté un évènement déplacement");
- echo 'Mon déplacement m a couté un pa, il me reste ('. $donnees3['_pa'] .') Points d actions.<br>';
- addLogEventCreatureHungry("Mon déplacement m a couté un pa, il me reste (". $donnees3['_pa'] .") Points d actions.");
- //Est ce que je suis Hancloc?
- $hancloc='Hancloc';
- $template=$donnees3['_template'];
- echo "template = ". $template ." <br>";
- if ($template==$hancloc) { echo "je suis hancloc je ne me reproduis pas<br>";
- addLogEventCreatureHungry("Je suis Hancloc je ne me reproduis pas");}
- else { echo "je ne suis pas hancloc je vais voir si je me reproduit<br>";
- addLogEventCreatureHungry("Je ne suis pas Hanloc je vais voir si je me reproduit");
- //je regarde si il y a des créatures de même race sur ma case
- // nouvelles donnees x;y
- $x=$donnees3['_x'];
- $y=$donnees3['_y'];
- $owner=$donnees['_owner'];
- //MAJ NEWBORN #2
- include('newborn.php');
- }//ferme le else je ne suis pas hancloc
- }//ferme les nouvelles données de la créature
- }//ferme le foreach plantes dans ma vue
- }//ferme le si il y a des plantes dans ma vue
- }//ferme le si il n'y a pas de plantes sur ma case
- $reponse1->closeCursor(); //ferme les informations de début de script
- }//ferme les premières informations de la créatures
- } //ferme le si il y a des creatures à faire jouer.
- } //ferme le foreach
- //TIMER
- $fin = microtime(true);
- $delai = date("U",$fin - $debut);
- if ($delai>55) {echo "Attention délais supérieur à 55s : ". $delai ."s";
- mail('mattis.gorzak@gmail.com', 'scriptcreaturehungry a dépassé 55s :'. $delai .'s', 'scriptcreaturehungry a dépassé 55s :'. $delai .'s', 'Content-type: text/html; charset=iso-8859-1');
- }
- else {echo "délai inférieur à 55s tout va bien";}
- if ($delai!=0){
- $dbh->exec("INSERT INTO timescript VALUES ('scriptcreaturehungry', ". $delai .", NOW())");
- }else {}
- addLogEventCreatureHungry("FIN DE SCRIPT ALL MONSTRE time : ". $delai ." s");
- $dbh->exec("UPDATE stats SET nbr=0 WHERE cat='scriptcreaturehungry'");// met la maintenance sur 1
- echo '<br>J ai desactivé le fonctionnement du script en db <br>';
- ?>
- </div>
- </body>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement