• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~

教程 在PM服务器中简单的实现反作弊

YuIo_PQ

【Lv:5】

注册
2018/03/17
消息
592
金粒
352,970金粒
首先,我们需要很正常的use以下内容:
PHP:
use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\event\player\PlayerToggleFlightEvent;
use pocketmine\event\player\PlayerGameModeChangeEvent;
use pocketmine\event\server\DataPacketReceiveEvent;
use pocketmine\Server;use pocketmine\Player;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\utils\Config;
use pocketmine\utils\TextFormat as Color;
开始正篇!首先,一个服务器得有简单的反飞行!
PHP:
public function onFlying(PlayerToggleFlightEvent $event) {
   
  //检测玩家飞行这个动作
      $player = $event->getPlayer();
  
     if ($event->isFlying()) {
        
         if ($player->hasPermission("xx权限")) {
           
  //如果有飞行这个动作,则判断玩家有没有飞行的权限
           
         } else {
   
  //如果没有,就踢出服务器        
           $player->kick(Color::RED . "这里写留给作弊玩家的话hh", false);
          
          
        
         }
     }
   }
检测权限的地方,我们可以用isOP来代替,因为中国大多数服务器是没有权限组这个插件的。
接下来,玩家可不能随意的切换模式!
PHP:
public function onGameModeChange(PlayerGameModeChangeEvent $event) {
       
   //检测玩家是否有更改游戏模式动作,是的话,检测玩家有没有对应权限
        $player = $event->getPlayer();
        $gamemode = $event->getNewGameMode();
        if ($player->hasPermission("xx权限")) {
           
        } else {
            //如果没有权限且玩家的游戏模式为1(创造模式)
            if ($gamemode === 1) {
           
                $player->kick("给作弊玩家写点什么hh", false);
               
            }
           
        }
       
    }
 

在线会员

  • fect
  • 古怪ilil
  • bluezjx
  • 花溅泪
  • ymr100122
  • B1ack
  • 落雨前夕
  • 离川
  • xinghe0635
  • Apostles
  • 水云月
  • 皮金庆
  • 失落之城ZHMC
  • 2409460473
  • hhgihhg
  • aisibi
  • 648645654465456
  • sssjiu
  • TheMagic_Star
  • zw35426
  • PuddingKC
...和 79 更多。
后退
顶部 底部