Advertisement
Gorzak

script creatures qui ont faim

Mar 28th, 2020
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 17.57 KB | None | 0 0
  1. <?php
  2.  
  3. include(__DIR__ . "/../evoluhall/fixe.php");
  4.  
  5.  
  6.     //KILL le script si la maintenance est en cours
  7.      $dbh = Database::connect();
  8.  $qmaintenance = $dbh->query("SELECT `nbr` FROM `stats` WHERE `cat` = 'maintenance'") ;
  9.     $rmaintenance = $qmaintenance->fetchColumn(); //je compte les lignes de la réponse
  10.     {
  11.     if ($rmaintenance==1) {
  12.     addLogEventCreatureHungry("KILL SCRIPT CAUSE MAINTENANCE");
  13.     die();
  14.     //exit ('<div id="fixe"><center>Le site est en maintenance. Cela ne devrait prendre que quelques minutes...</center></div>');
  15.     }
  16. else { 
  17.    
  18.     }}
  19.    
  20.     //Kill le script si le même est déjà en cours
  21.      $qmaintenance = $dbh->query("SELECT `nbr` FROM `stats` WHERE `cat` = 'scriptcreaturehungry'") ;
  22.     $rmaintenance = $qmaintenance->fetchColumn(); //je compte les lignes de la réponse
  23.     {
  24.     if ($rmaintenance==1) {
  25.     addLogEventCreatureHungry("KILL SCRIPT CAUSE DEJA EN COURS");
  26.     echo "<div id='content'>KILL SCRIPT CAUSE DEJA EN COURS</div>";
  27.     die();
  28.    
  29.    
  30.     }
  31. else { 
  32.     $dbh->exec("UPDATE stats SET nbr=1 WHERE cat='scriptcreaturehungry'");// active le fonctionnement du script
  33.  echo "<div id='content'>J ai activé le fonctionnement du script en db <br></div>";
  34.  
  35.    
  36.     }}
  37. ?>
  38.  
  39.  
  40. <body>
  41. <div id='content'>
  42.  
  43. <?php
  44.  
  45. //CONNEXION A LA BASE
  46. $dbh = Database::connect();
  47.  
  48. //TIMER pour compter la durée du scriot
  49. $debut = microtime(true);
  50.  
  51. //ECRITURE DU LOG
  52. addLogEventCreatureHungry("DEBUT DU SCRIPT HUNGRY");
  53.  
  54.  
  55.  
  56. //je demande toutes les creatures avec des PA  et qui ont besoin de manger
  57.  
  58. $dbh = Database::connect(); //connexion à la bdd
  59. $repact = $dbh->query('SELECT id FROM creatures WHERE _pa !=0 AND _famine<10');        
  60.                            
  61. $resact = $repact->fetchAll();//je tri le résultat
  62. //si le résultat est 0 on s'arrète
  63.     if (count($resact) == 0) {echo 'Toutes les creatures affamées ont jouées<br>';
  64.     addLogEventCreatureHungry("toutes les creatures affamées ont jouées");}
  65.  
  66.  
  67.     //sinon on fais jouer les creatures    
  68.     else { foreach ($resact as $resact2) {//tant qu'il y a des creatures à faire jouer
  69.     echo '<br><br>';   
  70.     echo '<b>les creatures affamées doivent jouer ('. (count($resact)) .')</b><br><br>';
  71.     $id=$resact2['id'];//on donne l'id du premier creature à $id
  72.     echo 'le premier creature à jouer sera le '. $id .'<br>';
  73.     addLogEventCreatureHungry("la créature ". $id ." va jouée");
  74.  
  75.     echo "<br><b>Je suis la créature n° $id et je veux agir !</b> <br>"; //Description Front End
  76.     addLogEventCreatureHungry("Je suis la créature ". $id ." et je veux agir");
  77.  
  78.     $reponse1 = $dbh->query('SELECT * FROM `creatures` where id='. $id .''); //recupère les informations concernant le creature qui va jouer
  79.  
  80.         while ($donnees = $reponse1->fetch()) {//tri les données récupérées
  81.        
  82.                 echo 'Ma famine est à ('. $donnees['_famine'] .'), je dois donc manger.<br>';
  83.                 addLogEventCreatureHungry("Ma famine est à (". $donnees['_famine'] ."), je dois donc manger.");
  84.  
  85.                 //je regarde s'il y a des plantes sur la case
  86.                 $reponse2 = $dbh->query('SELECT COUNT(*) FROM `plantes` WHERE  _x='. $donnees['_x'] .' AND _y='. $donnees['_y'] .'') ;
  87.                 $resultat2 = $reponse2->fetchColumn();
  88.                 echo 'Il y a ('. $resultat2 .') plantes sur ma case.<br><br>';
  89.                 addLogEventCreatureHungry("Il y a (". $resultat2 .") plantes sur ma case.");
  90.  
  91.                 //si il y a des plantes sur la case
  92.                     if ($resultat2>0) {  
  93.                     echo "Il y a des plantes sur ma case, je peux donc manger.<br>";
  94.                     addLogEventCreatureHungry("Il y a des plantes sur ma case, je peux donc manger.");
  95.  
  96.                     //je mange une plante
  97.                     //je selectionne une plante à ces coordonnées
  98.                     $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.
  99.                     $resplante = $selectplante->fetch(); //je compte les lignes de la réponse
  100.  
  101.                     echo 'Je vais manger la plante ('. $resplante['id'] .') en '. $donnees['_x'] .' '. $donnees['_y'] .'<br><br>';
  102.                     addLogEventCreatureHungry("Je vais manger la plante (". $resplante['id'] .") en ". $donnees['_x'] ." ". $donnees['_y'] ."");
  103.  
  104.                     //je détruit cette plante
  105.                     $idp=$resplante['id'];
  106.                     Plante::detruirePlante($idp);// ici on détruit la plante
  107.                     print 'Plante détruite en x='. $donnees['_x'] .' et y='. $donnees['_y'] .'.<br>';
  108.                     addLogEventCreatureHungry("Plante ". $idp ." détruite en x=". $donnees['_x'] ." et y=". $donnees['_y'] .".");
  109.  
  110.  
  111. //OPTI FAIRE UNE SEULE COMMANDE
  112.                     $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.
  113.                     echo 'Ma famine est remontée de 1 points.<br>';   
  114.                     addLogEventCreatureHungry("Ma famine est remontée de 1 points.");
  115.  
  116.                     $dbh->exec('UPDATE `creatures` SET _pa=_pa-1 WHERE id = '. $id .''); //ici on enlève un PA à la créature
  117.                     echo 'Manger m a couté un pa, il me reste ('. $donnees['_pa'] .') Points d actions.<br>';
  118.                     addLogEventCreatureHungry("Manger m a couté un pa, il me reste (". $donnees['_pa'] .") Points d actions.");
  119. //FIN OPTI
  120.  
  121.                     $planteX=$donnees['_x'];
  122.                     $planteY=$donnees['_y'];
  123.                     echo 'J ai manger une plante en '. $planteX .' et '. $planteY .'<br>';
  124.                     addLogEventCreatureHungry("j'ai mangé une plante en ". $planteX ." et ". $planteY ."");
  125.  
  126.                     //ajout d'un évènement manger
  127.                     Evenement::eventmanger($id,$planteX,$planteY,$idp);
  128.                     echo 'J ai ajouté un évènement manger<br><br>';
  129.                     addLogEventCreatureHungry("J ai ajouté un évènement manger");
  130.  
  131.                     $reponse2->closeCursor(); //ferme le curseur qui compte les plantes                
  132.                     }//ferme le if il y a des plantes sur la cases
  133.  
  134.                 //sinon il n'y a pas de plantes sur la case        
  135.                     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
  136.                     addLogEventCreatureHungry("Il n'y a pas de plantes sur ma case, je vais devoir me déplacer.");
  137.  
  138.                     //je récupère la vue du creature $id
  139.                     $vue=$donnees['_vue'];
  140.                     echo 'Ma vue est de '. $vue .' cases.<br>';
  141.                     addLogEventCreatureHungry("Ma vue est de ". $vue ." cases.");
  142.  
  143.                     $x=$donnees['_x'];
  144.                     $y=$donnees['_y'];
  145.                     echo 'Je suis en X='. $x .' et Y='. $y .'<br>';
  146.                     addLogEventCreatureHungry("Je suis en X=". $x ." et Y=". $y ."");
  147.  
  148.                     $xvuemax=$x+$vue;
  149.                     $xvuemin=$x-$vue;
  150.                     $yvuemin=$y-$vue;
  151.                     $yvuemax=$y+$vue;
  152.                     echo 'Je vois donc jusqu en Xmax='. $xvuemax .', Xmini='. $xvuemin .', Ymax='. $yvuemax .', Ymini=' . $yvuemin .'<br><br>';
  153.                     addLogEventCreatureHungry("Je vois donc jusqu en Xmax=". $xvuemax .", Xmini=". $xvuemin .", Ymax=". $yvuemax .", Ymini=" . $yvuemin ."");
  154.  
  155.                     //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)))
  156.                    
  157.                     //Cette  ligne prend la plante la plus proche dans la liste (garder cette ligne pour éviter de tourner en rond)
  158.                     $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                                      
  159.                    
  160.                    
  161.                    
  162.                     $resultatvue = $reponsevue->fetchAll();
  163.  
  164.                     //Est ce qu'il y a des plantes dans ma vue ?
  165.                    
  166.                         //SI il y a PAS de plantes dans ma vue
  167.                         if (count($resultatvue) == 0) {echo 'Il n y a pas de plantes dans ma vue<br>';
  168.                         addLogEventCreatureHungry("Il n y a pas de plantes dans ma vue");
  169.  
  170.                         echo 'Je dois me déplacer vers le centre du monde<br><br>';
  171.                         addLogEventCreatureHungry("Je dois me déplacer vers le centre du monde");
  172.  
  173.                         echo 'Je suis en X='. $x .' et Y='. $y .'<br>';
  174.                         addLogEventCreatureHungry("Je suis en X=". $x ." et Y=". $y ."");
  175.  
  176.                         //je dois me déplacer vers le centre du monde
  177.                        
  178.                         //dans quel sens je dois me déplacer en X ?
  179.                         //si je suis déjà à la bonne coordonnées X
  180.                             if (((0)-($x))==0) { echo 'Je ne dois pas me déplacer en X<br>';
  181.                             $depx=0;}
  182.  
  183.                         //sinon je dois me déplacer en X
  184.                             else  { echo 'Je dois me déplacer en X<br>';
  185.                             //si je dois me déplacer en -X
  186.                                 if (((0)-($x))<0) {echo 'Je dois me déplacer -X<br>';
  187.                                 $depx=(-1);}
  188.                             //sinon je dois me déplacer en +X
  189.                                 else {echo 'Je dois me déplacer en +X<br>';
  190.                                 $depx=(+1);}
  191.                             }//ferme le else déplacement X
  192.  
  193.                         // dans quel sens je dois me déplacer en Y ?
  194.                         //Si je suis déjà à la bonne coordonnées Y
  195.                             if (((0)-($y))==0) { echo 'Je ne dois pas me déplacer en Y<br>';
  196.                             $depy=0;}
  197.  
  198.                         //sinon je dois me déplacer en Y
  199.                             else  { echo 'Je dois me déplacer en Y<br>';
  200.                             //si je dois me déplacer en -Y
  201.                             if (((0)-($y))<0) {echo 'Je dois me déplacer -Y<br>';
  202.                             $depy=(-1);}
  203.                             //sinon je dois me déplacer en +Y
  204.                             else {echo 'Je dois me déplacer en +Y<br>';
  205.                             $depy=(+1);}
  206.                             }//ferme le else déplacement Y
  207.  
  208.                         // si je ne dois pas me déplacer ni en X ni en Y
  209.                             if ($depy==0 && $depx==0){ echo 'je ne dois pas me déplacer, je suis LE CENTRE DU MONDE !';
  210.                             addLogEventCreatureHungry("je ne dois pas me déplacer, je suis LE CENTRE DU MONDE !");
  211.  
  212.                             Evenement::eventgenome($id);
  213.                             echo 'j ai ajouté un evenement genome<br>';
  214.                             addLogEventCreaturenotHungry("j ai ajouté un evenement genome<br>");
  215.                            
  216.                             echo 'je perd quand même un PA';
  217.                             addLogEventCreatureHungry("je perd quand même un PA");
  218.  
  219.                             $dbh->exec('UPDATE `creatures` SET _pa=_pa-1 WHERE id = '. $id .'');// je perd un pa
  220.                             }//ferme le if centre du monde
  221.  
  222.  
  223.                    
  224.                             // sinon je me déplace
  225.                                 else {     
  226.                                 echo 'Je dois me déplacer selon X='. $depx .' et Y='. $depy .'<br>';
  227.                                 addLogEventCreatureHungry("Je dois me déplacer selon X=". $depx ." et Y=". $depy ."");
  228.  
  229.                                 //je me déplace vers le centre
  230.                                 $dbh->exec('UPDATE `creatures` SET _x=_x+'. $depx .', _y=_y+'. $depy .' WHERE id = '. $id .'');//changement de coordonnées XY                                                     
  231.  
  232.                                 // je perd un pa
  233.                                 $dbh->exec('UPDATE `creatures` SET _pa=_pa-1 WHERE id = '. $id .'');// je perd un pa           
  234.                                 // je verifie ma nouvelle position
  235.                                     $reponse3 = $dbh->query('SELECT * FROM `creatures` where id='. $id .''); //recupère les nouvelles informations concernant le creature
  236.                                     while ($donnees3 = $reponse3->fetch()){                    
  237.                                     echo 'Je me suis déplacé vers le centre, je suis maintenant en X=('. $donnees3['_x'] .') et Y=('. $donnees3['_y'] .')<br><br>';
  238.                                     addLogEventCreatureHungry("je me suis déplacé vers le centre, je suis maintenant en X=(". $donnees3['_x'] .") et Y=(". $donnees3['_y'] .")");
  239.  
  240.                                     //j'ajoute un evenement deplacement
  241.                                     Evenement::eventdepF($id);
  242.                                     echo 'J ai ajouté un évènement déplacement<br><br>';
  243.                                     addLogEventCreatureHungry("J ai ajouté un évènement déplacement");
  244.  
  245.                                     echo 'Mon déplacement m a couté un pa, il me reste ('. $donnees3['_pa'] .') Points d actions.<br>';
  246.                                     addLogEventCreatureHungry("Mon déplacement m a couté un pa, il me reste (". $donnees3['_pa'] .") Points d actions.");
  247.  
  248.                                     //Est ce que je suis Hancloc?
  249.                                     $hancloc='Hancloc';
  250.                                     $template=$donnees3['_template'];
  251.                                     echo "template = ". $template ." <br>";
  252.                                     if ($template==$hancloc) { echo "je suis hancloc je ne me reproduis pas<br>";
  253.                                     addLogEventCreatureHungry("Je suis Hancloc je ne me reproduis pas");}
  254.                                         else { echo "je ne suis pas hancloc je vais voir si je me reproduit<br>";
  255.                                         addLogEventCreatureHungry("Je ne suis pas Hanloc je vais voir si je me reproduit");
  256.                                        
  257.                                         //je regarde si il y a des créatures de même race sur ma case
  258.                                         // nouvelles donnees x;y                           
  259.                                         $x=$donnees3['_x'];
  260.                                         $y=$donnees3['_y'];
  261.                                         $owner=$donnees['_owner'];
  262.                                        
  263.                                         //MAJ NEWBORN #1
  264.                                         include('newborn.php');
  265.                                        
  266.                                         }//ferme le while informations de la créature
  267.                                        
  268.                                        
  269.                                     }//ferme le est ce que je suis hancloc
  270.                                 }//ferme le else je dois me déplacer
  271.                         }//ferme le si il n'y a pas de plantes dans ma vue
  272.                        
  273.                         else { //il y a des plantes dans ma vue
  274.                             foreach ($resultatvue as $resvue) {
  275.                             //je cherche la plante la plus proche
  276.                             echo 'la plante la plus proche de moi est la plante numéro '. $resvue['id'] .'<br>';
  277.                             addLogEventCreatureHungry("la plante la plus proche de moi est la plante numéro ". $resvue['id'] ."");
  278.  
  279.                             // je liste les informations de la plante
  280.                             echo 'la plante numéro '. $resvue['id'].' est en X='. $resvue['_x'] .' et Y='. $resvue['_y'] .'<br>';
  281.                             addLogEventCreatureHungry("la plante numéro ". $resvue['id']." est en X=". $resvue['_x'] ." et Y=". $resvue['_y'] ."");
  282.  
  283.                             //dans quel sens je dois me déplacer en X ?
  284.  
  285.                             //si je ne dois pas me déplacer en X
  286.                                 if ((($resvue['_x'])-($x))==0) { echo 'Je ne dois pas me déplacer en X<br>';
  287.                                 $depx=0;}
  288.                             //sinon je dois me déplacer en X
  289.                                 else  { echo 'Je dois me déplacer en X<br>';
  290.  
  291.  
  292.                                 //si je dois me déplacer en -X
  293.                                     if ((($resvue['_x'])-($x))<0) {echo 'Je dois me déplacer -X<br>';
  294.                                     $depx=(-1);}
  295.                                 //sinon je dois me déplacer en +X
  296.                                     else {echo 'Je dois me déplacer en +X<br>';   
  297.                                     $depx=(+1);}
  298.                                    
  299.                                     }
  300.  
  301.                             // dans quel sens je dois me déplacer en Y ?
  302.  
  303.                             //si je ne dois pas me déplacer en Y
  304.                                 if ((($resvue['_y'])-($y))==0) { echo 'Je ne dois pas me déplacer en Y<br>';
  305.                                 $depy=0;}
  306.                             //sinon je dois me déplacer en Y
  307.                                 else  { echo 'Je dois me déplacer en Y<br>';
  308.  
  309.  
  310.                                 //Si je dois me déplacer en -Y
  311.                                     if ((($resvue['_y'])-($y))<0) {echo 'Je dois me déplacer -Y<br>';
  312.                                     $depy=(-1);}
  313.                                 //sinon je dois me déplacer en +Y
  314.                                     else {echo 'Je dois me déplacer en +Y<br>';
  315.                                     $depy=(+1);}
  316.                                 }
  317.  
  318.                             echo 'Je dois me déplacer selon X='. $depx .' et Y='. $depy .'<br>';
  319.                             addLogEventCreatureHungry("Je dois me déplacer selon X=". $depx ." et Y=". $depy ."");
  320.  
  321.                             // je me déplace vers la plante
  322.                             $dbh->exec('UPDATE `creatures` SET _x=_x+'. $depx .', _y=_y+'. $depy .' WHERE id = '. $id .'');//changement de coordonnées XY                                                     
  323.                             // je perd un pa
  324.                             $dbh->exec('UPDATE `creatures` SET _pa=_pa-1 WHERE id = '. $id .'');// je perd un pa
  325.                             // je verifie ma nouvelle position
  326.                             $reponse3 = $dbh->query('SELECT * FROM `creatures` where id='. $id .''); //recupère les nouvelles informations concernant le creature
  327.                                 while ($donnees3 = $reponse3->fetch()){                    
  328.                                 echo 'Je me suis déplacé, je suis maintenant en X=('. $donnees3['_x'] .') et Y=('. $donnees3['_y'] .'), je mangerais plus tard.<br><br>';
  329.                                 addLogEventCreatureHungry("Je me suis déplacé, je suis maintenant en X=(". $donnees3['_x'] .") et Y=(". $donnees3['_y'] ."), je mangerais plus tard.");
  330.  
  331.                                 //j'ajoute un evenement deplacement
  332.                                 Evenement::eventdepF($id);
  333.                                 echo 'J ai ajouté un évènement déplacement<br><br>';
  334.                                 addLogEventCreatureHungry("J ai ajouté un évènement déplacement");
  335.  
  336.  
  337.                                 echo 'Mon déplacement m a couté un pa, il me reste ('. $donnees3['_pa'] .') Points d actions.<br>';
  338.                                 addLogEventCreatureHungry("Mon déplacement m a couté un pa, il me reste (". $donnees3['_pa'] .") Points d actions.");
  339.  
  340.                                     //Est ce que je suis Hancloc?
  341.                                     $hancloc='Hancloc';
  342.                                     $template=$donnees3['_template'];
  343.                                     echo "template = ". $template ." <br>";
  344.                                     if ($template==$hancloc) { echo "je suis hancloc je ne me reproduis pas<br>";
  345.                                     addLogEventCreatureHungry("Je suis Hancloc je ne me reproduis pas");}
  346.                                         else { echo "je ne suis pas hancloc je vais voir si je me reproduit<br>";
  347.                                         addLogEventCreatureHungry("Je ne suis pas Hanloc je vais voir si je me reproduit");
  348.  
  349.                                         //je regarde si il y a des créatures de même race sur ma case
  350.                                         // nouvelles donnees x;y                           
  351.                                         $x=$donnees3['_x'];
  352.                                         $y=$donnees3['_y'];
  353.                                         $owner=$donnees['_owner'];
  354.                                        
  355.                                         //MAJ NEWBORN #2
  356.                                         include('newborn.php');
  357.                                        
  358.                                            
  359.                                         }//ferme le else je ne suis pas hancloc    
  360.                                     }//ferme les nouvelles données de la créature
  361.                                
  362.                             }//ferme le foreach plantes dans ma vue
  363.                         }//ferme le si il y a des plantes dans ma vue
  364.                     }//ferme le si il n'y a pas de plantes sur ma case
  365.  
  366.                     $reponse1->closeCursor(); //ferme les informations de début de script
  367.        
  368.         }//ferme les premières informations de la créatures  
  369.        
  370.    
  371.  
  372.     } //ferme le si il y a des creatures à faire jouer.
  373.  
  374.     } //ferme le foreach
  375.  
  376. //TIMER
  377. $fin = microtime(true);
  378. $delai = date("U",$fin - $debut);
  379.  
  380. if ($delai>55) {echo "Attention délais supérieur à 55s : ". $delai ."s";
  381. 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');
  382. }
  383. else {echo "délai inférieur à 55s tout va bien";}
  384.  
  385. if ($delai!=0){
  386. $dbh->exec("INSERT INTO timescript VALUES ('scriptcreaturehungry', ". $delai .", NOW())");
  387. }else {}
  388. addLogEventCreatureHungry("FIN DE SCRIPT ALL MONSTRE time : ". $delai ." s");
  389.  
  390. $dbh->exec("UPDATE stats SET nbr=0 WHERE cat='scriptcreaturehungry'");// met la maintenance sur 1
  391.  echo '<br>J ai desactivé le fonctionnement du script en db <br>';
  392.  
  393. ?>
  394.  
  395.  
  396.  
  397. </div> 
  398. </body>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement