Example #1
0
 /**
  * @param Session $session
  * @param int $kitid
  * @param mixed[][] $rows
  */
 public function __construct(Session $session, $kitid, array $rows)
 {
     $this->uid = $session->getUid();
     $this->kitid = $kitid;
     foreach ($rows as $row) {
         $slot = $row["slot"];
         $name = $row["name"];
         $value = $row["value"];
         if ($slot === self::SLOT_SPECIAL_REAL_SIZE) {
             $this->realSize = $value;
         } elseif ($slot === self::SLOT_SPECIAL_ABSTRACT_SIZE) {
             $this->abstractSize = $value;
         } elseif ($slot === self::SLOT_SPECIAL_NAME) {
             $this->name = $name;
         } elseif ($slot < self::ARMOR_STARTS_AT) {
             $this->realSlots[$slot] = new KitEntry($this, $slot, $name, $value, $session->getPurchase($value));
         } elseif ($slot < self::ABSTRACT_STARTS_AT) {
             $this->armorSlots[$slot - self::ARMOR_STARTS_AT] = new KitEntry($this, $slot, $name, $value, $session->getPurchase($value));
         } else {
             $this->abstractSlots[$slot - self::ABSTRACT_STARTS_AT] = new KitEntry($this, $slot, $name, $value, $session->getPurchase($value));
         }
     }
     for ($i = 0; $i < $this->realSize; $i++) {
         if (!isset($this->realSlots[$i])) {
             $this->realSize[$i] = new KitEntry($this, $i, "Slot " . ($i + 1), 0, null, false);
         }
     }
     for ($i = 0; $i < $this->abstractSize; $i++) {
         if (!isset($this->abstractSlots[$i])) {
             $this->abstractSlots[$i] = new KitEntry($this, $i + self::ABSTRACT_STARTS_AT, "Slot " . ($i + 1), 0, null, false);
         }
     }
 }
 protected function run(array $args, Session $sender)
 {
     $msg = implode(" ", $args);
     if ($sender->getSpamDetector()->censor($msg)) {
         $sender->onChat($msg, Session::CHAT_ME);
     }
 }
 protected function run(array $args, Session $sender)
 {
     $gt = "";
     /**
      * @var int $type
      * @var Friend[] $friends
      */
     foreach ($sender->getLoginDatum("friends") as $type => $friends) {
         $out = Phrases::VAR_info . ucfirst(SetFriendQuery::$TYPES[$type]) . ":  ";
         foreach ($friends as $friend) {
             if ($this->getPlugin()->getSessionByUid($friend->friendUid) instanceof Session) {
                 $out .= Phrases::VAR_em . "*" . Phrases::VAR_info;
             }
             $out .= $friend->friendName;
             if ($friend->getRequestRelativeDirection() === Friend::DIRECTION_OUT) {
                 $out .= Phrases::VAR_em3;
                 $out .= "<-";
                 $out .= SetFriendQuery::$TYPES[$friend->requestedType];
                 $out .= Phrases::VAR_info;
             } elseif ($friend->getRequestRelativeDirection() === Friend::DIRECTION_IN) {
                 $out .= Phrases::VAR_em2;
                 $out .= "->";
                 $out .= SetFriendQuery::$TYPES[$friend->requestedType];
                 $out .= Phrases::VAR_info;
             }
             $out .= ", ";
         }
         $gt .= substr($out, 0, -2) . "\n";
     }
     return $gt;
 }
 public function __construct(BasePlugin $main, Session $session, $teamName)
 {
     $this->teamName = $teamName;
     $this->uid = $session->getUid();
     $this->playerName = $session->getInGameName();
     parent::__construct($main);
 }
 protected function run(array $args, Session $sender)
 {
     if (isset($args[0])) {
         $name = array_shift($args);
     }
     new TeamInfoQuery($sender, isset($name) ? $name : $sender->getTeamName());
     return true;
 }
 protected function checkPerm(Session $session, &$msg = "")
 {
     if (!$session->isModerator()) {
         $msg = "This command is only for moderators.";
         return false;
     }
     return true;
 }
 protected function run(array $args, Session $sender)
 {
     if (Settings::$LOCALIZE_CLASS === $this->class) {
         return TextFormat::RED . "You are already in {$this->human}!";
     }
     $this->getPlugin()->transferGame($sender->getPlayer(), $this->class);
     return TextFormat::AQUA . "Finding an available " . MUtils::word_addSingularArticle($this->human) . " server for you...";
 }
 protected function checkPerm(Session $session, &$msg = null)
 {
     if ($session->isModerator() or $session->isDonator()) {
         return true;
     }
     $msg = $session->translate(Phrases::CMD_ERR_NO_PERM);
     return false;
 }
 public function __construct(BasePlugin $main, Session $issuer, $name)
 {
     $this->issuerName = $issuer->getPlayer()->getName();
     $this->issuerUid = $issuer->getUid();
     $this->tid = $issuer->getTeamId();
     $this->teamName = $issuer->getTeamName();
     $this->queriedTargetName = $name;
     parent::__construct($main);
 }
 protected function run(array $args, Session $sender)
 {
     $msg = implode(" ", $args);
     $isLocal = substr($msg, 0, 1) === ".";
     if ($isLocal) {
         $msg = substr($msg, 1);
     }
     if ($sender->getSpamDetector()->censor($msg)) {
         $sender->onChat($msg, $isLocal ? Session::CHAT_ME_LOCAL : Session::CHAT_ME_CLASS);
     }
 }
 protected function run(array $args, Session $sender)
 {
     if (!isset($args[0])) {
         return false;
     }
     if ($sender->getTeamRank() < Settings::TEAM_RANK_COLEAD) {
         return $sender->translate(Phrases::CMD_TEAM_KICK_COLEAD);
     }
     new TeamKickQuery($this->getMain(), $sender, array_shift($args), implode(" ", $args));
     return true;
 }
 protected function run(array $args, Session $sender)
 {
     if (!isset($args[0])) {
         return false;
     }
     $name = array_shift($args);
     if (strtolower($name) === strtolower($sender->getPlayer()->getName())) {
         return false;
     }
     new SetFriendQuery($this->getMain(), $name, $sender->getUid(), $this->level);
     return true;
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1 or $sender->getTeamRank() < Settings::TEAM_RANK_SENIOR) {
         return $sender->translate(Phrases::CMD_TEAM_INVITE_NOT_SENIOR);
     }
     $name = array_shift($args);
     if ($name === null) {
         return false;
     }
     new InviteTeamQuery($this->getMain(), $sender, $name);
     return true;
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_ALREADY_IN_TEAM);
     }
     if (!isset($args[0])) {
         return false;
     }
     $team = array_shift($args);
     new JoinTeamQuery($this->getMain(), $sender->getUid(), $team);
     return $sender->translate(Phrases::CMD_TEAM_LOADING);
 }
 protected function run(array $args, Session $sender)
 {
     if (!$sender->confirmAlt) {
         $sender->confirmAlt = true;
         return $sender->translate(Phrases::CMD_ALT_WARNING);
     }
     $this->getMain()->getAltServer($ip, $port);
     if ($ip !== "0.0.0.0") {
         $this->getMain()->transfer($sender->getPlayer(), $ip, $port, $sender->translate(Phrases::CMD_ALT_SUCCESS, ["ip" => $ip, "port" => $port]));
         return true;
     }
     return $sender->translate(Phrases::CMD_ALT_WAIT);
 }
 private function canRead(Session $session, $subLevel, &$msg)
 {
     if ($subLevel < $this->level) {
         return true;
     }
     if ($this->level === Session::CHANNEL_SUB_NORMAL and $subLevel === Session::CHANNEL_SUB_MENTION and ($replace = preg_replace_callback("%([^A-Za-z0-9_])({$session->getPlayer()->getName()})([^A-Za-z0-9_])%", function ($match) {
         return $match[1] . Phrases::VAR_em3 . $match[2] . Phrases::VAR_info . $match[3];
     }, $msg)) !== $msg) {
         $msg = $replace;
         return true;
     }
     return false;
 }
 public function run(array $args, Session $session)
 {
     if (strtolower($args[0]) == "local") {
         if ($session->getCurrentChatState() === Session::CHANNEL_LOCAL) {
             $session->getPlayer()->sendMessage(TextFormat::RED . "The channel state is already local");
         } else {
             $session->currentChatState = Session::CHANNEL_LOCAL;
         }
     }
     if (strtolower($args[0]) == "team") {
         if ($session->getCurrentChatState() === Session::CHANNEL_TEAM) {
             $session->getPlayer()->sendMessage(TextFormat::RED . "The channel state is already the team");
         } else {
             $session->currentChatState = Session::CHANNEL_TEAM;
         }
     }
     if (strtolower($args[0]) == "create") {
         if (isset($args[1])) {
             $session->joinChannel($args[1]);
             $session->getPlayer()->sendMessage(TextFormat::AQUA . $args[1] . "has been created!");
         } else {
             $session->getPlayer()->sendMessage(TextFormat::RED . "Please specify a channel to be created");
         }
     }
 }
 private function execWarnOn(CommandSender $issuer, Session $ses)
 {
     $msg = $ses->translate(Phrases::WARNING_RECEIVED_NOTIFICATION, ["issuer" => $issuer->getName(), "message" => $this->msg, "points" => $this->points, "totalpoints" => $ses->getWarningPoints()]);
     $conseq = Settings::getWarnPtsConseq($ses->getWarningPoints());
     if ($conseq->banLength) {
         $msg .= $ses->translate(Phrases::WARNING_BANNED_NOTIFICATION, ["length" => MUtils::time_secsToString($conseq->banLength)]);
         $msg = "\n" . $msg;
         $ses->getPlayer()->kick($msg, false);
     } elseif ($conseq->muteSecs) {
         $msg .= $ses->translate(Phrases::WARNING_MUTED_NOTIFICATION, ["length" => MUtils::time_secsToString($conseq->muteSecs)]);
         $ses->getPlayer()->sendMessage($msg);
         // TODO mute
     }
 }
 protected function run(array $args, Session $sender)
 {
     if (!isset($args[0])) {
         return false;
     }
     $msg = implode(" ", $args);
     $local = true;
     if (substr($msg, 0, 1) === ".") {
         $msg = substr($msg, 1);
         $local = false;
     }
     $type = Hormone::get($sender->getMain(), Hormone::CONSOLE_MESSAGE, $sender->getInGameName(), $msg, $local ? Settings::$LOCALIZE_CLASS : Settings::CLASS_ALL, ["ip" => Settings::$LOCALIZE_IP, "port" => Settings::$LOCALIZE_PORT]);
     $type->release();
     return "Message sent to every staff member.";
 }
 protected function run(array $args, Session $sender)
 {
     if (!isset($args[0])) {
         return false;
     }
     $msg = implode(" ", $args);
     $local = true;
     if (substr($msg, 0, 1) === ".") {
         $msg = substr($msg, 1);
         $local = false;
     }
     $type = new ConsoleChatType($sender->getMain(), $sender->getInGameName(), $msg, $local ? Settings::$LOCALIZE_CLASS : Settings::CLASS_ALL, ["ip" => Settings::$LOCALIZE_IP, "port" => Settings::$LOCALIZE_PORT]);
     $type->push();
     return true;
 }
 protected function run(array $args, Session $sender)
 {
     if (!isset($args[0])) {
         if ($sender->queryTarget === null) {
             return false;
         }
         $sender->setQueryTargetUid(null);
         return $sender->translate(Phrases::CMD_QUERY_CANCELLED);
     }
     $target = $this->getSession($name = array_shift($args));
     if ($target === null) {
         return $this->notOnline($sender, $name);
     }
     $sender->setQueryTargetUid($target->getUid());
     return $sender->translate(Phrases::CMD_QUERY_SUCCESS, ["target" => $target->getInGameName()]);
 }
 public function onCompletion(Server $server)
 {
     $friends = [Session::FRIEND_LEVEL_NONE => [], Session::FRIEND_LEVEL_ACQUAINTANCE => [], Session::FRIEND_LEVEL_GOOD_FRIEND => [], Session::FRIEND_LEVEL_BEST_FRIEND => []];
     if ($this->session->getPlayer()->isOnline()) {
         $result = $this->getResult()["result"];
         foreach ($result as $row) {
             $type = $row["type"];
             $nick = array_filter(explode("|", $row["nicks"]))[0];
             $isOnline = $server->getPlayerExact($nick) instanceof Player;
             $class = $type & ~Session::FRIEND_BITMASK_REQUEST;
             $req = $type & Session::FRIEND_BITMASK_REQUEST;
             if ($isOnline) {
                 $nick = TextFormat::GREEN . "*" . TextFormat::WHITE . $nick;
             }
             if ($req === Session::FRIEND_IN) {
                 $nick .= TextFormat::GOLD . ">";
             } elseif ($req === Session::FRIEND_OUT) {
                 $nick .= TextFormat::DARK_AQUA . "<";
             }
             $nick .= TextFormat::WHITE;
             $friends[$class][] = $nick;
         }
         $this->session->send(Phrases::CMD_FRIEND_LIST_KEY);
         $this->session->sendCurlyLines();
         foreach ($friends as $class => $list) {
             $type = $this->session->translate(Session::$FRIEND_TYPES[$class]);
             $this->session->setMaintainedPopup(TextFormat::BLUE . $type . ": " . implode(TextFormat::WHITE . ":", $list));
         }
         $this->session->sendCurlyLines();
     }
 }
 protected function run(array $args, Session $sender)
 {
     if (!$sender instanceof ClassicSession) {
         return "This command is only available on PvP servers";
     }
     if (isset($args[0])) {
         if ($args[0] === "on") {
             $on = true;
         } elseif ($args[0] === "off") {
             $on = false;
         }
     }
     if (!isset($on)) {
         return $sender->translate($sender->isFriendlyFireActivated() ? Phrases::CMD_FFA_CHECK_TRUE : Phrases::CMD_FFA_CHECK_FALSE);
     }
     $sender->setFriendlyFireActivated($on);
     return $sender->translate($on ? Phrases::CMD_FFA_SET_TRUE : Phrases::CMD_FFA_SET_FALSE);
 }
 protected function run(array $args, Session $sender)
 {
     $sender->send(Phrases::CMD_PRIV_MSG_REMIND_QUERY);
     $target = $this->getSession($name = array_shift($args));
     if ($target === null) {
         return $this->offline($sender, $name);
     }
     if (!isset($args[0])) {
         return false;
     }
     $message = implode(" ", $args);
     if (!$sender->getSpamDetector()->censor($message)) {
         return true;
     }
     $target->getPlayer()->sendMessage($msg = Phrases::VAR_info . "[" . $sender->getPlayer()->getName() . " > " . $target->getPlayer()->getName() . "] " . Phrases::VAR_info . $message);
     fwrite($this->getMain()->pmLog, "|from:{$sender->getPlayer()->getName()}|to:{$target->getPlayer()->getName()}|msg:{$message}|" . PHP_EOL);
     return $msg;
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_NOT_IN_TEAM);
     }
     if ($sender->getTeamId() < Settings::TEAM_RANK_COLEAD) {
         return $sender->translate(Phrases::CMD_TEAM_CONFIG_NEED_CO_LEADER, ["type" => $sender->translate($this->humanPhrase)]);
     }
     new TeamConfigChangeQuery($this->getPlugin(), $sender, $sender->getTeamId(), $this->bit, $this->boolean, $this->humanPhrase);
     return true;
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_NOT_IN_TEAM);
     }
     if (!isset($args[0])) {
         new TeamPropertyResponseQuery($this->getPlugin(), $sender, $sender->getTeamId(), $this->column, $this->humanPhrase);
         return true;
     }
     if ($sender->getTeamRank() < Settings::TEAM_RANK_COLEAD) {
         return $sender->translate(Phrases::CMD_TEAM_PROPERTY_NEED_CO_LEADER, ["type" => $sender->translate($this->humanPhrase)]);
     }
     $text = preg_replace('/[ \\t]+\\|[ \\t]+/', "\n", implode(" ", $args));
     $text = trim($text);
     new TeamPropertyChangeQuery($this->getPlugin(), $sender, $sender->getTeamId(), $this->column, $text, $this->humanPhrase);
     return true;
 }
Example #27
0
 public static function fromQuery(DownloadKitQuery $query, Session $session)
 {
     $rows = $query->rows;
     $kit = new Kit();
     $kit->uid = $query->uid;
     $kit->kitid = $query->kitid;
     foreach ($rows as $row) {
         $slot = $row["slot"];
         $name = $row["name"];
         $value = $row["value"];
         if ($slot === self::SLOT_SPECIAL_REAL_SIZE) {
             $kit->realSize = $value;
         } elseif ($slot === self::SLOT_SPECIAL_ABSTRACT_SIZE) {
             $kit->abstractSize = $value;
         } elseif ($slot === self::SLOT_SPECIAL_NAME) {
             $kit->name = $name;
         } elseif ($slot < self::ARMOR_STARTS_AT) {
             $kit->realSlots[$slot] = new KitEntry($kit, $slot, $name, $value, $session->getPurchase($value));
         } elseif ($slot < self::ABSTRACT_STARTS_AT) {
             $kit->armorSlots[$slot - self::ARMOR_STARTS_AT] = new KitEntry($kit, $slot, $name, $value, $session->getPurchase($value));
         } else {
             $kit->abstractSlots[$slot - self::ABSTRACT_STARTS_AT] = new KitEntry($kit, $slot, $name, $value, $session->getPurchase($value));
         }
     }
     for ($i = 0; $i < $kit->realSize; $i++) {
         if (!isset($kit->realSlots[$i])) {
             $kit->realSize[$i] = new KitEntry($kit, $i, "Slot " . ($i + 1), 0, null, false);
         }
     }
     for ($i = 0; $i < $kit->abstractSize; $i++) {
         if (!isset($kit->abstractSlots[$i])) {
             $kit->abstractSlots[$i] = new KitEntry($kit, $i + self::ABSTRACT_STARTS_AT, "Slot " . ($i + 1), 0, null, false);
         }
     }
     return $kit;
 }
 public function detectAds(&$string)
 {
     $string = preg_replace_callback('%([0-9]{1,3}\\.){3}[0-9]{1,3}%i', function ($match) {
         return str_repeat("-", strlen($match));
     }, $string);
     $string = str_replace([".lbsg.net", ".leet.cc"], "", $string);
     $string = preg_replace_callback('%(http[s]?://)?(([A-Za-z0-9\\-]+\\.){2,}([A-Za-z0-9\\-]{1,3}))%', function ($match) {
         if (strlen($match[1]) > 6) {
             return $match[0];
         }
         $domain = $match[3] . $match[4];
         if (in_array($domain, $this->session->getMain()->getApprovedDomains())) {
             return $match[0];
         }
         return str_repeat("-", strlen($match));
     }, $string);
 }
 protected function run(array $args, Session $sender)
 {
     if ($sender->getTeamId() !== -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_ALREADY_IN_TEAM);
     }
     $name = array_shift($args);
     if ($name === null) {
         return false;
     }
     if (!preg_match('/^[A-Za-z0-9_]{5,}$/', $name)) {
         $sender->send(Phrases::CMD_TEAM_CREATE_INVALID_NAME);
         return true;
     }
     new CreateTeamQuery($this->getMain(), $sender->getUid(), $name);
     return $sender->translate(Phrases::CMD_TEAM_LOADING);
 }
 protected function run(array $args, Session $sender)
 {
     if (!isset($args[0])) {
         return false;
     }
     if ($sender->getTeamId() === -1) {
         return $sender->translate(Phrases::CMD_TEAM_ERR_NOT_IN_TEAM);
     }
     if ($sender->getTeamRank() < Settings::TEAM_RANK_SENIOR) {
         return $sender->translate(Phrases::CMD_TEAM_RANK_CHANGE_NEED_SENIOR);
     }
     $name = array_shift($args);
     if (strtolower($sender->getPlayer()->getName()) === strtolower($name)) {
         return false;
     }
     new TeamRankChangeQuery($this->getMain(), $this->promote, $name, $sender);
     return true;
 }