/** * @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; }
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; }