コード例 #1
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $data = ["teamname" => $this->teamName];
     foreach ($main->getSessions() as $ses) {
         if ($ses->getUid() === $this->uid) {
             $data["name"] = $ses->getPlayer()->getName();
             switch ($this->type) {
                 case self::REQUEST_FROM_USER:
                     $ses->send(Phrases::CMD_TEAM_JOIN_ALREADY_REQUESTED, $data);
                     break 2;
                 case self::REQUEST_FROM_TEAM:
                     $ses->send(Phrases::CMD_TEAM_JOIN_ACCEPTED, $data);
                     $joined = true;
                     $ses->recalculateNametag();
                     break 2;
                 case self::DIRECT_JOIN:
                     $ses->send(Phrases::CMD_TEAM_JOIN_DIRECTLY_JOINED, $data);
                     $joined = true;
                     $ses->recalculateNametag();
                     break 2;
                 default:
                     $ses->send(Phrases::CMD_TEAM_JOIN_REQUESTED, $data);
                     break 2;
             }
         }
     }
     if (isset($joined)) {
         $type = new TeamChatType($main, "Network", "%tr%" . Phrases::CMD_TEAM_JOINED, Settings::CLASS_ALL, ["tid" => $this->tid, "teamName" => $this->teamName, "ign" => "Network", "data" => $data]);
         $type->push();
     }
 }
コード例 #2
0
 public function onCompletion(Server $server)
 {
     $id = $this->getId();
     $main = BasePlugin::getInstance($server);
     /** @var CommandSender $issuer */
     $issuer = $main->fetchObject($id);
     if ($id === -1) {
         $issuer->sendMessage("Failed to create warning");
         $issuer = null;
         // release instance
         return;
     }
     new LogWarningQuery($main, $id, $this->uid, $this->clientId, $issuer, $this->points, $this->msg, $this->creation, $this->expiry);
     foreach ($main->getSessions() as $ses) {
         if ($ses->getUid() === $this->uid) {
             $ses->addWarningPoints($this->points);
             $done = true;
             $issuer->sendMessage("Warning points have been successfully issued to player.");
             $this->execWarnOn($issuer, $ses);
             break;
         }
     }
     if (!isset($done)) {
         // you think leaving the game can keep you away from trouble?
         new IncrementWarningPointsQuery($main, $this->points, $this->uid);
         $issuer->sendMessage(TextFormat::GREEN . "Warning points have been successfully issued to offline player.");
     }
 }
コード例 #3
0
 public function onCompletion(Server $server)
 {
     $id = $this->getId();
     $main = BasePlugin::getInstance($server);
     /** @var CommandSender $issuer */
     $issuer = $main->fetchObject($this->issuer);
     if ($id === -1) {
         $issuer->sendMessage("Failed to create warning");
         $issuer = null;
         // release instance
         return;
     }
     new LogWarningQuery($main, $id, $this->uid, $this->ip, $this->clientId, $issuer->getName(), $this->points, $this->msg, $this->creation, $this->expiry);
     foreach ($main->getSessions() as $ses) {
         if ($ses->getUid() === $this->uid) {
             $ses->addWarningPoints($this->points);
             $done = true;
             $issuer->sendMessage("{$this->points} warning points have been successfully issued to player {$ses->getPlayer()->getName()}.");
             $this->execWarnOn($issuer, $ses);
             Hormone::get($main, Hormone::CONSOLE_MESSAGE, "(Auto){$issuer->getName()}", "Issued {$this->points} warning points to player {$ses->getPlayer()->getName()}: {$this->msg}", Settings::CLASS_ALL, ["ip" => Settings::$LOCALIZE_IP, "port" => Settings::$LOCALIZE_PORT])->release();
             break;
         }
     }
     if (!isset($done)) {
         // you think leaving the game can keep you away from trouble?
         new IncrementWarningPointsQuery($main, $this->points, $this->uid);
         $issuer->sendMessage(TextFormat::GREEN . "Warning points have been successfully issued to offline player.");
     }
 }
コード例 #4
0
 public function onCompletion(Server $server)
 {
     $ses = BasePlugin::getInstance($server)->getSessionByUid($this->uid);
     if ($ses instanceof Session) {
         $ses->recalculateNametag();
     }
 }
コード例 #5
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $hormone = $main->fetchObject($this->hormone);
     if ($hormone instanceof Hormone) {
         $hormone->onPostRelease($this->rowId);
     }
 }
コード例 #6
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     /** @var Session $sender */
     $sender = $main->fetchObject($this->sender);
     if ($sender->getPlayer()->isOnline()) {
         $sender->send(Phrases::CMD_TEAM_PROPERTY_VALUE_CHANGED, ["type" => $sender->translate($this->humanPhrase), "value" => $this->value]);
     }
 }
コード例 #7
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     /** @var Session $sender */
     $sender = $main->fetchObject($this->sender);
     if ($sender->getPlayer()->isOnline()) {
         $sender->send($this->boolean ? Phrases::CMD_TEAM_CONFIG_VALUE_CHANGED_TRUE : Phrases::CMD_TEAM_CONFIG_VALUE_CHANGED_FALSE, ["type" => $sender->translate($this->humanPhrase)]);
     }
 }
コード例 #8
0
 public function onCompletion(Server $server)
 {
     $result = $this->getResult();
     if ($result["resulttype"] === self::TYPE_ASSOC) {
         $main = BasePlugin::getInstance($server);
         /** @var Session $sender */
         $sender = $main->fetchObject($this->sender);
         if ($sender->getPlayer()->isOnline()) {
             $sender->send(Phrases::CMD_TEAM_PROPERTY_CHECK, ["type" => $sender->translate($this->humanPhrase), "value" => $result["result"][$this->column]]);
         }
     }
 }
コード例 #9
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $ses = $this->getSession($main);
     if (!$ses->getPlayer()->isOnline()) {
         return;
     }
     $result = $this->getResult();
     if ($result["resulttype"] !== $this->getResultType()) {
         $this->onNotFetched($main, $ses);
         return;
     }
     $this->finalize($main, $ses, $result);
 }
コード例 #10
0
 public function onCompletion(Server $server)
 {
     $r = $this->getResult();
     if (!isset($r["result"])) {
         return;
     }
     $result = $r["result"];
     $main = BasePlugin::getInstance($server);
     $main->setPlayerCount($result["online"], $result["max"], $result["class_online"], $result["class_max"]);
     $main->setServersCount($result["servers"], $result["class_servers"]);
     if ($this->altIp !== null) {
         $main->setAltServer($this->altIp, $this->altPort);
     }
 }
コード例 #11
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $result = $this->getResult();
     $uid = $result["result"]["id"];
     foreach ($main->getServer()->getOnlinePlayers() as $player) {
         if ($player->getId() === $this->sesId) {
             break;
         }
     }
     if (!isset($player)) {
         return;
     }
     $main->newSession($player, BasePlugin::getDefaultLoginData($uid, $player));
 }
コード例 #12
0
 public function onCompletion(Server $server)
 {
     /** @var Session $sender */
     $sender = BasePlugin::getInstance($server)->fetchObject($this->sender);
     if (!$sender->getPlayer()->isOnline()) {
         return;
     }
     $r = $this->getResult();
     if ($r["resulttype"] !== self::TYPE_ALL) {
         return;
     }
     foreach ($r["result"] as $i => $row) {
         $num = $i + 1;
         $sender->send(Phrases::CMD_TEAM_LIST_LINE, ["i" => $num, "team" => $row["name"], "points" => (int) $row["total_points"]]);
     }
 }
コード例 #13
0
 public function onCompletion(Server $server)
 {
     $session = BasePlugin::getInstance($server)->getSessionByUid($this->uid);
     if (!$session instanceof Session) {
         return;
     }
     $result = $this->getResult();
     if ($result["resulttype"] === self::TYPE_ASSOC) {
         if ($session->canUseLabel($result["approved"])) {
             $session->setLoginDatum("lbl", $result["value"]);
             new SetLabelQuery($session, $result["lid"]);
         } elseif ($result["approved"] === Settings::LABEL_APPROVED_NOT) {
             $session->send(Phrases::CMD_LABEL_WAIT_FOR_APPROVAL);
         }
     }
 }
コード例 #14
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     foreach ($main->getSessions() as $ses) {
         if ($ses->getUid() === $this->founderUid) {
             $result = $this->getResult();
             if ($result["success"]) {
                 $ses->send(Phrases::CMD_TEAM_CREATE_SUCCESS);
                 $ses->recalculateNametag();
             } else {
                 $ses->send($result["error"]);
             }
             break;
         }
     }
 }
コード例 #15
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     /** @var Session $sender */
     $sender = $main->fetchObject($this->sender);
     if ($sender->getPlayer()->isOnline()) {
         $result = $this->getResult();
         if ($result["resulttype"] === self::TYPE_ASSOC) {
             $result = $result["result"];
             $offtime = $result["offtime"];
             if ($result["status"] === Settings::STATUS_ONLINE and $offtime < 15) {
                 $main->transfer($sender->getPlayer(), $result["status_ip"], $result["status_port"], "");
             }
         }
     }
 }
コード例 #16
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     /** @var Session $sender */
     $sender = $main->fetchObject($this->sender);
     $result = $this->getResult();
     if ($sender->getPlayer() === null) {
         return;
     }
     if ($result["resulttype"] !== self::TYPE_ASSOC) {
         $sender->send(Phrases::CMD_ERR_NOT_FOUND, ["name" => $this->name]);
         return;
     }
     $result = $result["result"];
     $teamrank = $result["teamrank"];
     $tid = $result["tid"];
     if ($tid !== $sender->getTeamId()) {
         $sender->send(Phrases::CMD_TEAM_ERR_DIFFERENT_TEAM);
         return;
     }
     if ($sender->getTeamRank() <= $teamrank) {
         $sender->send(Phrases::CMD_TEAM_RANK_CHANGE_NEED_TO_LOW);
         return;
     }
     if ($teamrank === Settings::TEAM_RANK_JUNIOR and !$this->promote) {
         $sender->send(Phrases::CMD_TEAM_RANK_CHANGE_NO_DEMOTE_JUNIOR);
         return;
     }
     if ($teamrank === Settings::TEAM_RANK_COLEAD and $this->promote) {
         $sender->send(Phrases::CMD_TEAM_RANK_CHANGE_NO_PROMOTE_CO_LEADER);
         return;
     }
     if ($teamrank === Settings::TEAM_RANK_LEADER) {
         $sender->send(Phrases::CMD_TEAM_RANK_CHANGE_ONE_LEADER);
         return;
     }
     if ($this->promote) {
         $teamrank++;
         $sender->translate(Phrases::CMD_TEAM_RANK_CHANGE_PROMOTED, ["name" => $this->name, "newrank" => $sender->translate(Phrases::WORDS_TEAM_RANKS)[$teamrank]]);
     } else {
         $teamrank--;
         $sender->translate(Phrases::CMD_TEAM_RANK_CHANGE_PROMOTED, ["name" => $this->name, "newrank" => $sender->translate(Phrases::WORDS_TEAM_RANKS)[$teamrank]]);
     }
     $hormone = Hormone::get($main, Hormone::TEAM_RANK_CHANGE_HORMONE, $sender->getInGameName(), "", Settings::CLASS_ALL, ["uid" => (int) $result["uid"], "newRank" => $teamrank]);
     $hormone->release();
     new RawAsyncQuery($main, "UPDATE users SET teamrank={$teamrank} WHERE uid=" . $result["uid"]);
 }
コード例 #17
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $ses = $main->getSessionByUid($this->uid);
     if ($ses instanceof Session) {
         $friends = [Friend::FRIEND_ENEMY => [], Friend::FRIEND_ACQUAINTANCE => [], Friend::FRIEND_GOOD_FRIEND => [], Friend::FRIEND_BEST_FRIEND => []];
         foreach ($this->getResult()["result"] as $friend) {
             $friendUid = $friend["uid"];
             $type = $friend["type"];
             $requested = $friend["requested"];
             $reqDir = $friend["direction"];
             $name = $friend["name"];
             $friends[$type][$friendUid] = new Friend($this->uid, $friendUid, $type, $requested, $reqDir, $name);
         }
         $ses->setLoginDatum("friends", $friends);
     }
 }
コード例 #18
0
 public function onCompletion(Server $server)
 {
     $player = $server->getPlayerExact($this->exactName);
     if ($player instanceof Player) {
         $result = $this->getResult();
         if ($result["resulttype"] === self::TYPE_ASSOC) {
             $row = $result["result"];
             /** @var string $ip */
             /** @var int $port */
             extract($row);
             $main = BasePlugin::getInstance($server);
             $main->transfer($player, $ip, $port, Phrases::VAR_success . "Transferring you to a " . Settings::$CLASSES_NAMES[$this->class] . " server.");
         } else {
             $player->sendMessage(Phrases::VAR_error . "No " . Settings::$CLASSES_NAMES[$this->class] . " servers available!");
         }
     }
 }
コード例 #19
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $ses = $main->getSessionByUid($this->uid);
     if ($ses instanceof Session) {
         $result = $this->getResult();
         if ($result["resulttype"] === self::TYPE_ALL) {
             $rows = $result["result"];
             $purchases = [];
             foreach ($rows as $row) {
                 $purchases[$row["pid"]] = new Purchase((int) $row["pid"], $this->uid, $this->class, (int) $row["id"], (int) $row["amplitude"], (int) $row["count"], (int) $row["expiry"]);
             }
             $ses->setLoginDatum("purchases", $purchases);
             new ReloadKitsQuery($main, $this->uid, $this->class, $this->msg);
         }
     }
 }
コード例 #20
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $result = $this->getResult();
     $ses = $main->getSessionByUid($this->uid);
     if (!$ses instanceof Session) {
         return;
     }
     if ($result["success"] === false) {
         $ses->send($result["error"]);
         return;
     }
     $data = ["teamname" => $this->teamName];
     $data["name"] = $ses->getPlayer()->getName();
     switch ($this->type) {
         case self::REQUEST_FROM_USER:
             $ses->send(Phrases::CMD_TEAM_JOIN_ALREADY_REQUESTED, $data);
             break;
         case self::REQUEST_FROM_TEAM:
             $ses->send(Phrases::CMD_TEAM_JOIN_ACCEPTED, $data);
             $joined = true;
             break;
         case self::DIRECT_JOIN:
             $ses->send(Phrases::CMD_TEAM_JOIN_DIRECTLY_JOINED, $data);
             $joined = true;
             break;
         default:
             $type = Hormone::get($main, Hormone::TEAM_CHAT, "Network", "%tr%" . Phrases::CMD_TEAM_REQUEST_RECEIVED, Settings::CLASS_ALL, ["tid" => $this->tid, "teamName" => $this->teamName, "ign" => "Network", "data" => ["name" => $this->playerName]]);
             $type->release();
             $ses->send(Phrases::CMD_TEAM_JOIN_REQUESTED, $data);
             break;
     }
     if (isset($joined, $ses)) {
         $ses->setLoginDatum("tid", $this->tid);
         $ses->setLoginDatum("teamname", $this->teamName);
         $ses->setLoginDatum("teamjoin", time());
         $ses->setLoginDatum("teampts", 0);
         $ses->setLoginDatum("teamrank", 0);
         $ses->recalculateNameTag();
         $type = Hormone::get($main, Hormone::TEAM_CHAT, "Network", "%tr%" . Phrases::CMD_TEAM_JOINED, Settings::CLASS_ALL, ["tid" => $this->tid, "teamName" => $this->teamName, "ign" => "Network", "data" => $data]);
         $type->release();
     }
 }
コード例 #21
0
 public function onCompletion(Server $server)
 {
     /** @var Session $sender */
     $sender = BasePlugin::getInstance($server)->fetchObject($this->sender);
     if (!$sender->getPlayer()->isOnline()) {
         return;
     }
     $result = $this->getResult();
     if ($result["resulttype"] !== self::TYPE_ASSOC) {
         $sender->send(Phrases::CMD_TEAM_ERR_NO_SUCH_TEAM, ["name" => $this->name]);
         return;
     }
     $row = $result["result"];
     if ($row["pvp_deaths"] === 0) {
         $row["pvp_kd"] = "N/A";
     } else {
         $row["pvp_kd"] = round($row["pvp_kills"] / $row["pvp_deaths"], 3);
     }
     $sender->send(Phrases::CMD_TEAM_INFO_RESULT, $row);
 }
コード例 #22
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $result = $this->getResult();
     if ($result["resulttype"] !== self::TYPE_ASSOC) {
         return;
     }
     /** @var Session $sender */
     $sender = $main->fetchObject($this->sender);
     if (!$sender->getPlayer()->isOnline()) {
         return;
     }
     $boolean = (bool) $this->getResult()["result"];
     if ($boolean) {
         $sender->send(Phrases::CMD_TEAM_CONFIG_CHECK_TRUE, ["type" => $sender->translate($this->phrase)]);
     } else {
         $sender->send(Phrases::CMD_TEAM_CONFIG_CHECK_FALSE, ["type" => $sender->translate($this->phrase)]);
     }
     return;
 }
コード例 #23
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     foreach ($main->getSessions() as $ses) {
         if ($ses->getUid() === $this->founderUid) {
             $result = $this->getResult();
             if ($result["success"]) {
                 $ses->send(Phrases::CMD_TEAM_CREATE_SUCCESS);
                 $ses->setLoginDatum("tid", $this->getId());
                 $ses->setLoginDatum("teamname", $this->teamName);
                 $ses->setLoginDatum("teamrank", Settings::TEAM_RANK_LEADER);
                 $ses->setLoginDatum("teamjointime", time());
                 $ses->setLoginDatum("teampts", 0);
                 $ses->recalculateNameTag();
             } else {
                 $ses->send($result["error"]);
             }
             break;
         }
     }
 }
コード例 #24
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $result = $this->getResult();
     if ($this->lastId === null) {
         $main->setInternalLastChatId($this->fetchedMaxId);
         $result = $this->getResult()["result"];
         foreach ($result as $row) {
             $type = Hormone::get($main, Hormone::MUTE_CHAT, $row["src"], $row["msg"], Settings::$LOCALIZE_CLASS, json_decode($row["json"]));
             $type->execute();
         }
     } elseif ($result["resulttype"] === self::TYPE_ALL) {
         $result = $this->getResult()["result"];
         foreach ($result as $row) {
             $row["json"] = json_decode($row["json"], true);
             $main->handleChat($row);
         }
     }
     $task = $main->getFireSyncChatQueryTask();
     $task->canFireNext = true;
 }
コード例 #25
0
 public function onCompletion(Server $server)
 {
     $result = $this->getResult();
     if ($result["resulttype"] !== self::TYPE_ASSOC) {
         return;
     }
     $main = BasePlugin::getInstance($server);
     /** @var Session $sender */
     $sender = $main->fetchObject($this->sender);
     $result = $result["result"];
     if ($result["tid"] !== $sender->getTeamId()) {
         $sender->send(Phrases::CMD_TEAM_ERR_DIFFERENT_TEAM);
         return;
     }
     if ($result["teamrank"] >= $sender->getTeamRank()) {
         $sender->send(Phrases::CMD_TEAM_KICK_LOW_TO_HIGH);
         return;
     }
     Hormone::get($main, Hormone::TEAM_KICK_PROPAGANDA, $sender->getInGameName(), $this->msg, Settings::CLASS_ALL, ["uid" => $result["uid"]])->release();
     new RawAsyncQuery($main, "UPDATE users SET tid=-1, teamrank=0, teamjoin=0, teampts=0 WHERE uid=" . $result["uid"]);
     $sender->send(Phrases::CMD_TEAM_KICK_SUCCESS);
 }
コード例 #26
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $ses = $main->getSessionByUid($this->senderUid);
     if (!$ses instanceof Session) {
         return;
     }
     $result = $this->getResult();
     if ($result["resulttype"] !== self::TYPE_ASSOC) {
         $ses->send(Phrases::CMD_ERR_NOT_FOUND, ["name" => $this->name]);
         return;
     }
     $targetUid = $result["result"]["uid"];
     $result = $ses->setFriendAttempt($targetUid, $this->type, $prop);
     if ($prop) {
         $type = Hormone::get($main, Hormone::RELOAD_FRIENDS_PROPAGANDA, $ses->getPlayer()->getName(), "{$result}", Settings::CLASS_ALL, ["uid" => $targetUid]);
         $type->release();
         $type = Hormone::get($main, Hormone::RELOAD_FRIENDS_PROPAGANDA, $this->name, "{$result}", Settings::CLASS_ALL, ["uid" => $this->senderUid]);
         $type->release();
     }
     $ses->send(self::$RESPONSES[$result], ["from" => $ses->getInGameName(), "to" => $this->name, "target" => $this->name, "req" => self::$TYPES[$this->type], "cur" => self::$TYPES[$ses->getFriend($targetUid)->type]]);
 }
コード例 #27
0
 public function onCompletion(Server $server)
 {
     $ses = BasePlugin::getInstance($server)->getSessionByUid($this->uid);
     if (!$ses instanceof Session) {
         return;
     }
     $kitRows = [];
     foreach ($this->getResult()["result"] as $resultRow) {
         $kitid = (int) $resultRow["kitid"];
         $resultRow["kitid"] = (int) $resultRow["kitid"];
         $resultRow["slot"] = (int) $resultRow["slot"];
         $resultRow["value"] = (int) $resultRow["value"];
         if (!isset($kitRows[$kitid])) {
             $kitRows[$kitid] = [$resultRow];
         } else {
             $kitRows[$kitid][] = $resultRow;
         }
     }
     $ses->setLoginDatum("kitrowsarray", $kitRows);
     $ses->reloadKitsCallback();
     if ($this->msg) {
         $ses->send(Phrases::KITS_RELOADED);
     }
 }
コード例 #28
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     /** @var Session $sender */
     $sender = $main->fetchObject($this->sender);
     if (!$sender->getPlayer()->isOnline()) {
         return;
     }
     $members = [Settings::TEAM_RANK_LEADER => [], Settings::TEAM_RANK_COLEAD => [], Settings::TEAM_RANK_SENIOR => [], Settings::TEAM_RANK_MEMBER => [], Settings::TEAM_RANK_JUNIOR => []];
     $result = $this->getResult();
     if ($result["resulttype"] !== self::TYPE_ALL) {
         return;
     }
     if (count($result["result"]) === 0) {
         $sender->send(Phrases::CMD_TEAM_ERR_NO_SUCH_TEAM, ["name" => $this->name]);
         return;
     }
     foreach ($result["result"] as $row) {
         $nicks = trim($row["nicks"], "|");
         $nick = explode("|", $nicks)[0];
         $members[$row["teamrank"]][] = $nick;
     }
     $sender->send(Phrases::CMD_TEAM_MEMBER_RESULT, ["leader" => implode(", ", $members[Settings::TEAM_RANK_LEADER]), "coleaders" => implode(", ", $members[Settings::TEAM_RANK_COLEAD]), "seniors" => implode(", ", $members[Settings::TEAM_RANK_SENIOR]), "members" => implode(", ", $members[Settings::TEAM_RANK_MEMBER]), "juniors" => implode(", ", $members[Settings::TEAM_RANK_JUNIOR])]);
 }
コード例 #29
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     foreach ($server->getOnlinePlayers() as $p) {
         if ($p->getId() === $this->sesId) {
             $player = $p;
             break;
         }
     }
     if (!isset($player)) {
         $main->getLogger()->notice("Player of {$this->sesId} quitted the server before data were fetched.");
         return;
     }
     $consequence = Settings::getWarnPtsConsequence($this->totalWarnPts, $this->lastWarnTime);
     if ($consequence->banLength > 0) {
         $player->kick(TextFormat::RED . "You are banned. You have accumulated " . TextFormat::DARK_PURPLE . $this->totalWarnPts . TextFormat::RED . " warning points, and you still have " . TextFormat::BLUE . MUtils::time_secsToString($consequence->banLength) . TextFormat::RED . " before you are unbanned." . TextFormat::AQUA . "Believe this to be a mistake? Contact us with email at " . TextFormat::DARK_PURPLE . "*****@*****.**");
         return;
     }
     /** @var bool $success */
     /** @var string $query */
     extract($this->getResult());
     if (!$success) {
         $player->kick(TextFormat::RED . "Sorry, our server has encountered an internal error when trying to retrieve your data from the database.", false);
         return;
     }
     /** @var int $resulttype */
     if ($resulttype === AsyncQuery::TYPE_RAW) {
         $main->getLogger()->notice("New account pending to register: {$this->name}");
         $loginData = null;
     } else {
         /** @var mixed[] $result */
         $loginData = $result;
         if (count($main->getSessions()) >= Settings::$SYSTEM_MAX_PLAYERS) {
             $main->getLogger()->notice("Server slots exceeded optimum level!");
             $rank = (int) $loginData["rank"];
             if ($rank & Settings::RANK_PERM_MOD) {
                 $main->getLogger()->notice($player->getName() . " bypassed as mod");
             } elseif ($rank & Settings::RANK_IMPORTANCE_DONATOR) {
                 $main->getLogger()->notice($player->getName() . " bypassed as donator");
             } else {
                 $main->getAltServer($ip, $port);
                 if ($ip !== "0.0.0.0") {
                     $main->getLogger()->notice($player->getName() . " is transferred to {$ip}:{$port}. Feature suppressed in 0.12.1");
                     //						$main->transfer($player, $ip, $port, "This server is full.", false);
                 }
             }
         }
     }
     $main->newSession($player, $loginData);
 }
コード例 #30
0
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     foreach ($server->getOnlinePlayers() as $player) {
         if ($player->getId() === $this->sesId) {
             break;
         }
     }
     if (!isset($player)) {
         return;
     }
     /** @var bool $success */
     /** @var string $query */
     extract($this->getResult());
     if (!$success) {
         $player->kick(TextFormat::RED . "Sorry, our server has encountered an internal error when trying to retrieve your data from the database.", false);
         return;
     }
     /** @var int $resulttype */
     if ($resulttype === AsyncQuery::TYPE_RAW) {
         $main->getLogger()->notice("New account pending to register: {$this->name}");
         $loginData = null;
     } else {
         /** @var mixed[] $result */
         $loginData = $result;
         if (count($main->getSessions()) >= Settings::$SYSTEM_MAX_PLAYERS and isset($loginData["rank"]) and !($loginData["rank"] & Settings::RANK_IMPORTANCE_DONATOR or $loginData["rank"] & Settings::RANK_PERM_MOD)) {
             $main->getAltServer($ip, $port);
             $main->transfer($player, $ip, $port, "This server is full.", false);
         }
         $conseq = Settings::getWarnPtsConseq($this->totalWarnPts, $loginData["lastwarn"]);
         if ($conseq->banLength > 0) {
             $player->kick(TextFormat::RED . "You are banned.\nYou have accumulated " . TextFormat::DARK_PURPLE . $this->totalWarnPts . TextFormat::RED . " warning points,\nand you still have " . TextFormat::BLUE . MUtils::time_secsToString($conseq->banLength) . TextFormat::RED . " before you are unbanned.\n" . TextFormat::AQUA . "Believe this to be a mistake? Contact us with email at " . TextFormat::DARK_PURPLE . "*****@*****.**");
             return;
         }
     }
     $main->newSession($player, $loginData);
 }