public function __construct(BasePlugin $main, $aliases, $humanPhrase, $column)
 {
     $this->humanPhrase = $humanPhrase;
     $this->column = $column;
     $humanName = $main->getLanguageManager()->get($humanPhrase, []);
     parent::__construct($main, $cmd = array_shift($aliases), "Change your team {$humanName}", "/{$cmd} [new {$humanName}...] (use `|` to separate lines)", $aliases);
 }
Пример #2
0
 protected function scheduleNext()
 {
     if ($this->nextScheduled) {
         return;
     }
     $this->main->getServer()->getScheduler()->scheduleDelayedTask($this, 1);
     $this->nextScheduled = true;
 }
 public function __construct(BasePlugin $main, $bit, $boolean, $humanPhrase, array $aliases)
 {
     $this->bit = $bit;
     $this->humanPhrase = $humanPhrase;
     $humanName = $main->getLanguageManager()->get($humanPhrase, []);
     parent::__construct($main, $cmd = array_shift($aliases), "Toggle whether your team is {$humanName}", "/{$cmd} [on|off]", $aliases);
     $this->boolean = $boolean;
 }
Пример #4
0
 public function __construct(BasePlugin $plugin)
 {
     $plugin->getServer()->getScheduler()->scheduleAsyncTask($this);
     if ($this->getResultType() !== self::TYPE_RAW and $this->getExpectedColumns() === null) {
         echo "Fatal: Plugin error. ", static::class . " must override getExpectedColumns(), but it didn't. Committing suicide.";
         sleep(604800);
         die;
     }
 }
 public function __construct(BasePlugin $plugin)
 {
     /** @var string[] $langs */
     $langs = json_decode($plugin->getResourceContents("langs/index.json"), true);
     foreach ($langs as $lang) {
         $path = "langs/{$lang}.json";
         $data = json_decode($plugin->getResourceContents($path), true);
         foreach ($data as $key => $phrase) {
             $this->getPhraseObject($key)->setImplementation($lang, $phrase);
         }
     }
 }
 public function __construct(BasePlugin $plugin)
 {
     /** @var string[] $langs */
     $langs = json_decode($plugin->getResourceContents("langs/index.json"), true);
     foreach ($langs as $lang) {
         $path = "langs/{$lang}.json";
         $data = json_decode($plugin->getResourceContents($path), true);
         $walker = new ArrayWalker($data);
         $list = $walker->getPlainList();
         foreach ($list as $k => $v) {
             $this->getPhraseObject($k)->setImplementation($lang, $v);
         }
     }
 }
 public function onQueryRegen(QueryRegenerateEvent $event)
 {
     $event->setWorld($this->main->query_world());
     $this->main->getPlayersCount($total, $max, $classTotal, $classMax);
     $event->setPlayerCount($classTotal);
     $event->setMaxPlayerCount($classMax);
     $event->setPlayerList([]);
     $event->setServerName(TextFormat::clean($this->main->getServer()->getNetwork()->getName()));
     $extra = $event->getExtraData();
     $name = strtolower(Settings::$CLASSES_NAMES[Settings::$LOCALIZE_CLASS]);
     $extra[$name . "_numplayers"] = $classTotal;
     $extra[$name . "_maxplayers"] = $classMax;
     $this->addExtras($extra);
     $event->setExtraData($extra);
 }
 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.");
     }
 }
 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();
     }
 }
 public function __construct(BasePlugin $plugin)
 {
     /** @var string[] $langs */
     $langs = json_decode($plugin->getResourceContents("langs/index.json"), true);
     foreach ($langs as $lang) {
         $plugin->getLogger()->info("Loading language '{$lang}'...");
         $path = "langs/{$lang}.json";
         $data = json_decode($plugin->getResourceContents($path), true);
         $walker = new ArrayWalker($data);
         $list = $walker->getPlainList();
         foreach ($list as $k => $v) {
             $this->getPhraseObject($k)->setImplementation($lang, $v);
         }
         $plugin->getLogger()->info("Loaded language '{$lang}' with " . count($list) . " entries.");
     }
 }
 public function onCompletion(Server $server)
 {
     $ses = BasePlugin::getInstance($server)->getSessionByUid($this->uid);
     if ($ses instanceof Session) {
         $ses->recalculateNametag();
     }
 }
 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.");
     }
 }
 public function onDisable(PluginDisableEvent $event)
 {
     if ($event->getPlugin() === $this->main) {
         foreach ($this->main->getServer()->getOnlinePlayers() as $player) {
             $player->kick("Server stop", false);
         }
     }
 }
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     $hormone = $main->fetchObject($this->hormone);
     if ($hormone instanceof Hormone) {
         $hormone->onPostRelease($this->rowId);
     }
 }
 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)]);
     }
 }
 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]);
     }
 }
 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]]);
         }
     }
 }
 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);
     }
 }
 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));
 }
 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"]]);
     }
 }
 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"], "");
             }
         }
     }
 }
 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;
         }
     }
 }
 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);
         }
     }
 }
 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"]);
 }
 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!");
         }
     }
 }
 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);
     }
 }
 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);
         }
     }
 }
 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();
     }
 }
 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;
 }
 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);
 }