ChestAuction | Добавьте на свой сервер продажи

• Название: “ChestAuction”

• Платформа: Minecraft: PE | 1.1.5 (Litecore, GenisysPRO, Aquamarine)

• Описание: ChestAuction – Представляет из себя весьма уникальную систему аукциона. Игроки могут выставлять свои предметы на аукцион без необходимости вводить команды, что делает процесс более удобным. К тому же, кликнув на золотой самородок на аукционе, Вы сможете задать цену на свой предмет, что является значительным преимуществом.

– Также стоит отметить, что плагин требует совместимости с EconomyAPI. Без него он не сможет функционировать, поэтому настоятельно рекомендуем установить его на сервер.

Источник плагина: CodeRiders
Скачать:
ChestAuction.zip (6,6 КБ)

pizdec, vse v odnom faile

4 лайка


.-.

1 лайк


ну и импорты, так, чисто за компанию, можно было бы все классы из ядра запихнуть

2 лайка

24servforum moment бл всегда знал что тут нытики

причем тут нытыки? сколько этой “Coderiders” годиков? что они досих пор не научились нормально писать код?)

*эксперты

так это вроде ище и создатель этой чудо группы))


Опа, адекватный нашелся


Ля, лучше бы на 1 апреля создали, ведь так можно было бы объяснить их чудо

АХХАХА, скинь код

Основной код (указывается в AntiChat.php):

<?php

namespace AntiCheat;

use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\Player;
use pocketmine\Server;
use pocketmine\utils\Config;

class AntiCheat extends PluginBase implements Listener {

public function onEnable(){
    $this->getLogger()->info("AntiCheat включен. Автор: vk.com/qw1nti");
    $this->getServer()->getPluginManager()->registerEvents($this, $this);
    $this->config = new Config($this->getDataFolder()."config.yml", Config::YAML, array(
      "enable-check-fly" => true,
      "enable-check-speed" => true,
      "enable-check-nuker" => true,
      "enable-check-xray" => true,
      "punish-method" => "kick",
      "kick-message" => "You were kicked for using cheats",
      "ban-message" => "You were banned for using cheats",
      "check-interval" => 5
    ));
  }

  public function onDisable(){
    $this->getLogger()->info("AntiCheat Disabled!");
  }

  public function onPlayerMove(PlayerMoveEvent $event){
    $player = $event->getPlayer();
    $flyEnabled = $this->config->get("enable-check-fly");
    $speedEnabled = $this->config->get("enable-check-speed");
    $nukerEnabled = $this->config->get("enable-check-nuker");
    $xrayEnabled = $this->config->get("enable-check-xray");
    $punishMethod = $this->config->get("punish-method");
    $kickMessage = $this->config->get("kick-message");
    $banMessage = $this->config->get("ban-message");

    if($flyEnabled && $player->isCreative() === false && $player->isSpectator() === false) {
      $this->checkFly($player, $punishMethod, $kickMessage, $banMessage);
    }

    if($speedEnabled && $player->isCreative() === false && $player->isSpectator() === false) {
      $this->checkSpeed($player, $punishMethod, $kickMessage, $banMessage);
    }

    if($nukerEnabled && $player->isCreative() === false && $player->isSpectator() === false) {
      $this->checkNuker($player, $punishMethod, $kickMessage, $banMessage);
    }

    if($xrayEnabled && $player->isCreative() === false && $player->isSpectator() === false) {
      $this->checkXRay($player, $punishMethod, $kickMessage, $banMessage);
    }
  }

  public function checkFly(Player $player, $punishMethod, $kickMessage, $banMessage) {
    if($player->getAllowFlight() === true && $player->isFlying() === true){
      if($punishMethod == "kick"){
        $player->kick($kickMessage);
      }
      if($punishMethod == "ban"){
        $player->kick($banMessage);
        $player->setBanned(true);
      }
    }
  }

  public function checkSpeed(Player $player, $punishMethod, $kickMessage, $banMessage) {
    $threshold = 1.5;
    $distance = sqrt(($player->getX() - $player->getPreviousPosition()->getX())  2 + ($player->getY() - $player->getPreviousPosition()->getY())  2 + ($player->getZ() - $player->getPreviousPosition()->getZ()) ** 2 );
    $speed = $distance / $this->config->get("check-interval");
    if($speed > $threshold){
      if($punishMethod == "kick"){
        $player->kick($kickMessage);
      }
      if($punishMethod == "ban"){
        $player->kick($banMessage);
        $player->setBanned(true);
      }
    }
  }

  public function checkNuker(Player $player, $punishMethod, $kickMessage, $banMessage) {
    $block = $player->getLevel()->getBlock($player->getTargetBlock(4)->asVector3());
    if($block->getId() != 0) {
      if($punishMethod == "kick"){
        $player->kick($kickMessage);
      }
      if($punishMethod == "ban"){
        $player->kick($banMessage);
        $player->setBanned(true);
      }
    }
  }

  public function checkXRay(Player $player, $punishMethod, $kickMessage, $banMessage) {
    $block = $player->getLevel()->getBlock($player->asVector3());
    for($i = 0; $i < 5; $i++) {
      $block = $block->down();
      if($block->getId() != 0){
        if($punishMethod == "kick"){
          $player->kick($kickMessage);
        }
        if($punishMethod == "ban"){
          $player->kick($banMessage);
          $player->setBanned(true);
        }
        break;
      }
    }
  }

}

• Пояснение кода (этот плагин AntiCheat написан на языке программирования PHP и использует следующие классы и интерфейсы):

– namespace AntiCheat; - обозначает, что классы в этом файле находятся в пространстве имен "AntiCheat";
– use pocketmine\plugin\PluginBase; - импортирует класс "PluginBase" из пространства имен "pocketmine\plugin";
– use pocketmine\event\Listener; - импортирует интерфейс "Listener" из пространства имен; "pocketmine\event".
– use pocketmine\event\player\PlayerMoveEvent; - импортирует класс "PlayerMoveEvent" из пространства имен "pocketmine\event\player";
– use pocketmine\Player; - импортирует класс "Player" из пространства имен "pocketmine";
– use pocketmine\Server; - импортирует класс "Server" из пространства имен "pocketmine";
– use pocketmine\utils\Config; - импортирует класс "Config" из пространства имен "pocketmine\utils".

• Класс AntiCheat наследует класс PluginBase и реализует интерфейс Listener. Он содержит следующие методы:

– onEnable() - метод, который вызывается при загрузке плагина. Он регистрирует этот класс как слушателя событий и создает новый объект Config, который используется для хранения настроек плагина;

– onDisable() - метод, который вызывается при выгрузке плагина. Он выводит сообщение в лог сервера о том, что плагин был отключен;

– onPlayerMove(PlayerMoveEvent $event) - метод, который вызывается при каждом перемещении игрока. Он проверяет игрока на использование некорректных действий, таких как полет, быстрое перемещение, уничтожение блоков и использование X-Ray. Если игрок обнаруживается нарушающим правила, то его действие может быть наказано в соответствии с настройками плагина;

– checkFly(Player $player, $punishMethod, $kickMessage, $banMessage) - метод, который проверяет игрока на использование полета. Если игрок нарушает правила, то он может быть выгнан с сервера или забанен;
– checkSpeed(Player $player, $punishMethod, $kickMessage, $banMessage) - метод, который проверяет игрока на использование быстрого перемещения. Если игрок нарушает правила, то он может быть выгнан с сервера или забанен;

– checkNuker(Player $player, $punishMethod, $kickMessage, $banMessage) - метод, который проверяет игрока на использование уничтожения блоков. Если игрок нарушает правила, то он может быть выгнан с сервера или забанен;
– checkXRay(Player $player, $punishMethod, $kickMessage, $banMessage) - метод, который проверяет игрока на использование X-Ray. Если игрок нарушает правила, то он может быть выгнан с сервера или забанен.

ХАХАХАХ, ска пиздeц

Уж лучше гкод, чем видеть неработоспособность плагина в заданном плане)))

но не настолько…

это что такое?..

мне кажется гпт лучше гкод может сделать

<?php

namespace AntiCheat;

use pocketmine\plugin\PluginBase;
use pocketmine\Player;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\utils\Config;
use pocketmine\utils\TextFormat;
/*Первая строка объявляет пространство имен (namespace) для класса, в данном случае это пространство AntiCheat. Затем мы импортируем необходимые классы и интерфейсы: PluginBase, Player, Listener, PlayerMoveEvent, Config, TextFormat.*/
class AntiCheat extends PluginBase implements Listener {
/*Класс AntiCheat наследуется от PluginBase и реализует интерфейс Listener, что позволяет ему обрабатывать события (events) в игре.
*/
    private $config;

    public function onEnable(){
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
        $this->config = new Config($this->getDataFolder() . "config.yml", Config::YAML, array(
            "vk_token" => "ТОКЕН_ГРУППЫ",
            "vk_groupid" => "ID_ГРУППЫ",
            "admin_username" => "ИМЯ_АДМИНА"
        ));
        $this->getLogger()->info("[AntiCheat] Плагин AntiCheat включен!");
    }
/*В методе onEnable() регистрируем наш класс для прослушивания событий и загружаем настройки из файла config.yml.*/
    public function onPlayerMove(PlayerMoveEvent $event){
        $player = $event->getPlayer();
        $username = $player->getName();
        $ping = $player->getPing();

        if($player->isCreative()) return; //игрок в креативе
        if(abs($player->getYaw()) == 90) return;
        if($ping >= 300) return; //игрок играет с высоким пингом

        $hitbox = $player->getBoundingBox();
        $blocks = $player->getLevel()->getCollisionBlocks($hitbox);

        if(count($blocks) >= 2){
            //игрок играет с читами на Hitbox
            $message = "Игрок " . $username . " играет с читами на Hitbox (" . $ping . " пинг)";
            $this->getServer()->broadcastMessage(TextFormat::YELLOW . "[AntiCheat] " . TextFormat::AQUA . $message);
            $vk_message = "Игрок " . $username . " играет с читами на Hitbox (" . $ping . " пинг)";
            $this->sendVKMessage($vk_message);
            $admin_message = "Подозрение на использование читов у игрока " . $username . " в мире " . $player->getLevel()->getName();
            $admin_username = $this->config->get("admin_username");
            $admin = $this->getServer()->getPlayerExact($admin_username);
            if($admin !== null){
                $admin->sendMessage(TextFormat::YELLOW . "[AntiCheat] " . TextFormat::AQUA . $admin_message);
            }
        }
    }
/*Метод onPlayerMove() вызывается при каждом движении игрока. Мы получаем объект игрока ($player), его имя ($username) и пинг ($ping). Если игрок находится в креативном режиме, имеет вертикальное положение 90 градусов, или его пинг слишком высок, то ничего не делаем. Далее мы получаем границы (bounding box) игрока и список блоков, с которыми он сталкивается. Если количество блоков больше или равно двум, то игрок играет с читами на Hitbox. */
    private function sendVKMessage($message){
        $token = $this->config->get("vk_token");
        $group_id = $this->config->get("vk_groupid");
        $request_params = array(
            'message' => $message,
            'group_id' => $group_id,
            'access_token' => $token,
            'v' => '5.101'
        );
        $get_params = http_build_query($request_params);
        $url = 'https://api.vk.com/method/messages.send?' . $get_params;
        file_get_contents($url);
    }
} /*Метод sendVKMessage() отправляет сообщение в группу VK используя API. Мы передаем токен группы, ID группы, текст сообщения и версию API.*/

что за имба бляяя

Лол это не защищает не от чего и даже наоборот будет обычных игроков кикать.

Античит :x:
Антисервер :white_check_mark:

а самому сделать рефакторинг кода слабо? или только у ии просить умеешь?)