PageRenderTime 40ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/nacridan/conquest/actiontest/cqcloneMonster.inc.php

https://gitlab.com/nacridan/Nacridan
PHP | 178 lines | 146 code | 29 blank | 3 comment | 17 complexity | a5fbb5998bc93785b5f828c586053aed MD5 | raw file
  1. <?php
  2. class CQCloneMonster extends HTMLObject
  3. {
  4. public $db;
  5. public $curplayer;
  6. public $nacridan;
  7. public function CQCloneMonster($nacridan, $db)
  8. {
  9. $this->db = $db;
  10. $this->nacridan = $nacridan;
  11. $this->curplayer = $this->nacridan->loadCurSessPlayer($db);
  12. }
  13. public function toString()
  14. {
  15. $db = $this->db;
  16. $curplayer = $this->curplayer;
  17. $xp = $curplayer->get("x");
  18. $yp = $curplayer->get("y");
  19. $map = $curplayer->get("map");
  20. $id = $curplayer->get("id");
  21. if ($curplayer->get("authlevel") > 2) {
  22. if (! isset($_POST["idPNJ"])) {
  23. $str = "<form name='form' method='POST' target='_self'>";
  24. $str .= "<table class='maintable'><tr><td class='mainbgtitle' width='550px'>";
  25. $str .= "Entrez l'identifiant du perso qui contrôlera de ce monstre. Choisissez 0 si vous le donnez à l'IA.</td>";
  26. $str .= "<td class='mainbglabel' align='left'>";
  27. $str .= "<input type='textbox' name='controlPNJ' value='0' /></td></tr>";
  28. $str .= "</td></tr>";
  29. $str .= "<tr class='mainbgtitle'><td>Facultatif - Entrez le nom de ce PNJ. Seuls les PNJ avec un nom peuvent recevoir des messages.</td>";
  30. $str .= "<td class='mainbglabel' align='left'>";
  31. $str .= "<input type='textbox' name='PNJname' value='' /></td></tr>";
  32. $str .= "</td></tr>";
  33. $dbr = new DBCollection("SELECT name,id FROM BasicProfil order by name asc", $db, 0, 0);
  34. $str .= "<tr><td class='mainbgtitle' width='550px'><label for='idPNJ' >Id du PNJ à cloner</label></td>\n";
  35. $str .= "<td class='mainbglabel' align='left'>";
  36. $str .= "<input type='textbox' name='idPNJ' value='' /></td></tr>";
  37. $xfinal = $xp + 1;
  38. $yfinal = $yp;
  39. $str .= "<tr><td class='mainbgtitle'>ATTENTION le PNJ va apparaitre en X=" . $xfinal . "/Y=" . $yfinal .
  40. " </td><td class='mainbglabel' align='left'> <input id='submitbt' type='submit' name='submitbt' value='Invocation!' />";
  41. $str .= "<input name='idform' type='hidden' value='" . getCurrentPageId() . "' />\n";
  42. $str .= "</td></tr></table>";
  43. $str .= "</form>";
  44. } else {
  45. require_once (HOMEPATH . "/factory/PNJFactory.inc.php");
  46. $npcInit = new Player();
  47. $npcInit->load($_POST["idPNJ"], $db);
  48. $npc = PNJFactory::getPNJFromLevel($npcInit->get("id_BasicRace"), $npcInit->get("level"), $db);
  49. $xfinal = $xp + 1;
  50. $yfinal = $yp;
  51. $npc->set("x", $xfinal);
  52. $npc->set("y", $yfinal);
  53. $npc->set("map", $map);
  54. $npc->set("hidden", $curplayer->get("hidden"));
  55. if ($_POST["controlPNJ"] != 0) {
  56. $dbmaster = new DBCollection("SELECT name,id,id_Member,status FROM Player WHERE id=" . quote_smart($_POST["controlPNJ"]), $db, 0, 0);
  57. $npc->set("id_Member", $dbmaster->get("id_Member"));
  58. $npc->set("status", $dbmaster->get("status"));
  59. $npc->set("resurrectid", 0);
  60. $npc->set("authlevel", - 1);
  61. $npc->set("name", $npc->get("racename"));
  62. }
  63. // $npc->set("currhp",1);
  64. $npc->set("playATB", gmdate(time() - 20 * date("I")));
  65. // $npc->set("id_Member", $curplayer->get("id_Member"));
  66. if ($npc->get("status") == "NPC") {
  67. PNJFactory::addBonusPNJ($npc->getObj("Modifier"), $npc->get("id_BasicRace"), $npc->get("level"), $db);
  68. } else {
  69. $upgrade = new Upgrade();
  70. $npc->setObj("Upgrade", $upgrade, true);
  71. }
  72. $npc->updateDBr($db);
  73. $this->errorDB($npc->errorNoDB());
  74. // $npc->set("id", $id);
  75. require_once (HOMEPATH . "/factory/PlayerFactory.inc.php");
  76. PlayerFactory::NewATB($npc, $param, $db);
  77. $dbu = new DBCollection("UPDATE Player SET name='" . quote_smart($_POST["PNJname"]) . "' WHERE id=" . $npc->get("id"), $db, 0, 0, false);
  78. $dbe = new DBCollection(
  79. "SELECT E1.*, E2.id_EquipmentType as bagEqutyp FROM Equipment E1 left outer join Equipment E2 on E1.id_Equipment\$bag = E2.id WHERE E1.id_Player=" .
  80. $npcInit->get("id") . " order by id_Equipment\$bag asc", $db);
  81. while (! $dbe->eof()) {
  82. $equipmentClone = new Equipment();
  83. $equipmentClone->set("id_Player", $npc->get("id"));
  84. $equipmentClone->set("id_Shop", $dbe->get("id_Shop"));
  85. $equipmentClone->set("id_BasicEquipment", $dbe->get("id_BasicEquipment"));
  86. $equipmentClone->set("id_EquipmentType", $dbe->get("id_EquipmentType"));
  87. $equipmentClone->set("id_Mission", $dbe->get("id_Mission"));
  88. $equipmentClone->set("id_Caravan", $dbe->get("id_Caravan"));
  89. if ($dbe->get("id_Equipment\$bag") > 0) {
  90. $dbbag = new DBCollection("SELECT id FROM Equipment WHERE Equipment.id_Player=" . $npc->get("id") . " and id_EquipmentType=" . $dbe->get("bagEqutyp"), $db);
  91. $equipmentClone->set("id_Equipment\$bag", $dbbag->get("id"));
  92. } else {
  93. $equipmentClone->set("id_Equipment\$bag", 0);
  94. }
  95. $equipmentClone->set("id_Warehouse", $dbe->get("id_Warehouse"));
  96. $equipmentClone->set("name", $dbe->get("name"));
  97. $equipmentClone->set("extraname", $dbe->get("extraname"));
  98. $equipmentClone->set("level", $dbe->get("level"));
  99. $equipmentClone->set("po", $dbe->get("po"));
  100. $equipmentClone->set("durability", $dbe->get("durability"));
  101. $equipmentClone->set("sharpen", $dbe->get("sharpen"));
  102. $equipmentClone->set("state", $dbe->get("state"));
  103. $equipmentClone->set("inbuilding", $dbe->get("inbuilding"));
  104. $equipmentClone->set("room", $dbe->get("room"));
  105. $equipmentClone->set("hidden", $dbe->get("hidden"));
  106. $equipmentClone->set("weared", $dbe->get("weared"));
  107. $equipmentClone->set("sell", $dbe->get("sell"));
  108. $equipmentClone->set("x", $dbe->get("x"));
  109. $equipmentClone->set("y", $dbe->get("y"));
  110. $equipmentClone->set("progress", $dbe->get("progress"));
  111. $equipmentClone->set("templateProgress", $dbe->get("templateProgress"));
  112. $equipmentClone->set("map", $dbe->get("map"));
  113. $equipmentClone->set("maudit", $dbe->get("maudit"));
  114. $equipmentClone->addDB($db);
  115. $dbt = new DBCollection("SELECT * FROM Template WHERE id_Equipment=" . $dbe->get("id"), $db);
  116. while (! $dbt->eof()) {
  117. $template = new Template();
  118. $template->set("id_Equipment", $equipmentClone->get("id"));
  119. $template->set("id_BasicTemplate", $dbt->get("id_BasicTemplate"));
  120. $template->set("level", $dbt->get("level"));
  121. $template->set("pos", $dbt->get("pos"));
  122. $template->addDB($db);
  123. $dbt->next();
  124. }
  125. $dbe->next();
  126. }
  127. $str = "<table class='maintable'><tr><td class='mainbgtitle'>";
  128. $str .= localize(
  129. " Okey vous avez normalement un clone " . ($npc->get("status") == "NPC" ? "PNJ" : "PJ") . " de " . $npcInit->get("id") . " de niveau " . $npcInit->get("level") .
  130. " en X=" . $xfinal . "/Y=" . $yfinal . ", rechargez la vue pour le voir.");
  131. $str .= "</td></tr> </table>";
  132. }
  133. return $str;
  134. }
  135. }
  136. function errorDB($num)
  137. {
  138. if ($num) {
  139. if ($num == 1062)
  140. {
  141. trigger_error("Erreur insertion PNJ/Equipement (doublon)", E_USER_ERROR);
  142. } else
  143. {
  144. trigger_error("Impossible d'ajouter un nouveau PNJ/Equipement dans la base de donnée.", E_USER_ERROR);
  145. }
  146. }
  147. }
  148. }
  149. ?>