Комманды:
check - вызвать игрока на проверку
permission: use.check
Check.zip (3,3 КБ)
default: op
uncheck - снять игрока с проверки
permission: use.uncheck
default: op
Удачного использования
<?php
namespace check;
use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\command\{Command,CommandSender};
use pocketmine\Player;
use pocketmine\permission\Permissible;
use pocketmine\utils\Config;
use pocketmine\event\entity\EntityDamageEvent;
use pocketmine\event\block\{BlockPlaceEvent, BlockBreakEvent};
use pocketmine\item\{Item,EnderPearl,ChorusFruit};
use pocketmine\event\player\{PlayerQuitEvent,PlayerItemConsumeEvent,PlayerDropItemEvent,PlayerInteractEvent,PlayerCommandPreprocessEvent, PlayerChatEvent, PlayerMoveEvent};
class Main extends PluginBase implements Listener {
public $config;
public function onEnable() {
$this->getServer()->getLogger()->info("§dAuthor: vk.com/itsminfist");
$this->getServer()->getPluginManager()->registerEvents($this, $this);
if(!is_dir($this->getDataFolder())) {
mkdir($this->getDataFolder(), 0777, true);
$this->saveDefaultConfig();
}
if(!is_file($this->getDataFolder()."config.yml")) {
$this->saveDefaultConfig();
}
$this->config = new Config($this->getDataFolder()."config.yml", Config::YAML);
}
public function onChat(PlayerCommandPreprocessEvent $event) {
$msg = $event->getMessage();
$msgs = explode(' ', $event->getMessage())[0];
$player = $event->getPlayer();
if (isset($this->cr[$player->getLowerCaseName()]) and $msg[0] == '/') {
$event->setCancelled();
$player->sendMessage($this->config->get("block-commands"));
return;
}
}
public function onBreak(BlockBreakEvent $event) {
$player = $event->getPlayer();
if (isset($this->cr[$player->getLowerCaseName()])) {
$player->sendPopup($this->config->get("break-or-place"));
$event->setCancelled();
}
}
public function onDamage(EntityDamageEvent $event) {
$player = $event->getEntity();
if($player instanceof Player){
if (isset($this->cr[$player->getLowerCaseName()])) {
$player->sendMessage($this->config->get("on-damage"));
$event->setCancelled();
}
}
$damager = $event->getDamager();
if($event instanceof EntityDamageEvent && $damager instanceof Player){
if(isset($this->cr[$damager->getLowerCaseName()])){
$damager->sendMessage($this->config->get("on-damager"));
$event->setCancelled();
}
}
}
public function onPlace(BlockPlaceEvent $event) {
$player = $event->getPlayer();
if (isset($this->cr[$player->getLowerCaseName()])) {
$player->sendPopup($this->config->get("break-or-place"));
$event->setCancelled();
}
}
public function onQuit(PlayerQuitEvent $event) {
$player = $event->getPlayer();
if (isset($this->cr[$player->getLowerCaseName()])) {
unset($this->cr[$player->getLowerCaseName()]);
if($this->config->get("on-kill") == true){
$player->kill();
}
}
}
public function onRun(PlayerInteractEvent $event) {
$player = $event->getPlayer();
if (isset($this->cr[$player->getLowerCaseName()])) {
$item = $event->getItem()->getId();
if ($item == 368 || $item == 432) { # 54 61 62 130 146
$event->setCancelled();
$player->sendMessage($this->config->get("run-on-check"));
}
}
}
public function Interact(PlayerInteractEvent $event){
$player = $event->getPlayer();
$item = $event->getItem()->getId();
if(isset($this->cr[$player->getLowerCaseName()])){
if($item == 54 || $item == 61 || $item == 130 || $item == 146){
$player->sendMessage($this->config->get("on-interact"));
$event->setCancelled();
}
}
}
public function onDrop(PlayerDropItemEvent $event) : void {
$player = $event->getPlayer();
if (isset($this->cr[$player->getLowerCaseName()])) {
$player->sendPopup($this->config->get("drop-item"));
$event->setCancelled();
}
}
public function onMove(PlayerMoveEvent $event) : void {
$player = $event->getPlayer();
if (isset($this->cr[$player->getLowerCaseName()])) {
$event->setCancelled();
$player->sendPopup($this->config->get("move-on-check"));
}
}
public function onCommand(CommandSender $s, Command $cmd, $label, array $args) {
switch ($cmd) {
case "check":
if (!$s->isOp() || $s->hasPermission("use.check")) {
$s->sendMessage($this->config->get("dHave-perm-check"));
return true;
}
if (!isset($args[0])) {
$s->sendMessage("§fИспользование:§e /check ник");
return true;
}
$player = $this->getServer()->getPlayer($args[0]);
$pl = $player->getName();
$moder = $s->getPlayer()->getName();
if (!$player) {
$s->sendMessage($this->config->get("dont-online"));
return true;
}
if (isset($this->cr[$player->getLowerCaseName()])) {
$s->sendMessage($this->config->get("on-check"));
return true;
}
$this->cr[$player->getLowerCaseName()] = true;
$s->sendMessage($this->config->get("on-check-moder"));
$player->sendMessage($this->config->get("on-check-player"));
break;
case "uncheck":
if (!$s->isOp() || !$s->hasPermission("use.uncheck")) {
$s->sendMessage($this->config->get("dHave-perm-uncheck"));
return true;
}
if (!isset($args[0])) {
$s->sendMessage("§eИспользование: §f/uncheck [ник]");
return true;
}
$player = $this->getServer()->getPlayer($args[0]);
$pl = $player->getName();
$moder = $s->getPlayer()->getName();
if (!$player) {
$s->sendMessage($this->config->get("dont-online"));
return true;
}
if (!isset($this->cr[$player->getLowerCaseName()])) {
$s->sendMessage($this->config->get("dont-check"));
return true;
}
unset($this->cr[$player->getLowerCaseName()]);
$s->sendMessage($this->config->get("moder-uncheck"));
$player->sendMessage($this->config->get("player-uncheck"));
break;
}
}
}
1 лайк
это обычная заморозка с другими командами в чем прикол?
это че такое?..
накой они?.. они ведь не используются
нейминг переменных отвратительные, все в одном классе, ужас
Дети пытаюсь написать что то свое без использования ооп, им скоро надоест, не брыкайся на них)
Крутого в нем ничего нет, а то что там якобы есть ограничение игрока то это мало что дает, просто позаботиться над игроком и все. Данный инструмент якобы для проверки, можно написать куда проще и лучше
спасибо хоть за нормальную табуляцию
1 лайк
Strecos
23.Февраль.2025 16:29:10
10
Достаточно одной фукнции в его плагин и можно обойтись без всяких массивов и событий, задействов регистрацию команды в Closure)
Всем спасибо за комментарии, учту всё к сведению т.к. в сфере php сравнительно недавно
Daddy
24.Февраль.2025 08:16:28
13
регистрацию команды в closure? что ■■■■■?
Daddy
24.Февраль.2025 08:17:17
14
■■■ лукин не пиши ничего на этот форум, мне кажется ты в стадии стагнации либо деградации, потому что за такой большой промежуток времени ТЫ НЕ УМНЕЕШЬ И ПРОДОЛЖАЕШЬ ПИСАТЬ ДИЧЬ
Strecos
24.Февраль.2025 16:26:49
15
Девочка вернулась с обидами
6 лайков
Daddy
24.Февраль.2025 17:23:04
18
@Bestaford слышь я походк понял кто такой ьестафорд.ти
это рома лукин ))))
Daddy
24.Февраль.2025 17:23:23
19
он лайкнул сбщ со своих твинков, бестфорд.ти там тоже присутствует
@bestaford.ti
Разве акк ещё живой?
UPD: да, живой на моё удивление