Привет всем, ищю кодера, надо написать пару простеньких плагинов, и исправить ошибки в одном, ядро EnvyCore 1.6,версия майнкрафт 1.1.5,пишите свой тг, о цене договоримся
Сразу видно всё.
Кал-ядро, кал-версия. Так и живём.
Спасибо, чуть позже напишу
Ага
А в чем прикол?
какие плагины надо пофиксить?
Используй CHATGPT, и проси что тебе надо, к примеру “Напиши код для регистрации на сервере POCKETMINE, API к примеру 3.0.0”.
После того как он тебе дал код, делай поправки ему, говори чтоб сделал изменения в коде, добавлял что нибудь и тд , это бесплатно и легко
уйди с форума пж
пример
Спойлер
напиши код для регистрации на сервере POCKETMINE API 3.0.0 , когда игрок зашёл на сервер ( если он не зарегестрирован ) просило зарегестрироваться, просто написать пароль в чат без команд , нельзя в пароле использовать пробелы и русские буквы, если он допустил ошибки, в чат писало В пароле нельзя использовать пробелы или русские буквы. Если он попытаеться ввести команды какие нибудь во время авторизации/регистрации, в чат писало Для начало нужно ввести пароль, так же во время авторизации/регистрации нельзя ходить, кстати, авторизации тоже должна быть без команды, просто нужно ввести пароль в чат который он указывал во время регистрации, если пароль был введён не правильно более 3 раз, кикало с сервера и писало Попытка взлома, попробуйте через 5 минут, и если он попытаеться зайти и не прошло 5 минут на сервер он зайти не сможет
<?php
declare(strict_types=1);
namespace YourPluginNamespace;
use pocketmine\event\player\PlayerChatEvent;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\event\Listener;
use pocketmine\plugin\PluginBase;
use pocketmine\Player;
use pocketmine\utils\Config;
use pocketmine\utils\TextFormat;
class Main extends PluginBase implements Listener {
private $passwords = [];
public function onEnable() {
$this->getServer()->getPluginManager()->registerEvents($this, $this);
$this->saveResource("passwords.yml");
$this->passwords = (new Config($this->getDataFolder() . "passwords.yml", Config::YAML))->getAll();
}
public function onPlayerChat(PlayerChatEvent $event) {
$player = $event->getPlayer();
$message = $event->getMessage();
if (!$this->isRegistered($player)) {
$passwordData = $this->passwords[$player->getName()] ?? null;
if ($passwordData !== null) {
$attempts = $passwordData['attempts'] ?? 0;
if (trim($message) === $passwordData['password']) {
$this->finishRegistration($player);
} else {
$attempts++;
$this->passwords[$player->getName()]['attempts'] = $attempts;
if ($attempts >= 3) {
$this->getServer()->getNameBans()->addBan($player->getName(), "Попытка взлома", null, "console");
$this->getServer()->broadcastMessage(TextFormat::RED . $player->getName() . " был кикнут за попытку взлома.");
$this->getScheduler()->scheduleDelayedTask(new class($player) extends \pocketmine\scheduler\Task {
private $player;
public function __construct(Player $player) {
$this->player = $player;
}
public function onRun(int $currentTick) {
$this->player->unban();
}
}, 5 * 60 * 20); // Разбан через 5 минут (5 * 60 * 20 тиков)
} else {
$player->sendMessage(TextFormat::RED . "Пароль введен неверно. Попробуйте еще раз.");
}
$this->savePasswords();
}
$event->setCancelled(true);
} else {
$player->sendMessage(TextFormat::YELLOW . "Для начала вам нужно зарегистрироваться. Введите пароль в чат.");
$this->generatePassword($player);
$event->setCancelled(true);
}
}
}
public function onPlayerMove(PlayerMoveEvent $event) {
$player = $event->getPlayer();
if (!$this->isRegistered($player)) {
$event->setCancelled(true);
$player->sendMessage(TextFormat::RED . "Для начала вам нужно зарегистрироваться. Введите пароль в чат.");
}
}
private function savePasswords() {
$config = new Config($this->getDataFolder() . "passwords.yml", Config::YAML);
$config->setAll($this->passwords);
$config->save();
}
private function generatePassword(Player $player) {
$password = $this->generateRandomPassword();
$this->passwords[$player->getName()] = [
'password' => $password,
'attempts' => 0
];
$this->savePasswords();
}
private function finishRegistration(Player $player) {
unset($this->passwords[$player->getName()]);
$this->savePasswords();
$player->sendMessage(TextFormat::GREEN . "Вы успешно зарегистрировались!");
}
private function isRegistered(Player $player) {
return !empty($this->passwords[$player->getName()]) && !isset($this->passwords[$player->getName()]['password']);
}
private function generateRandomPassword() {
$characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$password = '';
for ($i = 0; $i < 8; $i++) {
$password .= $characters[random_int(0, strlen($characters) - 1)];
}
return $password;
}
}
name: YourPluginName
version: 1.0.0
api: [3.0.0]
main: YourPluginNamespace\Main
Это просто пример, я не даю гарантии что плагин работает, используя этот пример можно сделать полноценный плагин
крутой плагин в 1 классе
так еще и плохо реализованный
после выключения сервера забаненые игроки останутся в бане
где же шифрование паролей опять
Как там хост?))