/** * @param Session $session * @param int $status * @return mixed[][]|mixed[] */ protected function getColumns(Session $session, $status) { $coins = $session->getCoins(); $this->coinsDelta = $session->getAndUpdateCoinsDelta(); $skin = $session->getCurrentFaceSkin(); return ["uid" => ["v" => $session->getUid(), "noupdate" => true], "name" => ["v" => strtolower($session->getPlayer()->getName())], "nicks" => "|" . implode("|", $session->getNicks()) . "|", "lastip" => $session->getPlayer()->getAddress(), "status" => $status, "lastses" => Settings::$LOCALIZE_CLASS, "authuuid" => $session->getPlayer()->getUniqueId(), "coins" => ["v" => $coins, "noupdate" => true], "hash" => ["v" => $session->getPasswordHash(), "noupdate" => true], "pwprefix" => ["v" => $session->getPasswordPrefix(), "noupdate" => true], "pwlen" => ["v" => $session->getPasswordLength(), "noupdate" => true], "registration" => ["v" => $session->getRegisterTime(), "noupdate" => true], "laston" => time(), "ontime" => (int) $session->getAndUpdateOntime(), "config" => $session->getAllSettings(), "skin1" => ["v" => substr($skin, 0, 128), "bin" => true], "skin2" => ["v" => substr($skin, 128, 128), "bin" => true], "lastgrind" => $session->getLastGrind(), "rank" => ["v" => $session->getRank(), "noupdate" => true], "warnpts" => $session->getWarningPoints(), "lastwarn" => $session->getLastWarnTime(), "tid" => $session->getTeamId(), "teamrank" => $session->getTeamRank(), "teamjoin" => $session->getTeamJoinTime(), "ignorelist" => "," . implode(",", $session->getIgnoreList()) . ","]; }
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(); } }
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"); } } }
protected function run(array $args, Session $sender) { if ($sender->getTeamId() === -1) { return $sender->translate(Phrases::CMD_TEAM_ERR_NOT_IN_TEAM); } if (!$sender->confirmQuitTeam) { $sender->confirmQuitTeam = true; return $sender->getTeamRank() === Settings::TEAM_RANK_LEADER ? $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_LEADER) : ($sender->getTeamRank() === Settings::TEAM_RANK_JUNIOR ? $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_JUNIOR) : $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_NORMAL)); } if ($sender->getTeamRank() === 4) { $prop = Hormone::get($this->getMain(), Hormone::TEAM_DISBAND_PROPAGANDA, $sender->getInGameName(), "Team disbanded by owner /tq", Settings::CLASS_ALL, ["tid" => $sender->getTeamId()]); $prop->release(); new RawAsyncQuery($this->getMain(), "UPDATE users SET tid=-1,teamrank=0,teamjoin=0,teampts=0 WHERE tid={$sender->getTeamId()}"); new RawAsyncQuery($this->getMain(), "DELETE FROM teams WHERE tid=" . $sender->getTeamId()); return true; } $type = Hormone::get($this->getMain(), Hormone::TEAM_CHAT, "Network", "%tr%" . Phrases::CMD_TEAM_QUITTED, Settings::CLASS_ALL, ["tid" => $sender->getTeamId(), "teamName" => $sender->getTeamName(), "ign" => "Network", "data" => ["name" => $sender->getPlayer()->getName(), "teamname" => $sender->getTeamName()]]); $type->release(); $sender->setLoginDatum("tid", -1); $sender->setLoginDatum("teamname", null); $sender->setLoginDatum("teamrank", 0); $sender->setLoginDatum("teamjoin", 0); $sender->setLoginDatum("teampts", 0); return $sender->translate(Phrases::CMD_TEAM_QUITTED); }
public function detectCaps(&$string) { if (strtoupper($string) === $string and strtolower($string) !== $string) { $string = strtolower($string); $type = Hormone::get($this->session->getMain(), Hormone::CONSOLE_MESSAGE, "{BOT}CapsDetector", Phrases::VAR_notify2 . "Player {$this->session->getPlayer()->getName()}@" . Settings::$LOCALIZE_IP . ":" . Settings::$LOCALIZE_PORT . " said: " . $string . " (automatically de-capitalized)", Settings::CLASS_ALL, ["ip" => Settings::$LOCALIZE_IP, "port" => Settings::$LOCALIZE_PORT]); $type->release(); } }
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..."; }
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) { 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; }
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; }
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); }
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 (!isset($args[0])) { return false; } else { $channel = array_shift($args); $session->joinChannel($channel); return $session->getPlayer()->sendMessage(TextFormat::AQUA . "You have joined the channel " . $channel); } }
protected function run(array $args, Session $sender) { if ($sender->getTeamId() === -1) { return $sender->translate(Phrases::CMD_TEAM_ERR_ALREADY_IN_TEAM); } if (!$sender->confirmQuitTeam) { $sender->confirmQuitTeam = true; return $sender->getTeamRank() === Settings::TEAM_RANK_LEADER ? $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_LEADER) : ($sender->getTeamRank() === Settings::TEAM_RANK_JUNIOR ? $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_JUNIOR) : $sender->translate(Phrases::CMD_TEAM_QUIT_WARNING_NORMAL)); } $type = ChatType::get($this->getMain(), ChatType::TEAM_CHAT, "Network", "%tr%" . Phrases::CMD_TEAM_QUITTED, Settings::CLASS_ALL, ["tid" => $sender->getTeamId(), "teamName" => $sender->getTeamName(), "ign" => "Network", "data" => ["name" => $sender->getPlayer()->getName(), "teamname" => $sender->getTeamName()]]); $type->push(); $sender->setLoginDatum("tid", -1); $sender->setLoginDatum("teamrank", 0); $sender->setLoginDatum("teamjoin", 0); $sender->setLoginDatum("teampts", 0); return true; }
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; }
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) { $sender->getPlayer()->attack(20000, new EntityDamageEvent($sender->getPlayer(), EntityDamageEvent::CAUSE_SUICIDE, 20000)); }
/** * @param Session $session * @param MuteIssue|null $mute * @return bool */ public function isMuted(Session $session, &$mute = null) { $uid = $session->getUid(); $ip = $session->getPlayer()->getAddress(); /** @noinspection PhpDeprecationInspection */ $cid = $session->getPlayer()->getClientId(); foreach ($this->mutes as $k => $mute) { if (time() > $mute->since + $mute->length) { unset($this->mutes[$k]); continue; } if ($mute->uid === $uid or $mute->ip === $ip or $mute->cid === $cid) { return true; } } return false; }
public 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()]); $consequence = Settings::getWarnPtsConsequence($ses->getWarningPoints(), $this->creation); if ($consequence->banLength) { $msg .= $ses->translate(Phrases::WARNING_BANNED_NOTIFICATION, ["length" => MUtils::time_secsToString($consequence->banLength)]); $msg = "\n" . $msg; $ses->getPlayer()->kick($msg, false); } elseif ($consequence->muteSecs) { $mute = new MuteIssue(); $mute->cid = $this->clientId; $mute->ip = $ses->getPlayer()->getAddress(); $mute->uid = $this->uid; $mute->length = $consequence->muteSecs; $mute->msg = $this->msg; $mute->since = $this->creation; $mute->src = $issuer->getName(); $ses->getPlayer()->sendMessage($msg); MuteHormone::fromObject($ses->getMain(), $mute)->release(); } }
protected function run(array $args, Session $sender) { $sender->getPlayer()->setLastDamageCause(new EntityDamageEvent($sender->getPlayer(), EntityDamageEvent::CAUSE_SUICIDE, $sender->getPlayer()->getHealth())); $sender->getPlayer()->kill(); }