Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #main
- <?php
- namespace Fenek912\scSecurity;
- use pocketmine\command\ConsoleCommandSender;
- use pocketmine\event\block\BlockBreakEvent;
- use pocketmine\event\block\BlockPlaceEvent;
- use pocketmine\event\Listener;
- use pocketmine\plugin\PluginBase;
- use pocketmine\command\Command;
- use pocketmine\command\CommandSender;
- use pocketmine\event\player\PlayerMoveEvent;
- use pocketmine\event\player\PlayerJoinEvent;
- use pocketmine\event\player\PlayerPreLoginEvent;
- use pocketmine\event\player\PlayerInteractEvent;
- use pocketmine\event\player\PlayerItemConsumeEvent;
- use pocketmine\event\player\PlayerCommandPreprocessEvent;
- use pocketmine\event\entity\EntityDamageEvent;
- use pocketmine\event\inventory\InventoryPickupItemEvent;
- class Main extends PluginBase implements Listener {
- public function onEnable() {
- $this->getLogger()->notice("Loading...");
- $this->saveDefaultConfig();
- $this->getServer()->getPluginManager()->registerEvents($this, $this);
- $credentials = $this->getConfig()->getAll()["mysql"];
- $this->db = @new \mysqli($credentials["host"], $credentials["username"], $credentials["passwd"], $credentials["dbname"]);
- if($this->db->connect_errno == 0) {
- $this->getLogger()->info("Successfully connected to database! (" . $credentials["host"] . ")");
- $this->getLogger()->warning("Loading complete!");
- } else {
- $this->getLogger()->critical("Error while connecting to MySQL database! (" . $this->db->connect_errno . ")");
- $this->getLogger()->critical("Stopping server...");
- $this->getServer()->dispatchCommand(new ConsoleCommandSender(), "stop");
- }
- }
- public function getDatabase() {
- return $this->db;
- }
- public function getMessage($name) {
- return $this->getConfig()->getAll()["messages"][$name];
- }
- public function getPlayerCode($nameLower) {
- return mysqli_fetch_assoc($this->getDatabase()->query("SELECT code FROM scSecurity WHERE player='$nameLower';"))["code"];
- }
- public function getPlayerAddress($nameLower) {
- return mysqli_fetch_assoc($this->getDatabase()->query("SELECT address FROM scSecurity WHERE player='$nameLower';"))["address"];
- }
- public function isInMCPE($nameUpper) {
- return $this->getDatabase()->query("SELECT id FROM MCPE WHERE nick='$nameUpper';")->num_rows;
- }
- public function isInSecurity($nameLower) {
- return $this->getDatabase()->query("SELECT id FROM scSecurity WHERE player='$nameLower';")->num_rows;
- }
- public function getPlayerPass($nameUpper) {
- return mysqli_fetch_assoc($this->getDatabase()->query("SELECT haslo FROM MCPE WHERE nick='$nameUpper';"))["haslo"];
- }
- public function onCommand(CommandSender $sender, Command $command, $label, array $args) {
- $playerNameUpper = $sender->getName();
- $playerNameLower = strtolower($playerNameUpper);
- $playerIP__a = $this->getServer()->getPlayer($playerNameUpper)->getAddress();
- switch($command->getName()) {
- case "z":
- if($this->isInMCPE($playerNameUpper) == 1) {
- $sender->sendMessage($this->getMessage("alreadyRegistered"));
- return true;
- }
- if(!isset($args[2])) {
- $sender->sendMessage($this->getMessage("registerUsage"));
- return true;
- }
- if($args[0] !== $args[1]) {
- $sender->sendMessage($this->getMessage("passwordNotMatch"));
- return true;
- }
- if(strlen($args[2]) !== 8) {
- $sender->sendMessage($this->getMessage("badCode"));
- return true;
- }
- if(strlen($args[1]) > 20) {
- $sender->sendMessage($this->getMessage("tooLong"));
- return true;
- }
- if(strlen($args[1]) < 5) {
- $sender->sendMessage($this->getMessage("tooShort"));
- return true;
- }
- if(strtolower($args[2]) !== strtolower($this->getPlayerCode($playerNameLower))) {
- $sender->sendMessage($this->getMessage("badCode"));
- return true;
- }
- $this->getDatabase()->query("INSERT INTO MCPE VALUES (NULL, '$playerNameUpper', '" . $args[1] . "', '300', '0', '0', '0', '0', '0', '0', '0', '1', '5');");
- $this->getDatabase()->query("UPDATE scSecurity SET `address` = '$playerIP__a' WHERE `player` = '$playerNameLower';");
- $sender->sendMessage($this->getMessage("registerSuccess"));
- return true;
- case "l":
- if($this->getPlayerAddress($playerNameLower) == $playerIP__a) {
- $sender->sendMessage($this->getMessage("alreadyLogged"));
- return true;
- }
- if($this->isInMCPE($playerNameUpper) == 0) {
- $sender->sendMessage($this->getMessage("notRegistered"));
- return true;
- }
- if(!isset($args[0])) {
- $sender->sendMessage($this->getMessage("loginUsage"));
- return true;
- }
- if($args[0] !== $this->getPlayerPass($playerNameUpper)) {
- $sender->sendMessage($this->getMessage("badPass"));
- return true;
- }
- $this->getDatabase()->query("UPDATE scSecurity SET `address` = '$playerIP__a' WHERE `player` = '$playerNameLower';");
- $sender->sendMessage($this->getMessage("loginSuccess"));
- return true;
- case "przypomnij":
- if(!isset($args[0])) {
- $sender->sendMessage($this->getMessage("helpUsage"));
- return true;
- }
- if(strlen($args[0]) !== 8) {
- $sender->sendMessage($this->getMessage("badCode"));
- return true;
- }
- if($this->isInMCPE($playerNameUpper) == 0) {
- $sender->sendMessage($this->getMessage("notRegistered"));
- return true;
- }
- if(strtolower($args[0]) !== strtolower($this->getPlayerCode($playerNameLower))) {
- $sender->sendMessage($this->getMessage("badCode"));
- return true;
- }
- $sender->sendMessage(str_replace("%h%", $this->getPlayerPass($playerNameUpper), $this->getMessage("passHelpSuccess")));
- return true;
- }
- }
- public function newRow(PlayerJoinEvent $e) {
- $playerName = $e->getPlayer()->getName();
- $length = 8;
- $keys = array_merge(range(0,9), range('a', 'z'));
- for($i=0; $i < $length; $i++) {
- @$key .= $keys[mt_rand(0, count($keys) - 1)];
- }
- $e->getPlayer()->sendMessage($this->getMessage("welcomeLine1"));
- $e->getPlayer()->sendMessage(str_replace("%n%", $playerName, $this->getMessage("welcomeLine2")));
- $e->getPlayer()->sendMessage(str_replace("%l%", $this->getDatabase()->query("SELECT id FROM MCPE")->num_rows, $this->getMessage("welcomeLine3")));
- $e->getPlayer()->sendMessage($this->getMessage("welcomeLine4"));
- $e->getPlayer()->sendMessage($this->getMessage("welcomeLine5"));
- if($this->isInMCPE($e->getPlayer()->getName()) == 0) {
- if($this->isInSecurity(strtolower($e->getPlayer()->getName())) == 0) {
- $this->getDatabase()->query("INSERT INTO scSecurity VALUES (NULL, '$playerName', 'firstQuery', '" . strtolower($key) . "');");
- }
- $e->getPlayer()->sendMessage(str_replace("%c%", strtoupper($this->getPlayerCode(strtolower($playerName))), $this->getMessage("codeInfo1")));
- $e->getPlayer()->sendMessage($this->getMessage("codeInfo2"));
- $e->getPlayer()->sendMessage($this->getMessage("needToRegister"));
- } else {
- if($this->getPlayerAddress(strtolower($playerName)) == $e->getPlayer()->getAddress()) {
- $e->getPlayer()->sendMessage($this->getMessage("autoLogin"));
- } else {
- $e->getPlayer()->sendMessage($this->getMessage("needToLogin"));
- }
- }
- }
- /* ---------- REPAIR PLAYER KICKS IF ANOTHER ONE IS ONLINE ---------- */
- public function fixKicks(PlayerPreLoginEvent $e) {
- if($this->getServer()->getPlayer($e->getPlayer()->getName())) {
- $e->setCancelled(true);
- $this->getServer()->getPlayer($e->getPlayer()->getName())->sendMessage($this->getMessage("anotherTry"));
- }
- }
- /* ---------- BLOCK EVENTS IF PLAYER IS NOT AUTHENTICATED ---------- */
- public function blockDefaults(PlayerCommandPreprocessEvent $e) {
- if($this->getPlayerAddress(strtolower($e->getPlayer()->getName())) !== $e->getPlayer()->getAddress()) {
- $text = explode(" ", $e->getMessage());
- if($text[0] !== "/zarejestruj" && $text[0] !== "/zaloguj" && $text[0] !== "/przypomnij") {
- $e->setCancelled(true);
- if($this->isInMCPE($e->getPlayer()->getName())) {
- $e->getPlayer()->sendMessage(str_replace("%k%", $this->getPlayerCode(strtolower($e->getPlayer()->getName())), $this->getMessage("notAuthedNotRegistered")));
- } else {
- $e->getPlayer()->sendMessage($this->getMessage("notAuthedNotLogged"));
- }
- }
- }
- }
- public function blockMove(PlayerMoveEvent $e) {
- if($this->getPlayerAddress(strtolower($e->getPlayer()->getName())) !== $e->getPlayer()->getAddress()) {
- $e->setCancelled(true);
- if($this->isInMCPE($e->getPlayer()->getName())) {
- $e->getPlayer()->sendMessage(str_replace("%k%", $this->getPlayerCode(strtolower($e->getPlayer()->getName())), $this->getMessage("notAuthedNotRegistered")));
- } else {
- $e->getPlayer()->sendMessage($this->getMessage("notAuthedNotLogged"));
- }
- }
- }
- public function blockPickup(InventoryPickupItemEvent $e) {
- if($this->getPlayerAddress(strtolower($e->getPlayer()->getName())) !== $e->getPlayer()->getAddress()) {
- $e->setCancelled(true);
- if($this->isInMCPE($e->getPlayer()->getName())) {
- $e->getPlayer()->sendMessage(str_replace("%k%", $this->getPlayerCode(strtolower($e->getPlayer()->getName())), $this->getMessage("notAuthedNotRegistered")));
- } else {
- $e->getPlayer()->sendMessage($this->getMessage("notAuthedNotLogged"));
- }
- }
- }
- public function blockInteract(PlayerInteractEvent $e) {
- if($this->getPlayerAddress(strtolower($e->getPlayer()->getName())) !== $e->getPlayer()->getAddress()) {
- $e->setCancelled(true);
- if($this->isInMCPE($e->getPlayer()->getName())) {
- $e->getPlayer()->sendMessage(str_replace("%k%", $this->getPlayerCode(strtolower($e->getPlayer()->getName())), $this->getMessage("notAuthedNotRegistered")));
- } else {
- $e->getPlayer()->sendMessage($this->getMessage("notAuthedNotLogged"));
- }
- }
- }
- public function blockConsume(PlayerItemConsumeEvent $e) {
- if($this->getPlayerAddress(strtolower($e->getPlayer()->getName())) !== $e->getPlayer()->getAddress()) {
- $e->setCancelled(true);
- if($this->isInMCPE($e->getPlayer()->getName())) {
- $e->getPlayer()->sendMessage(str_replace("%k%", $this->getPlayerCode(strtolower($e->getPlayer()->getName())), $this->getMessage("notAuthedNotRegistered")));
- } else {
- $e->getPlayer()->sendMessage($this->getMessage("notAuthedNotLogged"));
- }
- }
- }
- public function block1(BlockPlaceEvent $e) {
- if($this->getPlayerAddress(strtolower($e->getPlayer()->getName())) !== $e->getPlayer()->getAddress()) {
- $e->setCancelled(true);
- if($this->isInMCPE($e->getPlayer()->getName())) {
- $e->getPlayer()->sendMessage(str_replace("%k%", $this->getPlayerCode(strtolower($e->getPlayer()->getName())), $this->getMessage("notAuthedNotRegistered")));
- } else {
- $e->getPlayer()->sendMessage($this->getMessage("notAuthedNotLogged"));
- }
- }
- }
- public function block2(BlockBreakEvent $e) {
- if($this->getPlayerAddress(strtolower($e->getPlayer()->getName())) !== $e->getPlayer()->getAddress()) {
- $e->setCancelled(true);
- if($this->isInMCPE($e->getPlayer()->getName())) {
- $e->getPlayer()->sendMessage(str_replace("%k%", $this->getPlayerCode(strtolower($e->getPlayer()->getName())), $this->getMessage("notAuthedNotRegistered")));
- } else {
- $e->getPlayer()->sendMessage($this->getMessage("notAuthedNotLogged"));
- }
- }
- }
- }
- #confing
- ---
- mysql:
- host: "127.0.0.1"
- username: "root"
- passwd: "hrjZBN17WirGgEuy"
- dbname: "testowa1337"
- messages:
- alreadyRegistered: "§c* Jestes juz zarejestrowany!"
- alreadyLogged: "§c* Jestes juz zalogowany!"
- registerUsage: "§b* Poprawne uzycie: /zarejestruj <haslo> <powtorz_haslo> <kod>"
- loginUsage: "§b* Poprawne uzycie: /zaloguj <haslo>"
- passwordNotMatch: "§e* Hasla nie zgadzaja sie!"
- passHelpSuccess: "§d* Twoje haslo to: §l%h%"
- badCode: "§c* Podany kod jest niepoprawny!"
- autoLogin: "§6* Zostales zalogowany automatycznie!"
- badPass: "§c* Niepoprawne haslo!"
- anotherTry: "§e* Ktos probuje zalogowac sie na twoje konto!"
- notAuthedNotLogged: "§7* Zaloguj sie lub zarejestruj aby wykonac ta czynnosc!"
- notAuthedNotRegistered: "§7* Zaloguj sie lub zarejestruj aby wykonac ta czynnosc! %c%"
- helpUsage: "§b* Poprawne uzycie: /przypomnij <kod>"
- notRegistered: "§6* Nie jestes zarejestrowany!"
- tooLong: "§6* Podane haslo jest zbyt dlugie!"
- tooShort: "§6* Podane haslo jest zbyt krotkie!"
- needToRegister: "§b* Zarejestruj sie komenda: /zarejestruj <haslo> <powtorz_haslo> <kod>"
- needToLogin: "§b* Zaloguj sie komenda: /zaloguj <haslo>"
- loginSuccess: "§a* Zostales zalogowany!"
- registerSuccess: "§a* Zostales zarejestrowany!"
- welcomeLine1: "§a* cos1"
- welcomeLine2: "§b* cos2 %n%"
- welcomeLine3: "§c* cos3 %l%"
- welcomeLine4: "§d* cos4"
- welcomeLine5: "§e* cos5"
- codeInfo1: "§a* Twoj kod to: §l%c%"
- codeInfo2: "§d* Zapamietaj go! Przyda ci sie do zresetowania hasla"
- ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement