Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace aAuth;
- use pocketmine\plugin\PluginBase;
- use pocketmine\utils\Config;
- use pocketmine\utils\TextFormat as F;
- use pocketmine\command\Command;
- use pocketmine\command\CommandSender;
- use pocketmine\event\Listener;
- use pocketmine\event\player\PlayerMoveEvent;
- use pocketmine\event\player\PlayerChatEvent;
- use pocketmine\event\player\PlayerDropItemEvent;
- use pocketmine\event\player\PlayerJoinEvent;
- use pocketmine\event\player\PlayerQuitEvent;
- use pocketmine\event\player\PlayerCommandPreprocessEvent;
- use pocketmine\Player;
- use pocketmine\Server;
- use pocketmine\event\block\BlockBreakEvent;
- use pocketmine\event\player\PlayerInteractEvent;
- class wAuth extends PluginBase implements Listener {
- private $db, $users = array(), $reg = array();
- public function onEnable() {
- if(!is_dir($this->getDataFolder()))
- @mkdir($this->getDataFolder());
- $this->config = (new Config($this->getDataFolder()."config.yml", Config::YAML, ["salt" => "bbsecktechworld"]))->getAll();
- $this->db = new \SQLite3($this->getDataFolder()."users.db");
- $this->db->exec(stream_get_contents($this->getResource("database.sql")));
- $this->getServer()->getPluginManager()->registerEvents($this, $this);
- $this->getLogger()->info(F::GREEN."vAuth ON");
- }
- public function onPlayerMove(PlayerMoveEvent $event) {
- if(!isset($this->users[strtolower($event->getPlayer()->getName())]))
- $event->setCancelled(true);
- }
- public function onDrop(PlayerDropItemEvent $e){
- if(!isset($this->users[strtolower($e->getPlayer()->getName())]))
- $e->setCancelled(true);
- }
- public function onBreak(BlockBreakEvent $e){
- if(!isset($this->users[strtolower($e->getPlayer()->getName())]))
- $e->setCancelled(true);
- }
- public function onTap( PlayerInteractEvent $e){
- if(!isset($this->users[strtolower($e->getPlayer()->getName())]))
- $e->setCancelled(true);
- }
- public function onPlayerJoin(PlayerJoinEvent $event) {
- $player = $event->getPlayer();
- $sql = $this->db->prepare("SELECT * FROM `users` WHERE `nickname` = :nickname");
- $sql->bindValue(":nickname", strtolower($player->getName()), SQLITE3_TEXT);
- $sql = $sql->execute();
- $user = $sql->fetchArray(SQLITE3_ASSOC);
- if(isset($user["nickname"])) {
- $ip = $player->getAddress();
- if($ip == $user["ipLast"]) {
- $this->users[strtolower($player->getName())] = [
- "pass" => $user["password"],
- "ip" => $ip
- ];
- $player->sendMessage("§7[§a§fTechnologyWorld§7] §cВаш IP adress уже был запечатлен сегодня на сервере,поэтому вам уже не надо логиниться§f! ");
- } else
- $player->sendMessage("§7[§a§fTechnologyWorld§7] §cНапиши свой пароль в чат, чтобы авторизироваться на проекте TechnologyWorld§f! ");
- } else $player->sendMessage("§7[§a§fTechnologyWorld§7] §cНапиши любой пароль в чат, а дальше запиши его на листочек или запомни§f! ");
- $sql->finalize();
- }
- public function onPlayerQuit(PlayerQuitEvent $event) {
- unset($this->users[strtolower($event->getPlayer()->getName())]);
- }
- public function onPlayerCommandPreprocess(PlayerCommandPreprocessEvent $event) {
- $login = "§7[§a§fTechnologyWorld§7] §cНапиши свой пароль в чат, чтобы авторизироваться на TechnologyWorld§f!";
- $player = $event->getPlayer();
- $name = strtolower($player->getName());
- $ip = $player->getAddress();
- $msg = $event->getMessage();
- if(!isset($this->users[$name])) {
- if(count(explode("/", $msg)) > 1) {
- $event->setCancelled(true);
- $player->sendMessage($login);
- } else {
- $msg = explode(" ", $msg);
- if(count($msg) == 1) {
- $sql = $this->db->prepare("SELECT * FROM `users` WHERE `nickname` = :nickname");
- $sql->bindValue(":nickname", $name, SQLITE3_TEXT);
- $sql = $sql->execute();
- if($sql instanceof \SQLite3Result) {
- $pass = crypt(md5($msg[0]), sha1($this->config["salt"]));
- $user = $sql->fetchArray(SQLITE3_ASSOC);
- if(!empty($user["nickname"])) {
- if($pass == $user["password"]) {
- $upd = $this->db->prepare("UPDATE `users` SET `ipLast` = :ip WHERE `nickname` = :nickname");
- $upd->bindValue(":ip", $ip);
- $upd->bindValue(":nickname", $name);
- $upd = $upd->execute();
- $upd->finalize();
- $this->users[$name] = [
- "pass" => $pass,
- "ip" => $ip
- ];
- $player->sendMessage("§7[§a§fTechnologyWorld§7] §cВы успешно авторизировались на проекте TechnologyWorld§f!");
- } else $player->sendMessage(F::RED."§7[§a§fTechnologyWorld§7] §cТы ввел неправильный пароль. Не смей никого взламывать§f!");
- } else {
- if(!isset($this->reg[$name])) {
- $this->reg[$name] = $pass;
- $player->sendMessage(F::GRAY."§7[§a§fTechnologyWorld§7] §cДля подтверждения введи еще раз свой пароль§f! ");
- } else {
- if($pass == $this->reg[$name]) {
- $add = $this->db->prepare("INSERT INTO `users`(`nickname`, `password`, `ipReg`, `ipLast`) VALUES(:nickname, :password, :ip, :ip)");
- $add->bindValue(":nickname", $name);
- $add->bindValue(":password", $pass);
- $add->bindValue(":ip", $ip);
- $add = $add->execute();
- $add->finalize();
- $this->users[$name] = [
- "pass" => $pass,
- "ip" => $ip
- ];
- $player->sendMessage("§7[§a§fTechnologyWorld§7] §cВы успешно зарегистрировались на проекте TechnologyWorld§f!");
- } else {
- unset($this->reg[$name]);
- $player->sendMessage("§7[§a§fTechnologyWorld§7] §cТы ввел неверный пароль. Не смей никого взламывать.");
- }
- }
- }
- }
- $sql->finalize();
- } else $player->sendMessage($login);
- }
- $event->setCancelled(true);
- } else {
- if($ip != $this->users[$name]["ip"]) {
- $event->setCancelled(true);
- $player->sendMessage($login);
- }
- }
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement