public function chat(Player $char, $phrase) { $result = array(); $charName = $char->getUsername(); // сбор фразы из массива слов $phrase = implode(" ", $phrase); // если фраза не задана if (!$phrase) { $result["message"] = "0:4:3"; // чат: фраза не задана return $result; } // оповещение всех в мире $playersOnline = $this->container->get('datachannel')->getOnlineIds($char->getId()); $playersOnlineObj = $this->playerRepository->findPlayersOnline($playersOnline); $result["message"] = "2:3"; // сообщил в чат $result["who"] = $charName; $result["ooc"] = $phrase; if ($playersOnlineObj) { $result["3rd"] = $playersOnlineObj; $result["3rdecho"] = array("message" => $result["message"], "who" => $result["who"], "ooc" => $phrase); } return $result; }
/** * Телепортация к персонажу * @param Player $char * @param $arguments * @return array */ public function jumptp(Player $char, $arguments) { $result = array(); if ($arguments && $arguments[1]) { $charName = $char->getUsername(); // приведение первого аргумента введенной команды в нижний регистр $targetPlayer = mb_strtolower($arguments[1], 'UTF-8'); $playersOnlineIds = $this->container->get('datachannel')->getOnlineIds(); $playersOnline = $this->playerRepository->findPlayersOnline($playersOnlineIds); foreach ($playersOnline as $player) { /** @var Player $player */ $playerName = $player->getUsernameCanonical(); $playerNameFull = $player->getUsername(); if (strpos($playerName, $targetPlayer) !== false) { // если персонаж найден $result["system"] = "Ты прыгнул к {$playerNameFull}!"; // перемещение $destinationRoom = $player->getRoom(); $char->setRoom($destinationRoom); $this->em->persist($char); $this->em->flush(); // отправка сообщения адресату $result["3rd"] = array($player); $result["3rdecho"] = array("system" => "{$charName} прыгнул к тебе!"); return $result; } } } else { $result["system"] = "Персонаж не найден. Применение: jumptp [имя-персонажа]"; } return $result; }