public function onAttack(BattleEvent $event) { if ($event->getLocHelper()->objectExists($event->getToObjectId())) { $event->getLocHelper()->addJournal($event->getSelfObjectId() . "->" . $event->getToObjectId(), Game::init()->getService('player.helper')->getCollection()); $event->getLocHelper()->update(); } }
public function onAddJournalAll(JournalEvent $event) { $criteria = ['$and' => [["loc" => $event->getLocId()], ["_id" => ['$ne' => $event->getPlayer1()]], ["_id" => ['$ne' => $event->getPlayer2()]]]]; $push = ['$push' => ["journal" => ["time" => time(), "msg" => $event->getMsg()]]]; $pid = Game::init()->getPlayer(); if ($pid["_id"] != $event->getPlayer1() and $pid["_id"] != $event->getPlayer2() and $event->getLocId() == $pid["loc"]) { Game::init()->getService("player.helper")->addJournal($event->getMsg()); } //Game::init()->getService("player.helper")->addJournal($event->getMsg()); $event->getPlayers()->update($criteria, $push); }
private function replaceCharField($text) { $player = Game::init()->getPlayer(); $field = ""; if ($player) { if (isset($player[$text[1]])) { $field = $player[$text[1]]; } } return $field; }
if ($_GET["go"] and $_GET["go"] != $player["loc"]) { $oldLoc = $ld->locations->findOne(["lid" => $player["loc"]]); $oldLocHelper = new \Likedimion\Helper\LocationHelper($oldLoc); $oldLocHelper->setCollection($ld->locations); $newLoc = $ld->locations->findOne(["lid" => $_GET["go"]]); if ($newLoc) { $newLocHelper = new \Likedimion\Helper\LocationHelper($newLoc); $oldLocHelper->removePlayer($player["_id"]); $newLocHelper->addPlayer($player["_id"]); $newLocHelper->setCollection($ld->locations); $playerHelper->move($_GET["go"]); $playerHelper->update(); if ($oldLoc["terr"] == \Likedimion\Helper\LocationHelper::TERRITORY_GUARD and $newLoc["terr"] == \Likedimion\Helper\LocationHelper::TERRITORY_UNGUARD) { $playerHelper->addJournal("Вы покунули охраняемую территорию."); } elseif ($oldLoc["terr"] == \Likedimion\Helper\LocationHelper::TERRITORY_UNGUARD and $newLoc["terr"] == \Likedimion\Helper\LocationHelper::TERRITORY_GUARD) { $playerHelper->addJournal("Вы на охраняемой территории."); } $outmsg = $player["title"] . ($player["sex"] == "m" ? " ушел " : " ушла ") . $oldLocHelper->getDoorName($_GET["go"]); $inmsg = ($player["sex"] == "m" ? " пришел " : " пришла ") . $player["title"]; $oldLocHelper->addJournal($outmsg, $ld->players, $player["_id"]); $newLocHelper->addJournal($inmsg, $ld->players, $player["_id"]); $oldLocHelper->update(); $newLocHelper->update(); $comeEvent = new \Likedimion\Events\MoveEvent(); $comeEvent->addObject($playerHelper->getPlayerId(), $player); $comeEvent->setLocHelper($newLocHelper); \Likedimion\Game::init()->getDispatcher()->dispatch('come_player', $comeEvent); } else { $playerHelper->addJournal("Некуда идти."); } }
if (file_exists($fName)) { require $fName; } else { require ROOT . "/404.php"; } } elseif ($player["role"] == \Likedimion\Game::ROLE_ADMIN or $player["role"] == \Likedimion\Game::ROLE_RAZRAB) { $fName = ROOT . "/admin/" . $_GET["admin"] . ".php"; if (file_exists($fName)) { require $fName; } else { require ROOT . "/404.php"; } } else { require ROOT . "/503.php"; } $playerHelper = Game::init()->getService("player.helper"); $playerHelper->calcParams(); $playerHelper->addTimer('last_action', 0)->addTimer("online", $config["online_time"]); if (!$ld->players->update(["_id" => $_SESSION["pid"]], $playerHelper->getPlayer())) { throw new MongoException("Not update"); } } else { $pid = $_SESSION["pid"]; $locationHelper->removePlayer($_SESSION["pid"])->update(); $playerHelper->clearJournal()->update(); $msg = $player["title"] . ($player["sex"] == "m" ? " исчез " : " исчезла "); //$locationHelper->addJournal($msg, $ld->players, $pid); $page = <<<EOT <p class="tabs__link tabs__link_active">Ваш персонаж покинул игру.</p> <div class="hr"></div> <a class="tabs__link" href="/?">повторить</a> вход
$item = []; if ($_GET["from"]) { $player = \Likedimion\Game::init()->getService('player.helper')->getPlayer(); $from = preg_split("/[_\\-#:]/", $_GET["from"]); switch ($from[0]) { case "equip": $item = $player["equip"][$from[1]]; break; case "inventory": if (isset($player["inventory"][$_GET["iId"]])) { $item = $player["inventory"][$_GET["iId"]]; } break; case "loc": /** @var \Likedimion\Helper\LocationHelper $locHelper */ $locHelper = \Likedimion\Game::init()->getService('loc.helper'); $loc = $locHelper->getCollection()->findOne(["lid" => $from[1]]); if ($loc and isset($loc["loc"][$_GET["iId"]])) { $item = $loc["loc"][$_GET["iId"]]; } break; default: $page .= "<div class='alert alert-warning'>Не на что смотреть</div>"; break; } } else { try { $item = $ld->items->findOne(["iid" => $_GET["iId"]]); } catch (MongoException $e) { $page .= "<div class='alert alert-warning'>Не удалось найти предмет, поскольку отсутствует подключение к базе данных<br/>Ошибка: " . $e->getMessage() . "</div>"; }
$from = preg_split("/[_]/", $_GET["from"]); switch ($from[0]) { case "loc": /** @var \Likedimion\Helper\LocationHelper $locHelper */ $locHelper = \Likedimion\Game::init()->getService('loc.helper'); $loc = $locHelper->getCollection()->findOne(["lid" => $from[1]]); if (isset($loc) and isset($loc["loc"][$_GET["id"]])) { $use = $loc["loc"][$_GET["id"]]; } break; } if ($use) { if (isset($use["ai"]["on_use"])) { switch ($use["ai"]["on_use"]["type"]) { case "event": $iterator = new ArrayIterator(); $iterator->offsetSet("use", $use); $event = new \Likedimion\Events\UseEvent(); $event->setPluginData($iterator)->setLocHelper(\Likedimion\Game::init()->getService('loc.helper'))->setPlayerHelper(\Likedimion\Game::init()->getService('player.helper')); \Likedimion\Game::init()->getDispatcher()->dispatch($use["ai"]["on_use"]["id"], $event); break; } } else { \Likedimion\Game::init()->getService('player.helper')->addJournal('Нельзя использовать')->update(); } } else { \Likedimion\Game::init()->getService('player.helper')->addJournal('Нечего использовать')->update(); } } else { \Likedimion\Game::init()->getService('player.helper')->addJournal('Нечего использовать')->update(); }
public function changeState($questId, $newStateId) { $questHelper = new QuestHelper(Game::init()->getDb()->quests); if (isset($this->_player["quests"][$questId]) and $questHelper->questExists($questId)) { $event = new QuestEvent(); $event->setQuestId($questId); $event->setPlayerHelper($this); $event->setQuestHelper($questHelper); $event->setState($newStateId); Game::init()->getDispatcher()->dispatch('quest.change', $event); } }
/** * @param $msg * @param bool|\MongoId $noPlayer1 * @param bool|\MongoId$noPlayer2 * @return $this */ public function addJournal($msg, \MongoCollection $players, $noPlayer1 = false, $noPlayer2 = false) { if ($noPlayer1 instanceof \MongoId === false and $noPlayer1 !== false) { $noPlayer1 = new \MongoId(substr($noPlayer1, 7)); } if ($noPlayer2 instanceof \MongoId === false and $noPlayer2 !== false) { $noPlayer2 = new \MongoId(substr($noPlayer2, 7)); } $players->update(["loc" => $this->getLoc()["lid"], "_id" => ['$ne' => [$noPlayer1, $noPlayer2]]], ['$push' => ["journal" => ["time" => time(), "msg" => $msg]]]); $pid = Game::init()->getPlayer()["_id"]; if ($pid != $noPlayer1 and $pid != $noPlayer2 and $this->objectExists("player_" . $pid)) { Game::init()->getService("player.helper")->addJournal($msg); } return $this; }
private function _addListeners($npc) { $events = $npc["ai"]["listeners"]; /** @var EventDispatcher $dispatcher */ $dispatcher = Game::init()->getDispatcher(); $dispatcher->addInject("setNpcHelper", $this->getNpcHelper()); $dispatcher->addInject("setLocHelper", $this->getLocHelper()); foreach ($events as $eventId => $eventListener) { $newId = preg_split("/[\\._:]/", $eventId); $method = "on"; for ($i = 0; $i < count($newId); $i++) { $method .= ucfirst($newId[$i]); } $dispatcher->addEventListener($eventId, $eventListener, $method); } }
<?php /** * Created by PhpStorm. * User: babenoff * Date: 29.12.2015 * Time: 1:22 */ /** * @var \Likedimion\Helper\LocationHelper $locHelper * @var \Likedimion\Helper\PlayerHelper $playerHelper * @var MongoId $pid */ $locHelper = \Likedimion\Game::init()->getService('loc.helper'); $playerHelper = \Likedimion\Game::init()->getService('player.helper'); $player = $playerHelper->getPlayer(); $pid = $player["_id"];